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

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

перекрыть метод закрытия формы [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 у формы.


Наверх

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