Главная страница
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.017 c
4-77222
Andrej
2003-02-26 12:47
2003.04.24
Буфер


3-76783
lightix
2003-04-04 16:18
2003.04.24
Как разрешить выбор пустоты в DBLookupCOmbobox если в таблице нет


3-76828
Rustik
2003-04-07 16:47
2003.04.24
Мастера подскажите как вывести список таблиц с полями на печать


1-76976
Alexander1966
2003-04-11 16:12
2003.04.24
Delphi-йский аналог объявленных констант C++Builder


1-76888
snake1977
2003-04-14 16:52
2003.04.24
ShareWare