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

•  DeLiKaTeS Tetris (Тетрис)  3 670

•  TDictionary Custom Sort  5 800

•  Fast Watermark Sources  5 603

•  3D Designer  8 218

•  Sik Screen Capture  5 913

•  Patch Maker  6 388

•  Айболит (remote control)  6 378

•  ListBox Drag & Drop  5 237

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

•  Графические эффекты  6 570

•  Рисование по маске  5 644

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

•  Canvas Drawing  5 135

•  Рисование Луны  4 863

•  Поворот изображения  4 411

•  Рисование стержней  3 116

•  Paint on Shape  2 360

•  Генератор кроссвордов  3 228

•  Головоломка Paletto  2 551

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

•  Пазл Numbrix  2 200

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

•  Игра HIP  1 820

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

•  Симулятор лифта  2 072

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

•  Генератор лабиринта  2 240

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

•  HEX View  2 226

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

 
скрыть

  Форум  

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-2025 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

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