Воскресенье, 28.04.2024
Королевство Delphi
Главное меню
Статьи
Наш опрос
Как часто ви на этот сайт заходите?
Всего ответов: 159
Статистика
Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Главная » Статьи » Система » Kol и MCK

Меню. Как много в этом слове...

Почти в любой программе есть меню. И у нас оно тоже будет.
Меню создается на объектах типа pMenu

function NewMenu( AParent: PControl; FirstCmd: Integer; const Template: array of PChar; aOnMenuItem: TOnMenuItem ): PMenu;

В AParent вы указываете к чему будет принадлежать меню. Если вы указали форму, то для нее это будет главное меню.

Template - это массив, состоящий из пунктов меню. В этих пунктах могут встречаться специальные символы. Вот их список:

Символ Значение
& подчеркивает следующий символ
+ галочка в меню
- разделитель между пунктами меню
( начало подменю
) конец подменю

Через aOnMenuItem указывается процедура, обрабатывающая выбранный пункт меню.

Описание некоторых свойств меню

Свойство Описание
ItemChecked[idx:integer]:boolean Ставит/убирает галочку на пункт меню с индексом idx
RadioCheck(idx:integer) Ставит радио-галочку на один из пунктов меню
Popup(x,y:integer); Вызывает меню на экран в позиции x,y
ItemText[idx:integer]:string Текст пункта меню с индексом idx
ItemEnabled[idx:integer]:boolean Включает/выключает пункт меню с индексом idx
ItemVisible[idx:integer]:boolean Показывать/не показывать пункт меню с индексом idx

Давайте добавим в наш редактор пару пунктов меню:

 program Primer;

 uses
 Windows,
 messages,
 KOL;

 {$R *.RES}
 var
 form,
 PanTools,
 REdit,
 butOpen,
 butSave:PControl;
 mainMenu:pMenu;
 Dialog:pOpenSaveDialog;

 procedure clikButOpenSave( Dummy : Pointer; Sender : PControl );
 var
 title:string;
 begin
 if sender= butOpen then
 begin
 Dialog.title := 'Открыть';
 Dialog.OpenDialog := true;
 REdit.Clear ;
 end
 else
 begin
 Dialog.title := 'Сохранить как...';
 Dialog.OpenDialog := false;
 end;
 if Dialog.Execute then
 if sender= butOpen then
 REdit.RE_LoadFromFile(Dialog.Filename,reText,false)
 else
 REdit.RE_SaveToFile(Dialog.Filename,reText,false);
 form.StatusText[0]:=PChar(Dialog.Filename);
 end;

 procedure ProcessingMenu (Dummy:pointer;Sender:pMenu;Item:Integer);
 //обработка пунктов меню
 begin
 case Item of
 1:begin {NEW}
 REdit.Clear ;
 form.StatusText[0]:='';
 end;
 2:clikButOpenSave(nil,butOpen); {Open}
 3:clikButOpenSave(nil,butSave); {Save As}
 4:Applet.Close; {Exit}
 end;{case}
 end;

 begin
 form:=NewForm(Applet,'Редактор');
 panTools := NewPanel(form,esRaised).SetAlign(caTop);
 panTools.Height := 35 ;
 REdit := NewRichEdit(form,[]).SetAlign(caClient);
 butOpen:= NewButton(panTools,'Open').SetSize(50,25);
 butSave:= NewButton(panTools,'Save as').SetSize(60,25).PlaceRight ;
 Dialog:=NewOpenSaveDialog('','',[]) ;
 mainMenu := NewMenu(form,0,
 [
 'File',
 '(',
 'New',
 'Open',
 'Save As..',
 '-',
 '&Exit',
 ')'
 ],
 TOnMenuItem( MakeMethod( nil, @ProcessingMenu ))
 );

 butOpen.OnClick := TOnEvent(MakeMethod(nil,@clikButOpenSave));
 butSave.OnClick := TOnEvent(MakeMethod(nil,@clikButOpenSave));
 run(form);
 end.

Получить ссылку на материал

Категория: Kol и MCK | Добавил: Барон (13.12.2011)
Просмотров: 754 | Теги: меню | Рейтинг: 0.0/0
[ Пожертвования для сайта ] [ Пожаловаться на материал ]

Если вам помог материал сайта кликните по оплаченной рекламе размещенной в центре

Поиск
Категории раздела
ActiveX [10]
CORBA и COM [16]
Kol и MCK [23]
WinAPI [28]
Компоненты [27]
Работа с Bluetooth [4]
Железо [8]
Текст [18]
Разное [98]
Королевство Delphi © 2010-2024
Яндекс цитирования