Шупрута В.В. - Delphi 2005 - Учимся программировать (1080891), страница 36
Текст из файла (страница 36)
Д л я создания элементаменю необходимо выполнить щелчок в области ввода текста и ввести названиепункта меню. Как только вы что-нибудь наберете, справа и внизу появятся области для ввода следующих элементов меню. Заполняя э т и области, вы постепенно создаете структуру вашего меню (рис. 5.21).Пункты меню можно отделять друг от друга с помощью разделителей. Дляэтого необходимо навести курсор в т о место, куда в ы х о т и т е поместитьразделитель, и нажать правую кнопку мыши. В п о я в и в ш е м с я контекстномменю, выбрав пункт Insert S e p a r a t o r (Вставить разделитель), в ы увидите, какпоявится полоска между пунктами меню.
Также м о ж н о ввести символ «-» (минус) , и Delphi сама преобразует этот пункт меню в разделитель.С ф о р м и р о в а в структуру, можно приступать к настройке главного меню. Д л яэтого н а м потребуется ознакомиться с о с н о в н ы м и свойствами компонентаM a i n M e n u , т о ч н е е говоря, со свойствами пунктовтурен^1 нашего меню ( M e n u l t e m ) .СправкаДоступ к свойствам элемента меню M e n u l t e m можноСопрограммеполучитьи з окна Object Inspector, нажав на один изТуре негепунктов меню, к о т о р ы й м ы собираемся настроить.Рис.
5.21 т Заполнение Итак, о с н о в н ы е свойства, к о т о р ы е нам предстоитменю элементаминастраивать, приведены в табл. 5.21.Компонент MainMenuТаблица 5 . 2 1 т Основные свойства элементов меню MainMenuСвойствоКомментарийNameИмя компонента, используемое в программе для доступа к компоненту и его свойствамTextНазвание элемента менюEnabledПризнак доступности элемента меню. Если значение свойства равно False, то названиепункта изображается инверсным цветом и при нажатии на него событие C l i c kне происходитCheckedПризнак того, что элемент меню выбран.
Выбранный элемент меню помечается галочкойShortcutСвойство определяет комбинацию клавиш (или клавишу), нажатие которойрасценивается как выбор соответствующего пункта менюShowShortCutСвойство, определяющее, будет ли отображаться в пункте меню комбинация клавиш,нажатие которой активизирует данный пункт менюТеперь поговорим о событиях, которые может воспринимать наше меню.Их два - C l i c k (Нажатие) и S e l e c t (Выбор).В первом случае событие возникает в результате щелчка по элементу меню,при нажатии клавиши Enter (если выбран пункт меню) или в результатенажатия функциональной клавиши, которая указана в свойстве S h o r t c u t(клавиши быстрого доступа к этому элементу меню).Второе же событие возникает при наведении указателя мыши на элемент меню,а также при его выборе с помощью клавиш управления курсором.Следующая программа, которая является немного усовершенствованным редактором текстовых файлов, демонстрирует использование компонента MainMenu.Форма окна приведена на рис.
5.22. Текст программы приведен в листинге 5.13.ФайлaitРис. 5.22 т Форма окна программы редактирования текстовых файлов8-3166ГЛАВА 5 У Основные компоненты при программировании для .NETВо время работы программы в строке состояния отображается справка овыбранном пункте меню (с помощью процедуры S e l e c t ) .
Выполнение жекоманд обеспечивает процедура Click.Листинг 5.13 т Текст программы «Простейший текстовый редактор» с использованиемкомпонента MainMenuunit WinForm;interfaceSystem.Drawing, System.Collections. System.ComponentModel,System.Windows.Forms, System.Data, System.Resources,System.10, System.Text;typeTWinForm = class(System.Windows.Forms.Form){$REGION 'Designer Managed Code'}strict privatecomponents: System.ComponentModel.IContainer;MainMenul: System.Windows.Forms.MainMenu;Menulteml: System.Windows.Forms.Menultem;Menultem2: System.Windows.Forms.Menultem;Menultem3: System.Windows.Forms.Menultem;Menultem4: System.Windows.Forms.Menultem;Menultem5: System.Windows.Forms.Menultem;Menultem6 : System .'Windows .
Forms .Menultem;Menultem7: System.Windows.Forms.Menultem;Menultem9: System.Windows.Forms.Menultem;MenuItemlO: System.Windows.Forms.Menultem;Menultemll: System.Windows.Forms.Menultem;Menulteml2: System.Windows.Forms.Menultem;StatusBarl: System.Windows.Forms.StatusBar;ToolBarl: System.Windows.Forms.ToolBar;ImageListl: System.Windows.Forms.ImageList;TextBoxl: System.Windows.Forms.TextBox;ToolBarButtonl: System.Windows.Forms.ToolBarButton;ToolBarButton3: System.Windows.Forms.ToolBarButton;StatusBarPanell: System.Windows.Forms.StatusBarPanel;Menulteml3: System.Windows.Forms.Menultem;Menulteml4: System.Windows.Forms.Menultem;OpenFileDialogl: System.Windows.Forms.OpenFileDialog;SaveFileDialogl: System.Windows .Forms.SaveFileDialog,FontDialogl: System.Windows.Forms.FontDialog;ToolBarButton2: System.Windows.Forms.ToolBarButton;procedure InitializeComponent;Компонент MainMenuwprocedure MenuItem5_Select(sender: System.Object;e: System.EventArgs);procedure MenuItem4_Select(sender: System.Object;e: System.EventArgs);procedure MenuItem3_Select(sender: System.Object;e: System.EventArgs);procedure MenuItem2_Select(sender: System.Object;e: System.EventArgs);procedure MenuIteml_Select(sender: System.Object;e: System.EventArgs);procedure MenuItemll_Click(sender: System.Object;e: System.EventArgs);procedure MenuIteml2_Click(sender: System.Object;e: System.EventArgs);procedure MenuIteml2_Select(sender: System.Object;e: System.EventArgs);procedure MenuItemll_Select(sender: System.Object;e: System.EventArgs);procedure MenuItemlO_Select(sender: System.Object;e: System.EventArgs);procedure Menultem9_Select(sender: System.Object;e: System.EventArgs);procedure MenuItem5_Click(sender: System.Object;e: System.EventArgs);procedure ToolBarl_ButtonClick(sender: System.Object;e: System.Windows.Forms.ToolBarButtonClickEventArgs);procedure MenuItem3_Click (sender: System.Object ,e: System.EventArgs);procedure MenuItem4_Click(sender: System.Object;e: System.EventArgs);procedure MenuItem2_Click(sender: System.Object;e: System.EventArgs);procedure MenuItemlO_Click(sender: System.Object;e: System.EventArgs);procedure MenuItem7_Click(sender: System.Object;e: System.EventArgs);{$ENDREGION}strict protectedprocedure Dispose(Disposing: Boolean); override;privatestream_read:System.10.StreamReader; // Лоток для выполнения// чтения.stream_write:System.10.StreamWriter;// Поток для выполнения// записи.encoder:System.Text.Encoding;// Кодировщик.ГЛАВА 5 • Основные компоненты при программировании для .NETfile_name:string;procedure Open_File;procedure Save_File;publicconstructor Create;end j////////Переменная для храненияимени текстового файла.Процедура открытия файла.Процедура сохранения файла[assembly: RuntimeRequiredAttribute(TypeOf(TWinForm))]implementation{$AUTOBOX ON}procedure TWinForm.Dispose(Disposing: Boolean);beginif Disposing thenbeginif Components <> nil thenComponents.Dispose() ;end;inherited Dispose(Disposing);end ;constructor TWinForm.Create;begininherited Create;InitializeComponent;II.
Устанавливаем русскую кодировку для Windows (1251).encoder := System.Text.Encoding.GetEncoding(12 51);end;// Выбор пункта меню 'О программе'.procedure TWinForm.MenuItem7_Click(sender: System.Object;e: System.EventArgs);beginMessageBox.Show('Простейший редактор текста с'+#13+"использованием компонента MainMenu 1 ,10 программе',MessageBoxButtons.OK,MessageBoxIcon.Information);end;// Выбор пункта меню 'Создать... '.procedure TWinForm.MenuItem2_Click(sender: System.Object;e: System.EventArgs);beginfile_name := '';TextBoxl.Text := '';end;Компонент MainMenu// Выбор пункта меню 'Открыть файл... '.procedure TWinForm.MenuItem3_Click(sender: System.Object;e: System.EventArgs);beginOpen_File;end ;// Выбор пункта меню 'Сохранить в файл....'.procedure TWinForm.MenuItem4_Click(sender: System.Object;e: System.EventArgs);beginSave_File;end;// Выбор пункта меню 'Завершение работы...
'.procedure TWinForm.MenuItem5_Click(sender: System.Object;e: System.EventArgs);beginClose;end;// Выбор пункта меню 'Настройки/ВыборШрифта'.procedure TWinForm.MenuItemlO_Click(sender: System.Object;e: System.EventArgs);vard_result:System.Windows.Forms.DialogResult;begind_result:=FontDialogl.ShowDialog;if (d_result=System.Windows.Forms.DialogResult.OK) thenbeginTextBoxl.Font := FontDialogl.Font;end ;end;// Выбор пункта меню 'Настройки/Панельинструментов'.procedure TWinForm.MenuItemll_Click(sender: System.Object;e: System.EventArgs);beginToolBarl.Visible := not ToolBarl.Visible;Menultemll.Checked := not Menultemll.Checked;end;// Выбор пункта меню 'Настройки/Строкасостояния'.procedure TWinForm.MenuIteml2_Click(sender: System.Object;e: System.EventArgs);begin// Скрыть/показатьстрокусостояния.StatusBarl.Visible := not StatusBarl.Visible;ГЛАВА 5 • Основные компоненты при программировании для .NET// Установить/сброситьфлажок рядом с командой.Menulteml2.Checked := not Menulteml2.Checked;if StatusBarl.Visible then StatusBarl.Panels[0].Textend;: = •';// Щелчок на кнопке панели инструментов.procedure TWinForm.ToolBarl_ButtonClick(sender: System.Object;e: System.Windows.Forms.ToolBarButtonClickEventArgs)begin// Определяем кнопку, которая была нажата.case (ToolBarl.Buttons.IndexOf(e.Button)) of0: Open_File; // Открытие текстового файлаII кнопка с индексом 1 - разделитель.2: Save_File; // Сохранение в файл.end;end;// Мышь над пунктом меню 'Настройки'.procedure TWinForm.MenuItem9_Select(sender: System.Object;e: System.EventArgs);beginStatusBarl.Panels[0].Text := '';end ;// Мышь над пунктом меню 'Настройки/Шрифт'.procedure TWinForm.MenuItemlO_Select(sender: System.Object;e: System.EventArgs);beginStatusBarl.Panels[0].Text := 'Выбор шрифта';end;// Мышь над пунктом меню 'Настройки/Панель инструментов'.procedure TWinForm.MenuItemll_Select(sender: System.Object;e: System.EventArgs);'beginif Menultemll.CheckedthenStatusBarl.Panels[0].Text := 'Скрыть панель инструментов'elseStatusBarl.Panels[0].Text := 'Показать панель инструментов';end;// Мышь над пунктом меню 'Настройки/Строка состояния'.procedure TWinForm.MenuIteml2_Select(sender: System.Object;e: System.EventArgs);beginif Menultemll.CheckedКомпонент MainMenuthen StatusBarl.Panels[0].Text := 'Скрыть строку состояния'else StatusBar1.Panels[0].Text := 'Показать строку состояния'end ,// Мышь над пунктом меню 'Файл'.procedure TWinForm.MenuIteml_Select(sender: System.Object;e: System.EventArgs);beginStatusBarl.Panels[0].Text := ••;end;// Мышь над пунктом меню 'Файл/Создать...
'.procedure TWinForm.MenuItem2_Select(sender: System.Object;e: System.EventArgs);beginStatusBarl.Panels[0].Text :• 'Начало работы над новым файлом';end;11 Мышь над пукнтом меню команде 'Файл/Открыть файл'.procedure TWinForm.MenuItem3_Select(sender: System.Object;e: System.EventArgs);beginStatusBarl.Panels[0].Text := 'Открыть существующий файл';end;// Мышь над пунктом меню 'Файл/Сохранить в файл'.procedure TWinForm.MenuItem4_Select(sender: System.Object;e: System.EventArgs);beginStatusBarl.Panels[0].Text := 'Сохранить текст в файле 1 ;end;// Мышь над пунктом меню 'Файл/Завершение работы'.procedure TWinForm.MenuItem5_Select(sender: System.Object;e: System.EventArgs);beginStatusBarl.Panels[0].Text := 'Завершить работу с программой';end ;// Открытие файла и отображение его в поле/I компонента TextBoxl.procedure TWinForm.Open_File;beginOpenFileDialogl.FileName := '';// Отображение диалогового окна 'Открыть..