Очистка Мемо в теле цикла
Код:
for i := 1 to 2147483647 do
begin
Memo1.SelText := '12345'; //-это срабатывает, а дальше не работает ничего (очистка)
Sleep(1000);
Memo1.Lines.Clear;
Memo1.Text := '';
for i2:=0 to 335 do Memo1.Lines.Delete(i2);
end;
begin
Memo1.SelText := '12345'; //-это срабатывает, а дальше не работает ничего (очистка)
Sleep(1000);
Memo1.Lines.Clear;
Memo1.Text := '';
for i2:=0 to 335 do Memo1.Lines.Delete(i2);
end;
пробовал цикл:
Lab:
...
Goto Lab;
цикл работает, но ничего не очищается
Для интересу запряги этот цикл в отдельный поток, чтобы Memo1 освободить, и посмотри что получится:
Код:
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TMemoThread = class(TThread)
private
FI2: Integer;
procedure UpdateMemoText;
procedure UpdateMemoClear;
procedure UpdateMemoDelete;
protected
procedure Execute; override;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
MT: TMemoThread;
begin
MT := TMemoThread.Create(True);
MT.FreeOnTerminate := True;
MT.Resume;
end;
{ TMemoThread }
procedure TMemoThread.Execute;
var
i, i2: Integer;
begin
for i := 1 to 2147483647 do
begin
Synchronize(UpdateMemoText);
Sleep(1000);
Synchronize(UpdateMemoClear);
for i2 := 0 to 335 do
begin
FI2 := i2;
Synchronize(UpdateMemoDelete);
end;
end;
end;
procedure TMemoThread.UpdateMemoClear;
begin
Form1.Memo1.Lines.Clear;
end;
procedure TMemoThread.UpdateMemoDelete;
begin
Form1.Memo1.Lines.Delete(FI2);
end;
procedure TMemoThread.UpdateMemoText;
begin
Form1.Memo1.SelText := '12345';
end;
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TMemoThread = class(TThread)
private
FI2: Integer;
procedure UpdateMemoText;
procedure UpdateMemoClear;
procedure UpdateMemoDelete;
protected
procedure Execute; override;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
MT: TMemoThread;
begin
MT := TMemoThread.Create(True);
MT.FreeOnTerminate := True;
MT.Resume;
end;
{ TMemoThread }
procedure TMemoThread.Execute;
var
i, i2: Integer;
begin
for i := 1 to 2147483647 do
begin
Synchronize(UpdateMemoText);
Sleep(1000);
Synchronize(UpdateMemoClear);
for i2 := 0 to 335 do
begin
FI2 := i2;
Synchronize(UpdateMemoDelete);
end;
end;
end;
procedure TMemoThread.UpdateMemoClear;
begin
Form1.Memo1.Lines.Clear;
end;
procedure TMemoThread.UpdateMemoDelete;
begin
Form1.Memo1.Lines.Delete(FI2);
end;
procedure TMemoThread.UpdateMemoText;
begin
Form1.Memo1.SelText := '12345';
end;
фантастиш, спасибо