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