Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
Vladiator
1571 / 642 / 79
Регистрация: 24.02.2009
Сообщений: 9,269
1

События у созданных компонентов из кода

10.11.2009, 16:45. Просмотров 1757. Ответов 11
Метки нет (Все метки)

Создал компонент, не добавляя на форму (в коде, вроде называется "динамическое создание компонентов"). Показывается, с этим нормально. Но я не могу создать события. Точнее, они у меня созданы, но не могу их присвоить. Как это сделать? На это:
Delphi
1
2
3
 Image1.OnMouseDown:=Image1MouseDown;
 Image1.OnMouseMove:=Image1MouseMove;
 Image1.OnMouseUp:=Image1MouseUp;
ругается, тчо недостаточно параметров. Как присвоить процедуры в данном случае? TMouseEvent.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.11.2009, 16:45
Ответы с готовыми решениями:

Удаление динамически созданных компонентов
... var Edt: array of TEdit; ... for I := 1 to 6 do case i of 1: begin...

Генератор кода компонентов
Какие есть посторонние проги для оптимизации написания компонентов? Помню, у меня когда-то был диск...

Проектирование форм и создание обработчика события для компонентов TEdit, TButton, TBitBtn. Компоненты TLabel, TMemo
Всем привет! Помогите написать код для приложения. Как правило, использование семейного бюджета...

События для динамически созданных компонентов
Создайте приложение с кнопкой Пуск, при нажатии на которую форма заполняется пятью компонентами...

Чтение из днамически созданных компонентов
Здравствуйте! Не могу сообразить как читать из динамически созданных компонентов , в частности...

11
burn-kr
2 / 2 / 0
Регистрация: 12.11.2009
Сообщений: 17
16.11.2009, 22:24 2
Когда-то тож писал че-то такое (с динамически создаваемыми компонентами).
Так на вскидку могу посоветовать добавить параметр TObject к твоим событиям, ведь они вызываются компонентом.
Delphi
1
Image1.OnMouseDown:=Image1MouseDown(myObject: TObject);
и его потом уже будешь вертеть типа так:
Delphi
1
2
3
4
5
6
procedure Image1MouseDown(myObject: TObject);
begin
   ...
   (myObject as TButton).Caption := 'MyButton'; //например кнопка
   ...
end; {Image1MouseDown}
1
Vladiator
1571 / 642 / 79
Регистрация: 24.02.2009
Сообщений: 9,269
17.11.2009, 11:04  [ТС] 3
Цитата Сообщение от burn-kr Посмотреть сообщение
Когда-то тож писал че-то такое (с динамически создаваемыми компонентами).
Так на вскидку могу посоветовать добавить параметр TObject к твоим событиям, ведь они вызываются компонентом.
Delphi
1
Image1.OnMouseDown:=Image1MouseDown(myObject: TObject);
и его потом уже будешь вертеть типа так:
Delphi
1
2
3
4
5
6
procedure Image1MouseDown(myObject: TObject);
begin
   ...
   (myObject as TButton).Caption := 'MyButton'; //например кнопка
   ...
end; {Image1MouseDown}
А если у меня картинка, где параметров больше в этом событии?
Delphi
1
procedure TForm1.Image1MouseDown(Sender: TObject; Buttun: TMouseButton; Shift: TShiftState; X,Y: integer);
0
Lord_Voodoo
Супер-модератор
8628 / 2286 / 134
Регистрация: 07.03.2007
Сообщений: 10,985
Завершенные тесты: 1
17.11.2009, 11:05 4
Kidalvь, вообще желательно, чтобы ваши методы всецело совпадали по параметрам и прочим атрибутам с обработчиками событий, которые вы хотите определить налету...
0
17.11.2009, 11:05
Vladiator
1571 / 642 / 79
Регистрация: 24.02.2009
Сообщений: 9,269
17.11.2009, 11:13  [ТС] 5
Цитата Сообщение от Lord_Voodoo Посмотреть сообщение
Kidalvь, вообще желательно, чтобы ваши методы всецело совпадали по параметрам и прочим атрибутам с обработчиками событий, которые вы хотите определить налету...
а как это сделать?
0
Lord_Voodoo
Супер-модератор
8628 / 2286 / 134
Регистрация: 07.03.2007
Сообщений: 10,985
Завершенные тесты: 1
17.11.2009, 11:21 6
Kidalvь, элементарно Ватсон, поместить нужный компонент на форму и создать обработчики, их скопировать, чтобы дельфи их не удалил, как пустые - вот и все, у тебя есть точные копии нужных обработчиков, по крайней мере я так часто делаю, достаточно удобно...
0
Vladiator
1571 / 642 / 79
Регистрация: 24.02.2009
Сообщений: 9,269
17.11.2009, 11:25  [ТС] 7
Цитата Сообщение от Lord_Voodoo Посмотреть сообщение
Kidalvь, элементарно Ватсон, поместить нужный компонент на форму и создать обработчики, их скопировать, чтобы дельфи их не удалил, как пустые - вот и все, у тебя есть точные копии нужных обработчиков, по крайней мере я так часто делаю, достаточно удобно...
У меня остались старые обработчики удалённой с формы картинки, именно они мне и нужны. Но надо как-то присвоить их к динамическому компоненту.
0
Lord_Voodoo
Супер-модератор
8628 / 2286 / 134
Регистрация: 07.03.2007
Сообщений: 10,985
Завершенные тесты: 1
17.11.2009, 11:53 8
Kidalvь, по идее, если брать за основу стандартные обработчики, проблем не будет, по крайней мере в билдере все катит нормально..
0
Vladiator
1571 / 642 / 79
Регистрация: 24.02.2009
Сообщений: 9,269
17.11.2009, 12:00  [ТС] 9
Цитата Сообщение от Lord_Voodoo Посмотреть сообщение
стандартные обработчики
какие "стандартные"?
0
Lord_Voodoo
Супер-модератор
8628 / 2286 / 134
Регистрация: 07.03.2007
Сообщений: 10,985
Завершенные тесты: 1
17.11.2009, 12:04 10
Kidalvь, я выше уже писал, как я их получаю
0
Vladiator
1571 / 642 / 79
Регистрация: 24.02.2009
Сообщений: 9,269
17.11.2009, 12:06  [ТС] 11
Т. е., так:
Delphi
1
Image1.OnMouseDown:=Image2.OnMouseDown;
?
0
Lord_Voodoo
Супер-модератор
8628 / 2286 / 134
Регистрация: 07.03.2007
Сообщений: 10,985
Завершенные тесты: 1
17.11.2009, 12:08 12
нет, я не оставляю компонента, только нужные мне обработчики событий
0
17.11.2009, 12:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.11.2009, 12:08

Сохранение созданных компонентов динамически
Подскажите пожалуйста как при закрытии программы сохрянить созданые динамически компоненты. Создаю...

Пересечение динамически созданных компонентов
Смоделировал ситуацию на обычно созданных компонентах, на картинке шейпы и мне нужно определять...

Удаление динамически созданных компонентов
if not globrazr then Trichedit(PopupMenuforrichedit.PopupComponent).Free else...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru