![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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 := твоя_процедура