Adding lines to a TStrings Type Property

What am I doing wrong? I can insert the date and time to a Label component very easily (see first proc below), but not into a RichEdit component. I get three errors as if Delphi is looking for more. Why? And what is missing?


procedure TForm1.FormCreate(Sender: TObject);
begin
 Label1.Caption := DateTimeToStr(Now);
end;


procedure TForm1.RichEdit1Enter(Sender: TObject);
begin
  RichEdit1.Lines.Add := (DateTimeToStr(Now));
end;

In your code, you listed the following:

procedure TForm1.RichEdit1Enter(Sender: TObject);
begin
  RichEdit1.Lines.Add := (DateTimeToStr(Now));
end;

Here's the problem. Add is a function - or more accurately, a method of TStrings - and the string you want to add must be a parameter of that method. So instead of what you wrote above, do the following:

procedure TForm1.RichEdit1Enter(Sender: TObject);
begin
  RichEdit1.Lines.Add(DateTimeToStr(Now));
end;

Although this is a pretty simple fix, you'd be amazed at how even seasoned veterans fall prey to this problem.

One thing that you should understand is that the Lines property of any object is actually a TStrings descendant. What I've explained above does not only apply to TRichEdit, but to TMemo, TListBox or any other component that has a Lines or Strings property.