Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Delphi 3.doc
Скачиваний:
6
Добавлен:
10.12.2018
Размер:
116.74 Кб
Скачать

Системное меню

Рассмотрим, как можно в вашем приложении изменить системное меню. Это меню, как известно, появляется при нажатии на иконке в левом верхнем углу вашего приложения:

Часто для небольшого приложения вполне достаточно изменения только этого меню (если вам всего надо добавить только 1-2 пункта в ваше приложение). Для изменения этого меню мы должны использовать API-функцию InsertMenu. Также нам пригодится API-функция GetSystemMenu - она возвращает указатель на системное меню. Вот конкретный пример кода:

...

menu:=GetSystemMenu(Handle, False);

InsertMenu(menu, 5, MF_ByPosition, 1000, 'About');

...

Этот код надо поместить, например, в обработчик нажатия кнопки (при нажатии на которую и будет добавляться в системное меню новый пункт). Разумеется, переменная menu типа HMENU должна быть до этого определена:

...

var

menu: HMENU;

...

Параметры у функции InsertMenu следующии: первый - это указатель на системное меню. Его мы получили через API-функцию GetSystemMenu. Второй - это номер позиции, на которую наш новый пункт меню вставится (нумерация идет с нуля!). Значение третьего параметра (MF_ByPosition) говорит о том, что второй параметр интерпретируется именно как номер позиции для нового пункта меню. Четвертый - это идентификатор меню (мы задали для него значение 1000). И, наконец, пятый - это заголовок нового пункта меню.

При запуске программы и нажатии на кнопку с добавленный в ее обработчик кодом в системном меню появится новый пункт:

Сейчас при выборе этого пункта ничего не происходит. Давайте добавим обработчик. Для этого вносим объявление нового обработчика в соответствующее место кода нашей формы:

type

...

procedure SystemMenu(var Msg:TMessage); Message WM_SysCommand;

...

Далее пишем сам обработчик:

...

procedure TForm1.SystemMenu(var Msg:TMessage);

begin

if Msg.wParam=1000 Then //если выбрали меню с идентификатором 1000

ShowMessage('О программе ...');

inherited;

end;

...

Теперь при выборе нашего пункта меню естественно появится messagebox "О программе ...".

Стандартный диалог для выбора шрифта

Рассмотрим несколько стандартных диалоговых окно. В частности, диалоговые окна для задания шрифта, цвета, открытия и сохранения файлов. Начнем с диалога для выбора шрифта. Он расположен на вкладке Dialogs Палитры Компонентов:

Двойным щелчком расположите его на форме. Разместите на форме также обычную кнопку и label с вкладки Standard. Именно для этого label'а мы и будем задавать разные щрифты. Стандартные значения для наших компонентов можете оставить без изменения - сейчас это не принципиально. Сделайте двойной щелчок на кнопке для создания заготовки кода. В полученную заготовку напишите следующие строки:

procedure TForm1.Button1Click(Sender: TObject);

begin

//Показываем диалог

FontDialog1.Execute;

//Задаем шрифт для label'а

Label1.Font:=FontDialog1.Font;

end;

Запускаем программу (F9). После запуска мы можем менять шрифт у надписи:

И напоследок еще одна мелочь. Если, скажем, цвет нашего label'а был первоначально красный, то при первом вызове диалогового окна для шрифта будет отмечен не красный цвет, а стандартный:

Для разрешения этой мелкой проблемы просто добавьте следующую строку:

...

begin

FontDialog1.Font:=Label1.Font;

//Показываем диалог

FontDialog1.Execute;

...

Теперь все будет нормально.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]