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

Вниз

Событие сворачивания и закрытия окна   Найти похожие ветки 

 
allucard   (2007-06-08 12:41) [0]

Доброго дня.

Подскажите пожалуйста:

1. Какое событие возникает при сворачивании окна?

2. Как при посылке основной форме команды закрытия, форму не закрыть а только свернуть.

Спасибо.


 
clickmaker ©   (2007-06-08 12:48) [1]

API или VCL?

для второго - OnClose - Action := caMinimize


 
Сергей М. ©   (2007-06-08 12:49) [2]


> 1. Какое событие возникает при сворачивании окна?
>


TApplication.OnMessage


> 2. Как при посылке основной форме команды закрытия, форму
> не закрыть а только свернуть


В обработчике OnCloseQuery основной формы написать
Action := caHide;


 
Сергей М. ©   (2007-06-08 12:50) [3]

Поправка:

В обработчике OnClose основной формы написать
Action := caMinimize;


 
novill ©   (2007-06-08 12:58) [4]

> Action := caMinimize;

На D6 это не сработало. Приложение закрылось.
(проверял на новом проекта с одной пустой формой)


 
clickmaker ©   (2007-06-08 13:07) [5]

в исходниках vcl можно много чего интересного найти

procedure TCustomForm.Close;

if CloseAction <> caNone then
       if Application.MainForm = Self then Application.Terminate
       else if CloseAction = caHide then Hide
       else if CloseAction = caMinimize then WindowState := wsMinimized
       else Release;


 
allucard   (2007-06-08 13:10) [6]


> Сергей М. ©   (08.06.07 12:50) [3]

> В обработчике OnClose основной формы написать
> Action := caMinimize;

В BDS2006 Закрывает приложение.

Как выловить событие сворачивания окна?


 
allucard   (2007-06-08 13:17) [7]


> clickmaker ©   (08.06.07 13:07) [5]

опа, и как быть?


 
webpauk   (2007-06-08 13:53) [8]

private
procedure WMSYS(var Msg: Tmessage); Message WM_SYSCOMMAND;

procedure Tform1.WMSYS(var Msg: Tmessage);
begin
 if Msg.Wparam=sc_close then Sendmessage(Handle, WM_SYSCOMMAND, sc_minimize, 0)
 else inherited;
end;


 
allucard   (2007-06-08 14:25) [9]

Форму всё ещё можно закрыть выбрав закрыть в контекстном меню на панели задач пункт закрыть


 
allucard   (2007-06-08 14:28) [10]

как выловить сообщение окну wm_close?

там другая константа не WM_SYSCOMMAND;


 
clickmaker ©   (2007-06-08 14:55) [11]

эх, зря я что-ли сюда кусок вцл запостил, 3 минуты рабочего времени потерял? :)

оттуда же видно, что при caNone VCL ничего делать не будет. Потому пишем так:

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 Action := caNone;
 SendMessage(Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0);
end;


 
novill ©   (2007-06-08 15:02) [12]

Отвечая на
> 2. Как при посылке основной форме команды закрытия, форму
> не закрыть а только свернуть.


procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose:=false;
Application.Minimize;
end;


 
allucard   (2007-06-09 12:09) [13]

Всем спасибо.
Работает.


> clickmaker ©   (08.06.07 14:55) [11]

Тебе отдельное:)


 
allucard   (2007-06-14 16:19) [14]

Извините что так безпардонно - но хочется продолжить:

Все ваши методы безусловно работают, но окно всё ещё можно закрыть в контекстном меню на панели задач.

Как выловить что-ли глобальное сообщение сообщение закрытия???



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

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

Наверх




Память: 0.49 MB
Время: 0.014 c
3-1176130175
jack128
2007-04-09 18:49
2007.07.08
Медленный фетч данных в FB


15-1180990464
ProgRAMmer Dimonych
2007-06-05 00:54
2007.07.08
Один из самых часто задаваемых вопросов, наверное


15-1181193494
oxffff
2007-06-07 09:18
2007.07.08
Помогите им освежить VCL


3-1174564693
Хаванагил
2007-03-22 14:58
2007.07.08
Иерархические структуры


4-1170497046
$00FF00
2007-02-03 13:04
2007.07.08
Массив пикселей