|
Почти в любой программе есть меню. И у нас оно тоже будет.
Меню создается на объектах типа 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.
Результат:

|