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