Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 июля!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

БОЛЬШОЙ FAQ ПО DELPHI



изменить системное меню

Многие, наверное, уже задумывались над тем, как же внести изменения в системное меню. На примере вы видите, что кнопка закрытия окна неактивна. К тому же команда "Закрыть" вообще отсутствует в системном меню.(Системное меню вызывается по щелчку на иконке окна или Alt+Space)
Если вы напишите следующий код на создание окна (событие OnCreate), то сможете сами в этом убедиться.
procedure TForm1.FormCreate(Sender: TObject);
var
hMenuHandle:HMENU;
begin
hMenuHandle:=GetSystemMenu(Handle, false);
if hMenuHandle<>0 then begin
DeleteMenu(hMenuHandle, SC_CLOSE, MF_BYCOMMAND);
end;
end;
Как это сделано?
Объявляем переменную типа HMENU. Получаем дескриптор своего системного меню и помещаем его в переменную:
hMenuHandle:=GetSystemMenu(Handle,false);
Получить дескриптор позволяет функция GetSystemMenu. Ей в качестве параметра указываем ключевое слово Handle - оно указывает, что будет получен дескриптор нашего системного меню. Второй параметр, равный false, означает, что возвращаемое функцией значение будет не нулевое, а равное дескриптору меню окна.
Функция DeleteMenu позволяет удалить пункт меню. Сначала ей указываем дескриптор меню - hMenuHandle, затем (SC_CLOSE) значение, идентифицирующее пункт меню, которое может принимать следующие значания:
sc_close - "Закрыть",
sc_move - "Переместить",
sc_size - "Размер",
sc_minimize - "Свернуть",
sc_maximize - "Развернуть"... и т.д.
Последний параметр (MF_BYCOMMAND) означает, что предыдущий параметр дает идентификатор пункта меню. Если бы предыдущий параметр указывал на положение пункта меню, отсчитываемое от нуля, тогда бы мы написали MF_BYPOSITION.
Вот теперь вы можете смело менять наличие и активность того или иного пункта системного меню! Плюс к тому, если вы заботитесь о наличии и активности кнопок на заголовочной полосе, соответствующих пунктам меню, то можете поэкспериментировать со свойствами окна BorderStyle & BorderIcons.



<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS