Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
10 / 10 / 4
Регистрация: 14.01.2010
Сообщений: 80

Как обработать событие динамически созданного компонента в потоке?

24.04.2012, 21:49. Показов 3458. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Довольно давно мучает этот вопрос, много гуглил, но в основном инфа либо по потокам либо по обработке динамических событий.

Пару раз вставала такая задача, но, после очередных неудачных попыток, как-то обходился либо без потоков либо без динамических компонентов)

В общем задача такая: в потоке создать компонент и обработать его событие.

Помню пробовал не раз много различных вариантов.
Щас на вскидку накидал такой код:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DdeMan;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    DdeClientConv1: TDdeClientConv;
    DdeClientItem1: TDdeClientItem;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
  // Объявляю поток, куда и как тут записать процедуру для события? 
TNewThread = class(TThread)
    DdeClientConv1: TDdeClientConv;
    DdeClientItem1: TDdeClientItem;
   // procedure DDE1(Sender: TObject);
private
 // procedure DDE1;
{ Private declarations }
protected
   procedure DDE1;
  procedure Execute; override;
end;
 
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
{ TNewThread }
procedure TNewThread.DDE1;
begin
  //обработка события 
end;
 
// соответственно сам поток и создание компонента
procedure TNewThread.Execute;
begin
  DdeClientConv1:= TDdeClientConv.Create(nil);
  DdeClientItem1:= TDdeClientItem.Create(nil);
 
  DdeClientItem1.OnChange :=DDE1;
 // DdeClientItem1.OnChange :=TNewThread. // не видит процедуру DDE1
end;
 
// создается поток
procedure TForm1.Button1Click(Sender: TObject);
var
  NewThread: TNewThread;
begin
  NewThread:=TNewThread.Create(true);
  NewThread.FreeOnTerminate:=true;
  NewThread.Priority:=tpLower;
  NewThread.Resume;
end;
 
end.

В общем, пните в нужную сторону.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.04.2012, 21:49
Ответы с готовыми решениями:

Как обратиться к функции динамически созданного компонента?
Динамически создаю кнопку: TButton *button = new TButton(this); button->Parent = this; button->Name =...

Как узнать Left и Top динамически созданного компонента?
Привет всем. Вопрос как узнать Left и Top динамического компонента. Пробовал так, ShowMessage(IntToStr(TControl(Sender).Top)); ...

Как узнать caption динамически созданного компонента (панели)
// Создаем панель FormsList.Panel := TPanel.Create(pWindows); FormsList.Panel.Parent := pWindows; FormsList.Panel.Caption...

2
 Аватар для Alex_pac
1302 / 708 / 107
Регистрация: 25.05.2011
Сообщений: 2,158
Записей в блоге: 51
24.04.2012, 23:11
процедура DDE1 должна иметь тип

procedure (Sender:TObject) of Object
или TNotifyEvent

поэтому создай процедуру внутри класса формы либо потока. и у нее должен быть параметр Sender:TObject обязательно
1
10 / 10 / 4
Регистрация: 14.01.2010
Сообщений: 80
25.04.2012, 21:09  [ТС]
Спасибо
добавил сендера сработало.
Delphi
1
2
3
4
TNewThread = class(TThread)
    DdeClientConv1: TDdeClientConv;
    DdeClientItem1: TDdeClientItem;
    procedure DDE1 (Sender:TObject);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.04.2012, 21:09
Помогаю со студенческими работами здесь

Как вытянуть значение свойства динамически созданного компонента при клике на нем?
Здравствуйте, товарищи программисты! Возникла проблема, которую никак не могу разрешить сам, помогите, пожалуйста. Есть форма, на...

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

Как обработать событие динамически созданной кнопки (по нажатию на неё)?
Есть class House и class Room. В классе House, в поле Rooms хранится массив class Room. Эти кнопки отображают свободен/занят ли...

Изменение свойств динамически созданного компонента
Здравствуйте! Из подключенного DLL файла динамически создаю форму, также динамически размещаю на ней компоненты. Хочется узнать, как к...

Получить заголовок дочернего динамически созданного компонента
Доброго времени суток! Подскажите пожалуйста, каким образом можно обратиться к свойствам дочернего, динамически созданного компонента? ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru