Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как методу класса присвоить процедуру?


Страницы:   1 2

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]

Класс написать ничего не мешает, вопрос был как раз в том, что можно ли это сделать БЕЗ написания класса.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо