Недавно добавленные исходники

•  TDictionary Custom Sort  3 225

•  Fast Watermark Sources  2 990

•  3D Designer  4 750

•  Sik Screen Capture  3 259

•  Patch Maker  3 467

•  Айболит (remote control)  3 528

•  ListBox Drag & Drop  2 904

•  Доска для игры Реверси  80 774

•  Графические эффекты  3 843

•  Рисование по маске  3 171

•  Перетаскивание изображений  2 544

•  Canvas Drawing  2 672

•  Рисование Луны  2 500

•  Поворот изображения  2 092

•  Рисование стержней  2 119

•  Paint on Shape  1 524

•  Генератор кроссвордов  2 183

•  Головоломка Paletto  1 730

•  Теорема Монжа об окружностях  2 158

•  Пазл Numbrix  1 649

•  Заборы и коммивояжеры  2 016

•  Игра HIP  1 262

•  Игра Go (Го)  1 200

•  Симулятор лифта  1 422

•  Программа укладки плитки  1 177

•  Генератор лабиринта  1 512

•  Проверка числового ввода  1 297

•  HEX View  1 466

•  Физический маятник  1 322

•  Задача коммивояжера  1 357

 
скрыть


Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Урок 6 - Меню - как много в этом слове



Ведущий раздела KOL и MCK: Анатолий aka XVeL
Автор: Борис Моренко
WEB-сайт: http://kolmck.net/

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

Результат:





Похожие по теме исходники

Операции с многочленами




Copyright © 2004-2024 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте