最简单的方法是不直接更新备忘录,而是通过另一个对象,如 TStringList:
procedure TForm2.Memo1DblClick(Sender: TObject);
var
i: Integer;
sl: TStrings;
const
Line = '1234567890_1234567890_1234567890_1234567890_1234567890_1234567890';
begin
Memo1.ControlType := TControlType.Platform;
sl:=TStringList.Create;
try
for i := 1 to 1000 do
sl.Add(Line);
..either..
Memo1.Lines.Clear;
Memo1.Lines.AddStrings(sl);
..or..
Memo1.Lines.Text:=s1.Text;
finally
sl.free
end
end;
另一种方法(仅限 WINDOWS)是在添加时禁用屏幕更新:
Uses WinAPI.Windows, WinAPI.Messages, FMX.Platform.Win;
procedure TForm2.Memo1DblClick(Sender: TObject);
var
i: Integer;
const
Line = '1234567890_1234567890_1234567890_1234567890_1234567890_1234567890';
begin
Memo1.Lines.Clear;
Memo1.ControlType := TControlType.Platform;
PostMessage(FmxHandleToHWND(Handle),WM_SETREDRAW,0,0);
try
for i := 1 to 1000 do
Memo1.Lines.Add(Line);
finally
PostMessage(FmxHandleToHWND(Handle),WM_SETREDRAW,1,0);
Memo1.Invalidate // May be unnecessary //
end;
end;
这将在更新时禁用表单的所有屏幕更新。我相信它也会禁用 Memo1 屏幕更新。不幸的是,FMX 对象不是 Windows 对象,因此您不能直接为备忘录本身禁用屏幕更新。
您可以通过包含以下 CLASS HELPER 在 TForm 级别实现 LockDrawing/UnlockDrawing:
{$IFDEF MSWINDOWS }
Uses WinAPI.Windows, WinAPI.Messages, FMX.Platform.Win;
{$ENDIF }
TYPE
TFormHelper = CLASS HELPER FOR TForm
PROCEDURE LockDrawing;
PROCEDURE UnlockDrawing;
END;
{ TFormHelper }
PROCEDURE TFormHelper.LockDrawing;
BEGIN
{$IFDEF MSWINDOWS }
PostMessage(FmxHandleToHWND(Handle),WM_SETREDRAW,0,0);
{$ENDIF }
END;
PROCEDURE TFormHelper.UnlockDrawing;
BEGIN
{$IFDEF MSWINDOWS }
PostMessage(FmxHandleToHWND(Handle),WM_SETREDRAW,1,0);
RedrawWindow(FmxHandleToHWND(Handle),NIL,0,RDW_ERASE OR RDW_FRAME OR RDW_INVALIDATE OR RDW_ALLCHILDREN)
{$ENDIF }
END;
这将使您的事件处理程序看起来像这样:
procedure TForm2.Memo1DblClick(Sender: TObject);
var
i: Integer;
const
Line = '1234567890_1234567890_1234567890_1234567890_1234567890_1234567890';
begin
Memo1.Lines.Clear;
Memo1.ControlType := TControlType.Platform;
LockDrawing;
try
for i := 1 to 1000 do
Memo1.Lines.Add(Line);
finally
UnlockDrawing
end;
end;
Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号
执行时间: 0.031612873077393 seconds