![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
совсем немного вроде осталось, и - на тебе... [D6, WinXP]
Граф © (2002-10-21 22:15:00)Thread поместил в отдельном юните (исключительно для наглядности и красоты), но теперь в процедуре вызываемой методом Synchronize отказвыается понимать переменную MainForm, оставшуюся, понятно в другом юните. Если поставить ссылку на юнит с MainForm в uses юнита-потока, то возникает циклическая ссылка (юнит с MainForm ссылается на юнит-поток и правильно делает :) ).
Можно создать еще один юнит, конечно, но это как-то не очень красиво.
По идее задача банальная, должно быть, соответственно, банальное решение. Но его пока нет :).
Smithson (2002-10-22 09:38:00) [1]Иметь перекрестные ссылки ЕСТЬ хорошо, поскольку перекрестными и ссылками они выглядядт только на уровне языка, а после трудов компилятора будет просто общая область видимости (односторонняя).
VaS (2002-10-22 09:11:00) [2]Иметь перекрестные ссылки не есть хорошо. Лучше в модуле с нитью сделать глобальную переменную - указатель на метод (...of object) без параметров, а в модуле с формой в initialization присваивать ей метод формы.
Граф (2002-10-21 22:33:00) [3]вопрос снимется, все работает, позор на мою седую бороду
TTCustomDelphiMaster (2002-10-21 22:27:00) [4]Добавляйте uses в implementation
implementation
uses unit1{MainForm};
Граф (2002-10-21 22:20:00) [5]Да, вот что еще интересно.
Юнит-поток я создавал через New->Thread Object В созданном юните была такая запись
{ Important: Methods and properties of objects in VCL or CLX can only be used
in a method called using Synchronize, for example,
Synchronize(UpdateCaption);
and UpdateCaption could look like,
procedure CopyFile.UpdateCaption;
begin
Form1.Caption := "Updated in a thread";
end; }
То есть, вроде так и должно работать, но у меня вот не хочет. Конечно это я где-то набардачил, но вот где?