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

Вниз

Код системных кнопок   Найти похожие ветки 

 
AquaSun7   (2003-02-21 03:50) [0]

Уважаемые мастера, подскажите как изменить код системных кнопок основной формы, например, кнопки минимизации. Или может быть сделать собственную кнопку с обработчиком, за место основных?


 
Sha ©   (2003-02-21 08:33) [1]

{ TWMSysCommand = packed record
Msg: Cardinal;
case CmdType: Longint of
SC_HOTKEY: (
ActivateWnd: HWND);
SC_KEYMENU: (
Key: Word);
SC_CLOSE, SC_HSCROLL, SC_MAXIMIZE, SC_MINIMIZE, SC_MOUSEMENU, SC_MOVE,
SC_NEXTWINDOW, SC_PREVWINDOW, SC_RESTORE, SC_SCREENSAVE, SC_SIZE,
SC_TASKLIST, SC_VSCROLL: (
XPos: Smallint;
YPos: Smallint;
Result: Longint);
end;
}
procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
.........................
procedure TForm1.WMSysCommand(var Message: TWMSysCommand);
begin;
inherited;
end;


 
Alex44   (2003-02-21 10:00) [2]


> Sha


U menya eto pochemu-to ne prohodilo. Takoe oshushenie, chto Application perehvatyvaet eto sobytie u glavnoj formy. S menu udaetsya spravlyat"sya, izmeniv ID"s Item"ov pri sozdanii okna.


 
AquaSun7   (2003-02-23 02:42) [3]

А как распознать, какое событие произошло (какой элемент меню System выбpан)?
WM_MAXIMIZE & WM_MINIMIZE не нашёл :(


 
Alex44   (2003-02-24 12:24) [4]

WM_SYSCOMMAND


 
AquaSun7   (2003-02-28 03:11) [5]

Спасибо, допекло :)

procedure TForm1.UserSysCommand(var MsgCmd: TMessage);
begin
If MsgCmd.WParamLo=61472 Then
... {Блок обработки минимизации}
Else
If (MsgCmd.WParamLo=61488) Or (MsgCmd.WParamLo=61490) Then
... {Блок обработки максимизации}
Else inherited; {Вызов стандартного обработчика при остальных случаях}
end;


Есть ещё вопрос:
Как заставить системную кнопку закрытия окна сделать недоступной?
Чтобы программа на Alt-F4 не реагировала, но кнопки минимизации и максимизации были бы доступны?


 
AquaSun7   (2003-03-01 02:36) [6]

По крайней мере, как затемнить кнопку закрытия окна?


 
Alex44   (2003-03-01 09:22) [7]

Poprobujte na WM_INITMENUPOPUP (chto-to v etom duhe...) libo sdelat" punkt s SC_CLOSE disabled libo voobshe ego ubrat". V prochem, ne uveren chto eto srabotaet.


 
Song ©   (2003-03-01 11:51) [8]

2AquaSun7 (01.03.03 02:36)
DeleteMenu()
EnableMenuItem()


 
AquaSun7   (2003-03-04 02:05) [9]

Song © (01.03.03 11:51)
Подскажи, как узнать IDEnableItem в EnableMenuItem для кнопок (метод тыка не помогает).

Пишу:
EnableMenuItem(GetSystemMenu(Handle,False), 0 {1,2, и т.д.} {61472,61536, и т.д.} ,
(mf_ByCommand
{mf_ByPosition} or mf_Grayed {mf_Enabled} ));


 
AquaSun7   (2003-03-05 02:09) [10]

Разобрался:
Пробовал логические операции (AND, OR), а надо было арифметические (+)

Получилось:
EnableMenuItem(GetSystemMenu(Handle,False), 61536,
(mf_ByCommand + mf_Disabled + mf_Grayed));
{Пассивное состояние = 0+2+1}

EnableMenuItem(GetSystemMenu(Handle,False), 61536,
(mf_ByCommand + mf_Enabled));
{Активное состояние = 0+0}

Правда на Alt-F4 в пассивном состоянии всё равно закрывает, но как этого избежать я уже знаю.



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

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

Наверх




Память: 0.49 MB
Время: 0.011 c
14-77165
NAlexey
2003-04-09 11:09
2003.04.24
Как где, и по какому направлению сертифицироваться?


1-77021
777
2003-04-14 02:32
2003.04.24
Сервис


7-77194
xoxol
2003-03-06 22:12
2003.04.24
Как програмно удалить все файлы с расширением .tmp


3-76852
VICTOR_
2003-04-08 12:24
2003.04.24
Как восстановить запись в таблице Paradox?


6-77061
a-leksey
2003-03-03 18:26
2003.04.24
Как избавиться от ошибки 404 и ей подобных в TIdHTTP