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

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

Application.OnActivate [D5, 2000]


Призрак ©   (2006-03-14 21:49:00) 

Хочу сделать, чтобы при активации окна программы вызывалась моя процедура. Написал на Form1.OnActivate, потом понял что оно не вызывается когда я переключаюсь с другого приложения - вызывается Application.OnActivate. А как привесить туда что-то?.. В форме всё просто - задаётся свойство при описании и потом пишется, а объект инспектором так вообще на автомате но как сделать то же самое для приложения?..


Плохиш   (2006-03-15 11:26:00) [1]


> И всё-таки, что будет если не освобождать созданные объекты?

Будут возникать ветки в различных форумах на тему "почему вындовс тормозит?", "куда девается память?", "вындовс - маст дай" и т.д.


Призрак   (2006-03-15 11:06:00) [2]

Ой... я забыл. :) То есть, я просто не совсем понимаю... зачем? Ну, я знаю, что всё созданное надо освобождать, но это... А, дошло. И всё-таки, что будет если не освобождать созданные объекты? Просто загаживание памяти?.. Я никогда не задумывался над этим, просто знаю что НАДО освобождать :)


Anatoly Podgoretsky   (2006-03-14 22:48:00) [3]

Только не забудь в OnDestroy сделать
procedure TForm1.FormDestroy(Sender: TObject);
begin
  Application.OnActivate := nil;
end;


Призрак   (2006-03-14 22:26:00) [4]

эмммммм...

...

а. дошло 8)

спасибо. :)


Anatoly Podgoretsky   (2006-03-14 22:20:00) [5]

Призрак ©   (14.03.06 22:10) [4]
Ее не надо как часть Application, вполне пойдет как часть TForm1


Призрак   (2006-03-14 22:14:00) [6]

Ага, как Рамиль советует - получилось. :) Но всё равно интересно...


Призрак   (2006-03-14 22:10:00) [7]

Ну я так и сделал...

property OnActivate: TNotifyEvent
вот оно.

type TNotifyEvent = procedure (Sender: TObject) of object
вот тип. обычный.

пишу:

unit unit1;

interface

...

procedure sorcery(Sender:TObject);

implementation

procedure TForm1.OnCreate(Sender: TObject);
begin
;
end;

procedure sorcery(Sender: TObject);
begin
// something
end;


...я не понимаю, где надо описать эту процедуру как часть application...
процедура которая часть класса описывается при описании класса, а описания приложения я не видел...
если здесь вместо sorcery везде поставить application.sorcery , то в описании процедура компилер смеётся над точкой => так нельзя :)
а если не ставить - то при Application.OnActivate:=sorceryговорит Incompatible types: method pointer and regular procedure.


Рамиль   (2006-03-14 21:56:00) [8]

Что бы совместить с OnActivate формы, просто

procedure TForm1.FormCreate(Sender: TObject);
begin
 Application.OnActivate := Self.FormActivate;
end;


Anatoly Podgoretsky   (2006-03-14 21:54:00) [9]

Точно также


Desdechado   (2006-03-14 21:54:00) [10]

1. посмотреть тип требуемой процедуры в справке
2. создать свою по образцу
3. Application.OnActivate := твоя_процедура


Наверх

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