Главная страница
    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.46 MB
Время: 0.006 c
14-77119
SergeN
2003-04-07 11:40
2003.04.24
Компоненты,будь я не ладен-2!!!


4-77230
Hawker2007
2003-02-27 01:04
2003.04.24
Как получить текущее состояние окна приложения


3-76840
GAlexis
2003-04-07 17:54
2003.04.24
Запрос к нескольким таблицам связанным по разным полям


3-76809
tall
2003-04-06 08:50
2003.04.24
Copy - Past для записей BD


1-76987
SynapseAlex
2003-04-11 19:13
2003.04.24
Как создать системную службу





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский