Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.27;
Скачать: CL | DM;

Вниз

Как обработать непосредственно нажатие на крестик(закрытие формы)   Найти похожие ветки 

 
Zhekson   (2005-11-02 10:16) [0]

Или нет прямого обработчика??? (словоблудов попрошу не беспокоить)


 
Slider007 ©   (2005-11-02 10:18) [1]

OnCloseQuery


 
umbra ©   (2005-11-02 10:32) [2]

OnClose


 
Zhekson   (2005-11-02 10:54) [3]

[1] [2]
очень смешно...
Как обработать непосредственно нажатие на крестик(закрытие формы)?

Alt-F4 тоже закрытие, а мне нужно непосредственно нажатие на крестик.


 
Zhekson   (2005-11-02 11:12) [4]

нащёл...

type
 TMain = class(TForm)
 protected
   procedure WMGetSysCommand(var message : TMessage);
   message WM_SYSCOMMAND;
end;
...

// Обработка сообщения WM_SYSCOMMAND
procedure TMain.WMGetSysCommand(var message : TMessage) ;
begin
 if (message.wParam = SC_CLOSE) then
   Main.Visible := False
 else
   inherited;
end;


закрыли тему.


 
sniknik ©   (2005-11-02 11:32) [5]

> закрыли тему.
почему?

// Обработка сообщения WM_SYSCOMMAND
....
при таком событии Alt-F4 тоже туда попадает (те. ты не делиш Alt-F4 и "крестик", а сам говориш надо...)


 
sniknik ©   (2005-11-02 11:38) [6]

незнаю насколько это во всех виндах одиноково, но вроде по LParam можно поделить (по Alt-F4 оно равно 0)
т.е.
if (message.wParam = SC_CLOSE) and (message.LParam > 0)
 then Main.Visible := False
 else inherited;
тогда это будет только "крестик"


 
Игорь Шевченко ©   (2005-11-02 11:57) [7]

sniknik ©   (02.11.05 11:38) [6]

А еще для разминки попробуй отделить нажатие на крестик от закрытия через оконное меню (правой кнопкой на иконке) :) Там lParam тоже не равен нулю.

Для корректного перехвата нажатия именно на крестик, желательно обрабатывать WM_NCLBUTTONDOWN, с wParam (HitTest) = HTCLOSE


 
sniknik ©   (2005-11-02 12:08) [8]

Игорь Шевченко ©   (02.11.05 11:57) [7]
да не только это, у меня с таким "разделением" перестает работать Close а также Application.Terminate и Send/PostMessage хотя тут я явно 0 в LParam задаю... т.е. с таким разделением састема тоже не справляется (а вот по Alt-F4 закрывает...)
(не удержался поделал тесты ;))

> Для корректного перехвата нажатия именно на крестик, желательно обрабатывать WM_NCLBUTTONDOWN, с wParam (HitTest) = HTCLOSE
ну да, это наверняка более правильно.
вот теперь можно
> закрыли тему.
(т.е. только теперь вот все логически понятно стало)


 
Leonid Troyanovsky ©   (2005-11-02 12:21) [9]


> Zhekson   (02.11.05 11:12) [4]

>  if (message.wParam = SC_CLOSE) then
>    Main.Visible := False


 if (message.WParam and $FFF0 = SC_CLOSE) then
   Visible := False; // не должно быть никакого Main.

--
Regards, LVT.


 
Zhekson   (2005-11-02 13:03) [10]

Leonid Troyanovsky ©   (02.11.05 12:21) [9]
а, да то так... пример... у меня код вообще другой...

sniknik ©   (02.11.05 11:32) [8]
так точно!



Страницы: 1 вся ветка

Текущий архив: 2005.11.27;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.042 c
14-1131123453
lookin
2005-11-04 19:57
2005.11.27
Новый альбом Rammstein - Rosenrot


3-1129038011
stepan_mk
2005-10-11 17:40
2005.11.27
ODAC & ORAARRAY


14-1131344179
CHES
2005-11-07 09:16
2005.11.27
Элемент управления сложной формы


2-1131304186
ЯТутаНовичек
2005-11-06 22:09
2005.11.27
Помогите с TDate


2-1131443009
pathfinder
2005-11-08 12:43
2005.11.27
Удаление записей в StrinList.