|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
19.11.2008, 21:20 | #1 |
Пользователь
Регистрация: 12.11.2008
Сообщений: 10
|
Динамическое создание обработчика события
Создаю динамически форму, на ней кнопки...
Проблема, не могу создать для кнопок события.... Код:
|
19.11.2008, 23:20 | #2 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
у TButton OnClick имеет тип (вроде ) TNotifyEvent у него приписка of object ну написано же of object, процедура (Sender: TObject) принадлежащяя объекту... так что.. вам нужен класс где будет описан обработчик procedure OnClick(Sender: TObject); и только потом вы его указываите этой кнопке...
p.s. подобные вещи так писать не рекоммендуется... вы уж определитесь то ли пишите юзая ООП или пишите без ООП |
20.11.2008, 02:09 | #3 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Я уже рассказывал простейший способ, как это решить.
1. Бросаете на форму кнопку. 2. Делаете по ней даблклик - открывается пустая процедура обработки клика. 3. Пишете код в этом обработчике. 4. Там, где вы напузырили 40 штук вопросительных знаков - прописываете ссылку на этот обработчик. 5. Убираете с формы теперь уже ненужную кнопку. Все. |
24.11.2008, 00:39 | #4 |
Пользователь
Регистрация: 12.11.2008
Сообщений: 10
|
А если формы нет совсем?
|
24.11.2008, 03:11 | #5 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
|
28.12.2008, 13:21 | #6 |
Новичок
Джуниор
Регистрация: 28.12.2008
Сообщений: 1
|
Есть форма,
Есть процедура procedure TForm1.onClick(Sender: TObject); begin showmessage('www'); end; Есть кнопка на форме Button1 по клику делается: procedure TForm1.Button1Click(Sender: TObject); var t:tbutton; begin t:=tbutton.Create(self); t.Width:=50; t.Height:=50; t.Left:=100; t.Top:=150; t.Parent:=form1; t.Caption:='222'; t.OnClick:=form1.onClick(sender); ВОТ ТУТ ПО ВАШИМ ЗАПИСЯМ ВСЕ ДОЛЖНО РАБОТАТЬ ! А САМИ ПРОБЫВАЛИ? end; А ВОТ ЭТО ЧИТАЛИ? [Error] Unit1.pas(43): Incompatible types: 'TNotifyEvent' and 'procedure, untyped pointer or untyped parameter' |
28.12.2008, 13:36 | #7 |
Баламучу слегка...
Участник клуба
Регистрация: 01.11.2006
Сообщений: 1,585
|
zekx, пишешь глупости и хочешь нормального результата? А написать так, как полагается не пытался? А именно
t.OnClick:=form1.onClick; Почему делается так, а не иначе объяснять надо или все-таки талмуд почитаешь, прежде чем свое ры людям высказывать? |
19.10.2010, 16:48 | #8 |
Новичок
Джуниор
Регистрация: 23.08.2010
Сообщений: 1
|
вот вы не поверите но оно таки не работает. причем у "родной" кнопки вызов идет а у "наследника" нет...
with TControlClass(Form1.Panel1.Controls[i].ClassType).Create(self) do begin Parent := p; Left := Form1.Panel1.Controls[i].Left; Top := Form1.Panel1.Controls[i].Top; OnClick:=button2.OnClick; end; |
20.10.2010, 10:41 | #9 |
Пользователь
Регистрация: 28.05.2010
Сообщений: 82
|
tramvajman, можно просто объявить класс, создать метод с такими же параметрами, как обработчик события (для OnClick - Sender: TObject), и присвоить этот метод обработчику события
Код:
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
динамическое создание компонентов | DOLBY | Компоненты Delphi | 10 | 17.10.2010 14:03 |
Динамическое создание формы | Rifler | Общие вопросы Delphi | 6 | 11.09.2008 20:50 |
Динамическое создание объекта | ANGa | Помощь студентам | 3 | 10.04.2008 18:14 |
Динамическое создание фрейма | s-force | Общие вопросы Delphi | 9 | 05.09.2007 16:56 |
Динамическое создание WebBrowser | DragonLand | Работа с сетью в Delphi | 2 | 20.08.2007 21:47 |