![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Потоки [D6, XP]
image © (2007-01-31 10:10:00)Подскажите пожалуйста как правильно переопределить процедуры Execute и Synchronize для потока создаваемого в runtime. Имеется компонент на основе TImage двумя TLabel созданный во время работы приложения и необходимо добавить туда TThread для пинга устройств. TThread добавил без проблем, а вот как объявить вышеуказанные процедуры - не знаю.
Германн (2007-01-31 15:52:00) [1]
> Но уж больно неочевидное решение выбрано было автором, плюс
> еще этот TImage...
Дык что тут странного? Он же его "колбасил" :)
Джо (2007-01-31 15:32:00) [2]> [40] Сергей М. © (31.01.07 15:27)
> Дык я ему про Keepalive с самого начала долдоню !
Ну, это... «Не осилил», как говорится, всю ветку, сорри :)
Хотя тут уже, по-моему, ветка давно вышла за изначальную тему об азах использования TThread. Но уж больно неочевидное решение выбрано было автором, плюс еще этот TImage...
Сергей М. (2007-01-31 15:27:00) [3]
> Джо © (31.01.07 15:14) [39]
Дык я ему про Keepalive с самого начала долдоню !
Не внемлет ведь) ... Как о стенку горох) ... Хочу, мол, пинг - и все тут))
Джо (2007-01-31 15:14:00) [4]Какое-то странное решение, ИМХО, с этими пингами.
Почему бы не сделать так — на каждую машину установить клиента, который, через заданные промежутки времени шлет на «сервер» условленную комманду «я живой». Сервер же периодически смотрит на свои списки и отмечает в них те машины, которые долгое время не отвечали. Впрочем, тут надо бы еще обдумать :)
Сергей М. (2007-01-31 14:05:00) [5]
> image (31.01.07 13:35) [37]
Зато больше при смене текста лейбла)
Что совой о пень, что пнем о сову))
А насчет TThread - если ты столь озабочен проблемой "больше кода, меньше кода", то на сей случай и есть TIdICMP.. Для батонокидателей - самое то)
image (2007-01-31 13:35:00) [6]Ну в принципе если подумать, то да, но при смене картинки меньше кода.
MyImage.LoadFromFile('FileName');
или
MyLabel.MyImage.LoadFromFile('FileName');
Картинка меняется вручную или при смене состояния хоста(доступен-недоступен).
Сергей М. (2007-01-31 13:23:00) [7]
> Автономность. Все в одном
Почему не в TMyLabel ? Та же пресловутая "автономность")
image (2007-01-31 13:21:00) [8]
> Св-во Transparent есть и у TImage и у TGraphic - этого вполне
> достаточно.
> Все это расчудесно, но для чего нужно было лепить своего
> TImage-наследника ?
> Все что ты написал не есть сколь-либо серьезный аргумент
> в пользу такого решения.
Автономность. Все в одном.
> Св-во Transparent есть и у TImage и у TGraphic - этого вполне
> достаточно.
Не помню почему, но что-то у меня там с ним были какие-то проблемы(или у него со мной) :).
Сергей М. (2007-01-31 13:13:00) [9]
> image (31.01.07 13:06) [32]
Все это расчудесно, но для чего нужно было лепить своего TImage-наследника ?
Все что ты написал не есть сколь-либо серьезный аргумент в пользу такого решения.
> При плотном расположении элементов на форме перекрывает
> соседние элементы
Св-во Transparent есть и у TImage и у TGraphic - этого вполне достаточно.
image (2007-01-31 13:08:00) [10]При плотном расположении элементов на форме перекрывает соседние элементы
image (2007-01-31 13:06:00) [11]Удобней таскать мышкой по форме(типа рисовать схему сетки). А насчет свойств сейчас попробую объяснить. Имеется TImage и два TLabel при нем.
Один TLabel для айпи, а второй для имени. Один TLabel сверху, а другой снизу от TImage. Двигаются они вместе с TImage и выравниваются относительно его. Каждый TImage имеет еще TTimer и я надеюсь теперь будут иметь TThread при помощи которых будет осуществляться пинг сетки через определенное пользователем время. Имеется кнопочка для создания этих TImage-й. Есть еще компонента-линия при помощи которой все это дело соединяется(рисуется сеть). Готовая схема сохраняется в ini.
Сергей М. (2007-01-31 12:53:00) [12]
> использовать TObject, но у меня не получилос с его прозрачностью.
Эт какая такая "прозрачность" у TObject ?
Сергей М. (2007-01-31 12:52:00) [13]
> я уже наколбасил 26 килобайт кода ..переписывать все неохота
Сначала делаем, потом думаем)
И все же нафиг было наследоваться именно от TImage (почему, к примеру, не от того же TLabel, упомянутого тобой ?) - ну никак я в толк не возьму. Какие такие новые замечательные св-ва приобрел твой наследник по отношению к своему предку ?
image (2007-01-31 12:48:00) [14]Правда была попытка в самом начале использовать TObject, но у меня не получилос с его прозрачностью.
image (2007-01-31 12:45:00) [15]
> Сергей М. © (31.01.07 12:41) [27]
Может быть и проще если писать с самого начала, но я уже наколбасил 26 килобайт кода, так что переписывать все неохота.
Сергей М. (2007-01-31 12:41:00) [16]А, собственно, зачем ты сотворяешь наследника TImage ? Каковы аргументы в пользу именно такого программного решения ?
К примеру, я утверждаю, что логичней и проще в твоем случае будет поступить так:
type
TStation = class(TObject)
..
FImage: TImage;
FLabel: TLabel;
FPinger: TSomePinger;
..
end;
?
image (2007-01-31 12:38:00) [17]А, понял. Большое пасибо за ответ.
Сергей М. (2007-01-31 12:33:00) [18]type
T MyThread=Class(TThread)
... см. [13]
end;
TMyImage=Class(TImage)
private
FThread : TThread;
..
end;
..
FThread := T MyThread.Create(..);
image (2007-01-31 12:28:00) [19]Ни чего не получается. А пример можно?
Сергей М. (2007-01-31 12:21:00) [20]
> в каком месте программы?
Как это где ? В декларации твоего класса TMyImage, разумеется...