![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
перекрыть метод закрытия формы [D5]
segor © (2004-07-23 11:27:00)пробовал перекрывать doclose, но он вызывается только при нажатии на крестик в углу формы. а надо чтобы при любом закрытии вызывался мой метод. шо делать???
segor (2004-07-23 19:52:00) [1]всем спасибо
как-то я ответ DK просмотрел
все работает
Zlod3y (2004-07-23 19:14:00) [2]Наверно уже не в тему.....тут смотрю Query полезли уже
Вопрос то кто нибудь помнит?
в привате объявляешь собственный метод, типа:
MyCustomFormClose(Sender: TObject {; тут наверно нужно будет написать что-нить про TAction, но я не уверен});
Потом описываешь метод как любую другую процедуру:
procedure MyCustomFormClose(Sender: TObject);
begin
//тыры-пыры
end;
а в formcreate например пишешь:
Form1.OnClose:=MyCustomFormClose;
а если что, то потом всё можно вернуть на место:
Form1.OnClose:=nil;
grom (2004-07-23 15:09:00) [3]а надо ВО ВСЕХ случаях!
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
CanClose:=false
---------------
Плохиш © (23.07.04 14:46) [16]
> segor (23.07.04 14:43) [14]
Тебе уже 2 часа назад DK ответил
Плохиш (2004-07-23 14:46:00) [4]
> segor (23.07.04 14:43) [14]
Тебе уже 2 часа назад DK ответил
segor (2004-07-23 14:45:00) [5]точнее даже кнопки в ЭТОМ классе нету
все что есть - так это бызовые методы TForm и системные события
segor (2004-07-23 14:43:00) [6]есть форма-класс, от которой наследуются потом все остальные
так вот, одна из задач этой формы - проверять правильность ввода нек. значений в контролах и если что не так - не позволять закрыть форму
пробовал procedure Sys(var M:TMessage);message WM_SYSCOMMAND;
но она также как и doClose срабатывает ТОЛЬКО на крестике
а надо ВО ВСЕХ случаях! (есть кнопка ОК с ModalResult = mrOK)
segor (2004-07-23 14:42:00) [7]есть форма-класс, от которой наследуются потом все остальные
так вот, одна из задач этой формы - проверять правильность ввода нек. значений в контролах и если что не так - не позволять закрыть форму
Zlod3y (2004-07-23 14:20:00) [8]
> segor (23.07.04 12:37) [10]
если можно, то скажи что те там делать нада, можно в общих чертах... может наверно и без перекрытия обойтись можно
grom (2004-07-23 14:07:00) [9]public { Public declarations }
procedure Sys(var M:TMessage);message WM_SYSCOMMAND;
--------------
//wwwwwwwww C L O S E /wwwwwwwww
procedure TForm1.Sys(var M:TMessage);
begin
if M.wParam=SC_CLOSE then begin
........
........
Exit;
end;
inherited;
end;
segor (2004-07-23 12:37:00) [10]было бы неплохо примерчик. спасибо
Zlod3y (2004-07-23 12:35:00) [11]Почитай Руководство разработчика Тейксейры и Пачеко в каком-то томе написано как прописать свой метод за место стандартного....всё просто на самом дел, только из всего помню
OnClose:=nil;
могу вечером кинуть примерчик, когда домой приду
segor (2004-07-23 12:32:00) [12]дело в том, что мой метод использует TAction чтобы по условию не позволить закрыть форму
Рамиль (2004-07-23 12:29:00) [13]
> [5] ИдиотЪ (23.07.04 12:09)
DoClose это диспетчер OnClose, так что срабатывают они одинаково. Попробуй уничтожить форму, а не закрыть.
Суслик (2004-07-23 12:09:00) [14]а на фига TAction?
напиши, что нужно.
ИдиотЪ (2004-07-23 12:09:00) [15]OnClose всегда работает, впиши туда свой метод
segor (2004-07-23 11:49:00) [16]у них нету TAction
а нужен
DK (2004-07-23 11:36:00) [17]До этого не правельно написал:
И OnCloseQuery - CanClose:=false
DK (2004-07-23 11:35:00) [18]И он On CloseQuery(CanClose:=false)
Суслик (2004-07-23 11:34:00) [19]там же событие есть - ondestroy у формы.