![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как методу класса присвоить процедуру?
Ega23 © (2004-08-30 09:36:00)Есть следующий код:
unit AAAA
interface
uses ....
procedure A();
implementation
procedure A();
....
end;
Как мне процедуру A присвоить, например, для Btn.OnClick?
GuAV (2004-08-30 16:38:00) [1]
> что не все чисто там было ;)
Всё чисто. Если нет DFM, форма всё равно будет создана даже Create.
Ega23 (2004-08-30 15:18:00) [2]Однако промежуточными - вполне могут быть и просто классы, без "визуальной" части, но тот класс, экземпляр которого создается, должен быть "визульным" (в exe должен быть соотв. ресурс)
См. [5] - всё отлично создаётся. Собственно, сабж из-за этого и затевался. :о)
Ega23 (2004-08-30 15:18:00) [3]Однако промежуточными - вполне могут быть и просто классы, без "визуальной" части, но тот класс, экземпляр которого создается, должен быть "визульным" (в exe должен быть соотв. ресурс)
См. [5] - всё отлично создаётся. Собственно, сабж из-за этого и затевался. :о)
KSergey (2004-08-30 15:12:00) [4]> [26] GuAV © (30.08.04 15:10)
Да, точно. Спасибо.
Ну я же помню, что не все чисто там было ;)
GuAV (2004-08-30 15:10:00) [5]
> Немного подумав понял, что так не выйдет. Нельзя создать
> экземпляр формы, для котрой нет соотв. данных в ресурсах
> (из DFM)
LOL. А я не думал а делал. Делается.
Более того нормальную форму с dfm создай createnew а не create, дык он её dfm не прочитает из ресурса.
KSergey (2004-08-30 14:52:00) [6]> [24] Ega23 © (30.08.04 13:44)
Так VCL устроена.
При создании формы она ищет соотв ресурс и из него загружает (создает) дочерние объекты.
Однако промежуточными - вполне могут быть и просто классы, без "визуальной" части, но тот класс, экземпляр которого создается, должен быть "визульным" (в exe должен быть соотв. ресурс)
PS
Надеюсь, я никого не обманываю, проверять лень, но что-то такое на памяти осталось.
Ega23 (2004-08-30 13:44:00) [7]Нельзя создать экземпляр формы, для котрой нет соотв. данных в ресурсах (из DFM).
А это почему????
Ega23 (2004-08-30 13:42:00) [8]Блин, а я на [3] даже как-то внимания не обратил ....
Skyle (2004-08-30 13:04:00) [9]
> [20] pasha_golub © (30.08.04 12:34)
А чё, прикольно наверное отвечать самому себе на форуме..;-)
Просто я к тому, что если бы видел, то не писал бы и справедливого возмущения бы не было...
В любом случае, это развлечение чисто из любви к искусству. Нигде не использовал бы это всерьёз. По идеологическим соображениям ;-)
KSergey (2004-08-30 12:57:00) [10]> [18] KSergey © (30.08.04 12:14)
> Написать потомка TForm (не вызуального! просто класс определить!)
> Ну и создавать уже экземпляр этого класса.
Немного подумав понял, что так не выйдет. Нельзя создать экземпляр формы, для котрой нет соотв. данных в ресурсах (из DFM). Ну тогда просто пустую форму создать, никому не мешает.
Ну либо переопределить метод загрузки содержимого формы при создании и грузить ее из БД - тоже вариант, к стати ;) (если это возможно; я не знаю где)
pasha_golub (2004-08-30 12:34:00) [11]Skyle © (30.08.04 12:21) [19]
Так, ты это, двуликий шо-ли? ;0)
Skyle (2004-08-30 12:21:00) [12]
> [17] pasha_golub © (30.08.04 11:41)
> [18] KSergey © (30.08.04 12:14)
Блин... Сорри. Как-то пропустил...
Возможно не привык ещё к новой версии клиента.
В общем, я не специально... :-)
KSergey (2004-08-30 12:14:00) [13]> [16] Ega23 © (30.08.04 11:15)
> О! То что надо!
Не удержусь и тоже скажу
Это издевательство?? В свете jack128 © (30.08.04 09:54) [3]
А вообще я бы сделал вот как
Написать потомка TForm (не вызуального! просто класс определить!) В него и собрать все потенциально необходимые обработчики, может проверки там какие добавить, методы загрузки контролов из БД и т.п.
Ну и создавать уже экземпляр этого класса.
По-моему, это красивше, чем все эти махинации, и даже чем суррогат [10] jack128
pasha_golub (2004-08-30 11:41:00) [14]Ega23 © (30.08.04 11:15) [16]
Тебе тоже самое давным-давно сказали. ;0)
см. jack128 © (30.08.04 09:54) [3]
Ega23 (2004-08-30 11:15:00) [15]О! То что надо!
Skyle (2004-08-30 11:14:00) [16]
> [13] Ega23 © (30.08.04 11:09)
Эх, извращенцы мы все в душе...
procedure DoClick;
begin
ShowMessage('Test');
end;
procedure TForm1.FormCreate(Sender: TObject);
var M : TMethod;
begin
M.Code := @DoClick;
Button1.OnClick := TNotifyEvent(M);
end;
GuAV (2004-08-30 11:11:00) [17]jack128 © (30.08.04 10:16) [10]
+
а ещё можно не создавая экземпляр класса
class procedure Proc1;
да в прочем и так создавать его не обязательно, self то всё равно не нужен :)
Ega23 (2004-08-30 11:09:00) [18]То, что он оптимальный, я догадываюсь. Тут уже дело на принцип пошло.
pasha_golub (2004-08-30 11:03:00) [19]Ega23 © (30.08.04 10:22) [11]
Дык, а зачем? Сделать-то всегда можно, но, ИМХО, вариант jack128 © [10] самый оптимальный.
Ega23 (2004-08-30 10:22:00) [20]Класс написать ничего не мешает, вопрос был как раз в том, что можно ли это сделать БЕЗ написания класса.