Прорисовка элементов формы в Лазарус

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Аватара пользователя
khvalera
новенький
Сообщения: 57
Зарегистрирован: 29.06.2010 00:49:43
Контактная информация:

Прорисовка элементов формы в Лазарус

Сообщение khvalera »

Я заметил, что в Лазарус, если в цикле отображать какую то информацию, например делать вывод какого то текста в StatusBar.SimpleText то это происходит как то странно, только через какие то промежутки времени, как с этим бороться?
yurgel
новенький
Сообщения: 37
Зарегистрирован: 29.06.2010 16:06:58

Сообщение yurgel »

добавить в цикл StatusBar.Update;
Аватара пользователя
khvalera
новенький
Сообщения: 57
Зарегистрирован: 29.06.2010 00:49:43
Контактная информация:

Сообщение khvalera »

yurgel писал(а):добавить в цикл StatusBar.Update;

... пробовал не прокатывает!
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

khvalera
Дело в том, что статус бар не получает сообщение о прорисовки.
Данную проблему можно решить 2-мя способами:
1)

Код: Выделить всё

...
  for j:=0 to 999 do
   begin
    StatusBar1.SimpleText:=IntToStr(j);
    Application.ProcessMessages;
   end;
...

т.е. Принудительно запускать обработку событий. В данном случае будут прорисовываться все контролы которым это необходимо и даже тикать таймер :wink:
2)

Код: Выделить всё

...
  for j:=0 to 999 do
   begin
    StatusBar1.SimpleText:=IntToStr(j);
    StatusBar1.Repaint;
   end;
...

а этот код заставит прорисовываться только сам статус бар и ваше приложение не будет отвечать на другие события.
Аватара пользователя
khvalera
новенький
Сообщения: 57
Зарегистрирован: 29.06.2010 00:49:43
Контактная информация:

Сообщение khvalera »

Mr.Smart спасибо за ответ!
Application.ProcessMessages помогло :)
Ответить