Page 1 of 1

text on the background

Posted: Fri Oct 11, 2019 9:12 pm
by adamrich
Hello,

I'm trying to add few lines messages (text) on the RichViewEdit1 background instead of image, but when user start typing the background text need to be gone, just like some user forums uses CSS :)

I need that only on the new document (not already saved document)

Thank you

Re: text on the background

Posted: Sat Oct 12, 2019 1:53 pm
by Sergey Tkachenko
Do you want to display some text when the editor is empty?

Re: text on the background

Posted: Sat Oct 12, 2019 6:16 pm
by adamrich
Yes please, only when empty

Thank you so much

Re: text on the background

Posted: Sun Oct 13, 2019 6:45 am
by Sergey Tkachenko
There is no built-in property for this feature. But you can use OnPaint event:

Code: Select all

procedure TForm3.RichViewEdit1Paint(Sender: TCustomRichView; ACanvas: TCanvas;
  Prepaint: Boolean);
var
  X, Y: Integer;
begin
  if not PrePaint and (Sender.ItemCount = 1) and (Sender.GetItemStyle(0) >= 0) and
    (Sender.GetItemText(0) = '') then
  begin
    Sender.GetItemClientCoords(0, X, Y);
    ACanvas.Font.Name := 'Tahoma';
    ACanvas.Font.Charset := DEFAULT_CHARSET;
    ACanvas.Font.Color := clGrayText;
    ACanvas.Font.Style := [];
    ACanvas.Font.Size := Sender.Style.TextStyles[Sender.GetItemStyle(0)].Size;
    ACanvas.Brush.Style := bsClear;
    SetTextAlign(ACanvas.Handle, TA_LEFT or TA_TOP);
    ACanvas.TextOut(X, Y, 'Please write something...');
  end;
end;

Re: text on the background

Posted: Sun Oct 13, 2019 12:38 pm
by adamrich
Thank you, you are awesome man!
As always I appreciate your superb support, you never let your user down, best support ever.

Thanks again