Форум: "Система";
Текущий архив: 2003.04.24;
Скачать: [xml.tar.bz2];
ВнизКод системных кнопок Найти похожие ветки
← →
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_ByPosition}
(mf_ByCommandor mf_Grayed
{mf_Enabled}));
← →
AquaSun7 (2003-03-05 02:09) [10]Разобрался:
Пробовал логические операции (AND, OR), а надо было арифметические (+)
Получилось:
EnableMenuItem(GetSystemMenu(Handle,False), 61536,
{Пассивное состояние = 0+2+1}
(mf_ByCommand + mf_Disabled + mf_Grayed));
EnableMenuItem(GetSystemMenu(Handle,False), 61536,
{Активное состояние = 0+0}
(mf_ByCommand + mf_Enabled));
Правда на Alt-F4 в пассивном состоянии всё равно закрывает, но как этого избежать я уже знаю.
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2003.04.24;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c