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

Почти в любой программе есть меню. И у нас оно тоже будет.
Меню создается на объектах типа 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.
Теги:
Dialog, begin, integer, REdit, butOpen, clikButOpenSave, меню , индексом, butSave, пунктов, пункт, panTools, PControl, Filename, false, MakeMethod, boolean, title, будет, OnClick, Ставит, галочку, SetSize, NewButton, SetAlign, mainMenu, Applet, pMenu, StatusText, procedure, ProcessingMenu, Dummy, Sender, подменю , sender
Добавлено: 17 Июля 2018 08:03:43 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...