Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 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_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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.007 c
3-76804
Мазут Береговой Рюрикович
2003-04-05 10:10
2003.04.24
Dbase, Xbase и прочие в Delphi.


3-76780
msoftware
2003-04-03 09:26
2003.04.24
Помогите чайнику с TDecisionGrid


14-77164
alxn
2003-04-08 11:41
2003.04.24
Кто знает, куда пропал DelphiPlus?


1-76931
Tayfun
2003-04-14 14:42
2003.04.24
Как сделать Screen Saver


1-76877
baatars
2003-04-10 21:01
2003.04.24
strToDate - игнорирует ShortDateFormat





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский