Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Очистка Мемо в теле цикла

84K
24 октября 2012 года
Васягриша
5 / / 24.10.2012
Не получается очистить поле Memo в теле цикла:


 
Код:
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;
понять бы хотя бы, почему не работает, тупо подписывает строки одну за другой

пробовал цикл:
Lab:
...
Goto Lab;
цикл работает, но ничего не очищается
8
25 октября 2012 года
mfender
3.5K / / 15.06.2005
Пока цикл не окончен, Canvas не перерисовывается. На самом деле Memo уже очищен от текста. Поставь в цикле Memo1.Refresh, чтобы увидеть.

Для интересу запряги этот цикл в отдельный поток, чтобы 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;
84K
25 октября 2012 года
Васягриша
5 / / 24.10.2012
фантастиш, спасибо

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог