On Tue, 30 Apr 2013, shoKwave wrote:

Am 30.04.2013 07:25, schrieb Jürgen Hestermann:
Maybe someone can just try my example program.
OK, now I've tested a bit and BeginUpdate/EndUpdate works for me (Win7 x64, FPC and Laz Trunk):

procedure TForm1.Button1Click(Sender: TObject);
var i:Integer;
begin
 Memo1.Clear;
 for i := 1 to 40 do
 begin
   if odd(i) then
Memo1.Append('\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
   else
Memo1.Append('+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++');
 end;

 for i := 1 to 1000 do
 begin
   memo1.Lines.BeginUpdate;
Memo1.Lines[Memo1.Lines.Count-1] := '#### LAST LINE ---'+IntToStr(i)+'-----------------------------------------------------------';
   memo1.Lines.EndUpdate;
   Application.Processmessages;
 end;
 Memo1.Lines[memo1.Lines.Count-1] := '#### READY #### ';
end;


It should be
  memo1.Lines.BeginUpdate;
  for i := 1 to 1000 do
    Memo1.Lines.Add('#### LAST LINE  
---'+IntToStr(i)+'-----------------------------------------------------------');
  memo1.Lines.EndUpdate;
  Application.Processmessages;

What you did makes no sense whatsoever. The whole point of beginupdate/endupdate is to mark a list of changes, and to prevent the UI from updating while you do the changes.

The use of Add() is easier to understand.

Michael.
--
_______________________________________________
Lazarus mailing list
Lazarus@lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to