TAdoQuery

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Аватара пользователя
LAngel
Сообщения: 277
Зарегистрирован: 30 мар 2005, 08:19
Откуда: Ульяновск
Контактная информация:

Да, забыл... MyT нужно объявить где-нить...

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

  TForm1 = class(TForm)
    ...
  private
    { Private declarations }
    MyT: TMyThread;
  end;
С уважением, Lost Angel...
ChPuK
Сообщения: 28
Зарегистрирован: 25 фев 2005, 08:40
Откуда: Tashkent
Контактная информация:

я так и понял :)
ChPuK
Сообщения: 28
Зарегистрирован: 25 фев 2005, 08:40
Откуда: Tashkent
Контактная информация:

все классно работает...
НО
странная вещь

у меня идел логирование в обычном TListBox и в зависимости от значений второго списка ячейки 1 списка окрашиваються 2 цветами - ошибки и просто логи
ну так вот, после того как я применил TThread у меня прорисовка списков погнала...

почему это может быть?
Аватара пользователя
LAngel
Сообщения: 277
Зарегистрирован: 30 мар 2005, 08:19
Откуда: Ульяновск
Контактная информация:

Добавление в список идет из потока?
Может быть вызывать перерисовку вручную...
С уважением, Lost Angel...
ChPuK
Сообщения: 28
Зарегистрирован: 25 фев 2005, 08:40
Откуда: Tashkent
Контактная информация:

добавление в список идет из запускаемой процедуры :(

перерисовка идет при обычном событии onDrawItem

что делать...
цвета обязательны :(

и перерисовку тогда тоже в процедуру вносить?
как же нехотелось этим грузить....
Аватара пользователя
LAngel
Сообщения: 277
Зарегистрирован: 30 мар 2005, 08:19
Откуда: Ульяновск
Контактная информация:

попробуй заключить добавление в "скобки" update

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

   ListBox1.Items.BeginUpdate;
   ListBox1.Items.Add('');
   ListBox1.Items.EndUpdate;
Если не получится, то все-таки, после добаления нужно будет делать ListBox1.Refresh
С уважением, Lost Angel...
ChPuK
Сообщения: 28
Зарегистрирован: 25 фев 2005, 08:40
Откуда: Tashkent
Контактная информация:

попробовал сделать с Update
тоже самое....

рефрешь... вот думаю....

вставлять рейшерь после вставки строки?
Eugie
Сообщения: 708
Зарегистрирован: 17 фев 2004, 23:59
Откуда: SPb

ну так вот, после того как я применил TThread у меня прорисовка списков погнала...
почему это может быть?
Когда работаешь с формой из вторичного потока, нужно применять синхронизацию. Например:

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

procedure TMyThread.Execute;
begin
  ...
  Synchronize(ListBox1.Items.Add(str));
  ...
end;
Почитай также топик Using the main VCL/CLX thread в Delphi Help.
ChPuK
Сообщения: 28
Зарегистрирован: 25 фев 2005, 08:40
Откуда: Tashkent
Контактная информация:

да, но если это добавление идет в потоке кнутри исполняемой процедуры, которую уже использует Thread
тогда что делать
Аватара пользователя
LAngel
Сообщения: 277
Зарегистрирован: 30 мар 2005, 08:19
Откуда: Ульяновск
Контактная информация:

почти тоже самое :) забыл я про неё совсем
MyT.Synchronize();
С уважением, Lost Angel...
Ответить