Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Конструктор меню, настройка меню. Комбинации клавиш.




Создание и настройка меню с помощью Конструктора меню выполняются при создании приложения. Кроме того, меню можно создавать или изменять динамически непосредственно при выполнении приложения. Например, возможно:

· создать новое меню любого типа или удалить его;

· заблокировать или разблокировать отдельные пункты;

· сделать пункт меню видимым или невидимым;

· добавить или удалить пункт меню;

· изменить название пункта;

· установить или убрать отметку пункта;

· изменить главное меню формы на другое;

· соединить два меню.

Эти возможности обеспечиваются установкой свойствам пунктов меню требуемых значений и вызовом соответствующих методов.

Основное свойство компонента — Items. Его заполнение производится с помощью Конструктора Меню, вызываемого двойным щелчком на компоненте MainMenu или нажатием кнопки с многоточием рядом со свойством Items в окне Инспектора Объектов. В результате откроется окно, вид которого представлен на рисунке.

 

При работе в конструкторе меню новые разделы можно вводить, помещая курсор в рамку из точек, обозначающую место расположения нового раздела. Если при этом раздел ввелся не на нужном месте, то можно отбуксировать его мышью туда, куда надо. Другой путь ввода нового раздела — использование контекстного меню, всплывающего при щелчке правой кнопкой мыши. Если предварительно выделить какой-то раздел меню и выбрать из контекстного меню команду Insert, то рамка нового раздела вставится перед ранее выделенным. Из контекстного меню можно также выполнить команду Create Submenu, позволяющую ввести подменю в выделенный раздел.

При выборе нового раздела в Инспекторе Объектов отобразится множество свойств данного раздела. Дело в том, что каждый раздел меню, т.е. каждый элемент свойства Items, является объектом типа TMenuItem, обладающим своими свойствами, методами, событиями.

Свойство Caption обозначает надпись раздела. Если в качестве значения Caption очередного раздела ввести символ минус «-», то вместо раздела в меню появится разделитель.

Свойство Name задает имя объекта, соответствующего разделу меню.

Свойство Shortcut определяет клавиши быстрого доступа к разделу меню — «горячие» клавиши, с помощью которых пользователь, даже не заходя в меню, может в любой момент вызвать выполнение процедуры, связанной с данным разделом. Чтобы определить клавиши быстрого доступа, надо открыть выпадающий список свойства Shortcut в окне Инспектора Объектов и выбрать из него нужную комбинацию клавиш. Эта комбинация появится в строке раздела меню.

Свойство Default определяет, является ли данный раздел разделом по умолчанию своего подменю, т.е. разделом, выполняемым при двойном щелчке пользователя на родительском разделе. Подменю может содержать только один раздел по умолчанию.

Свойство Break используется в длинных меню, чтобы разбить список разделов на несколько столбцов. Возможные значение Break: mbNone — отсутствие разбиения меню (это значение принято по умолчанию), mbBarBreak и mbBreak — в меню вводится новый столбец разделов, отделенный от предыдущего полосой (mbBarBreak) или пробелами (mbBreak). На рис. показан пример, в котором в разделе 1-3 установлено значение Break = mbBreak, а в разделе 1-5 — Break = mbBarBreak.

Свойство Checked, установленное в true, указывает, что в разделе меню будет отображаться маркер флажка, показывающий, что данный раздел выбран. Правда, сам по себе этот маркер не изменяется и в обработчик события OnClick такого раздела надо вставлять оператор типа

MAutoSave.Checked:= not MAutoSave.Checked;

(в приведенном операторе подразумевается, что раздел меню назван MAutoSave).

Для каждого раздела могут быть установлены во время проектирования или программно во время выполнения свойства Enabled (доступен) и Visible (видимый). Если установить Enabled = false, то раздел будет изображаться серой надписью и не будет реагировать на щелчок пользователя. Если же задать Visible = false, то раздел вообще не будет виден, а остальные разделы сомкнутся, заняв место невидимого. Свойства Enabled и Visible используются для того, чтобы изменять состав доступных пользователю разделов в зависимости от режима работы приложения.

В Delphi предусмотрена возможность ввода в разделы меню изображений. За это ответственны свойства разделов Bitmap и ImageIndex. Первое из них позволяет непосредственно ввести изображение в раздел, выбрав его из указанного вами файла. Второе позволяет указать индекс изображения, хранящегося во внешнем компоненте ImageList. Указание на этот компонент можно задать в свойстве Images компонента MainMenu. Индексы начинаются с 0. Если указать индекс -1 (значение по умолчанию), изображения не будет.

 

Рис. Результат конструирования меню.

Основное событие раздела — OnClick, возникающее при щелчке пользователя на разделе или при нажатии «горячих» клавиш быстрого доступа.

Лекция № 16. Использование диалоговых компонентов.

Простое диалоговое окно с кнопкой - ShowMessage(const Msg:string)

Пример. При написании такого кода – ShowMessage(‘Сообщение процедуры ShowMessage ’) появится следующее диалоговое окно:

 

Разделение сообщения на две строки:
ShowMessage('Hello '+#13#10+'World');

 

Функция MessageDlg (const Message: string; DialogType: TMsgDlgType; Buttons: TMsgDlgButtons; HelpContext: Longint): Integer; используется для отображения сообщений пользователю. Эти сообщения могут быть информационными, предупреждающими или чтобы то ни было.

mtWarning -Окно замечаний - Отображает символ восклицания
mtError
-Окно ошибок - Отображает красный "Х"

mtInformation -Информационное окно – Отображает "i" в круге

mtConfirmation -Окно подтверждения - Отображает знак вопроса
mtCustom
-Окно без значка - Отображает только сообщение.

 

Даётся полный свободный выбор кнопок, которые пользователь может нажать, чтобы подтвердить диалог.

Значение Buttons может быть одним из следующих перечисленных значений:
mbYes - Отображает кнопку "Yes"
mbNo - Отображает кнопку "No"
mbOK - Отображает кнопку "OK"
mbCancel - Отображает кнопку "Cancel"
mbAbort - Отображает кнопку "Abort"
mbRetry - Отображает кнопку "Retry"
mbIgnore - Отображает кнопку "Ignore"
mbAll - Отображает кнопку "All"
mbNoToAll - Отображает кнопку "No to all"
mbYesToAll - Отображает кнопку "Yes to all"
mbHelp - Отображает кнопку "Help"

 

Пример.

If MessageDlg (‘Закончить приложение?’, mtConfirmation, [mbYes, mbNo],0) = mrYes then
Begin
MessageDlg (‘работа приложения окончена’, mtConfirmation,[mbOk],0);
Close;
End;

Функция InputBox(const Acaption, APrompt, Adefault: String): String - функция Delphi, создает диалоговое окно для ввода строки текста. Окно располагается в центре экрана и содержит в себе поле для ввода с надписью и две кнопки OK и Cancel.

Acaption - параметр, устанавливает заголовок окна выводимый вверху на синем фоне.

APrompt - параметр, задает поясняющий текст на сером фоне.

Adefault - определяет строку текста, которая будет показана в поле ввода и выделена синим цветом. При вводе текста надпись сразу пропадет. При отказе пользователя от ввода текста, нажатием кнопок ESC и Cancel функция InputBox возвратит этот параметр.

procedure TForm1.btn1nputNameClick(Sender: TObject);

var soname: string;beginsoname:= InputBox('Пользователь', 'Введите фамилию', '');end;

Компоненты OpenDialog и SaveDialog – окна открытия и сохранения файлов.

Находятся на вкладке палитры компонентов Dialogs.

Delphi - диалоги выбора файла сами по себе ничего не делают, а только предоставляют настройки, сделанные пользователем при выборе файла. Самый важный метод Delphi диалогов - Execute. Он срабатывает в момент нажатия кнопки " открыть " или " сохранить " в окне выбора файла.

В обработчике OnClick кнопки " Открыть... " пишем:


if OpenDialog1.Execute then Memo1.Lines.LoadFromFile(OpenDialog1.FileName);

Для кнопки " Сохранить " пишем:

 

if SaveDialog1.Execute then Memo1.Lines.SaveToFile(OpenDialog1.FileName);

 

Лекция № 17. Компоненты-индикаторы. Компоненты для отображения геометрических фигур.

 

1. Компоненты-индикаторы.

Компонент Progressbar.

Компонент Delphi Progressbar (вкладкаWin32) показывает процесс работы продолжительной операции и по внешнему виду представляет собой графическую полосу. Процесс заполнения полосы идет пропорционально, согласно проценту выполненных действий, слева направо синими кубиками. Цвет компонента изменить нельзя, цвет заполнения имеет синий цвет.

Свойства компонента Min и Max отвечают за диапазон значений, соответственно, минимальной и максимальное значение, принадлежащих к целым числам.

Position - позиция, на которой находится в данный момент индикатор.

Расположим на форме компоненты Label, Button и Progressbar (см. рисунок).

Мы сделаем перебор целых чисел (переменная i) от 0 до 50000 (Max), компонент Label будет показывать, какое сейчас обрабатывается число и немного притормаживать выполнение приложения. Переменная Proc вычисляет процент проделанной работы.

Напишем обработчик кнопки Пуск.

procedure TForm1.Button1Click(Sender: TObject);

var i, proc, Max: integer;

begin

Max:= 50000;

for i:=0 to Max do

begin

proc:= ((i * 100) div Max);

Label1.Caption:= IntToStr(i);

ProgressBar1.Position:= proc;

Application.ProcessMessages;

end;

end;

Выполняя операции, требующие длительных временных затрат, приложение не реагирует на действия пользователя и не реагирует на события приложения, визуальные изменения на форме не отображаются, программа зависает на некоторое время. Подобные ситуации возможны в работе циклов, когда происходит обработка большого числа данных.

Для того чтобы исправить сложившееся положение необходимо использовать метод ProcessMessages. Этот метод принадлежит классу Application (данный класс автоматически создается при создании приложения). Данный метод обязывает приложение обработать поступившие и ожидающие своей очереди сообщения.

Application.ProcessMessages; - дает возможность нашему приложению не зависнуть в процессе вычисления. В противном случае нам придется дождаться окончания вычислений, после чего мы увидим результат, а до этого приложение не будет подавать признаков жизни.

Компонент Gauge.

Компонент Delphi Gauge (вкладка Samples) предназначен для показа процессов, занимающих заметное время, например, обработка каких либо данных, установка приложения на компьютер, копирование больших файлов, и т.п.

На рисунке показаны различные возможные варианты отображения хода процесса компонентом Gauge в зависимости от свойства King, определяющее внешний вид диаграммы:

§ горизонтальный прямоугольник - gkHorizontalBar,

§ вертикальный прямоугольник - gkVerticalBar,

§ сектор круга - gkPie,

§ спидометр - gkNeedle,

§ выводиться только текст -gkText.

 

Компонент Gauge имеет следующие свойства:

MinValue - целочисленный тип (минимальное значение параметра на диаграмме равное 0 %),

MaxValue - целочисленный тип (максимальное значение параметра на диаграмме равное 100 %).

ForeColor задает цвет индикатора. По умолчанию - черный.

BorderStyle задает внешний вид рамки -

§ bsSingle - компонент обрамлен рамкой,

§ bsNone - рамка отсутствует.

BackColor - цвет той части диаграммы, которая свободна от индикатора (по умолчанию белый цвет).

Progress - целочисленный тип, показывает текущее состояние индикатора в процентах.

ShowText - логический тип, при значении TRUE отображает текстовую информацию на диаграмме, при FALSE - цифрового показателя в процентах видно не будет.

 

Компонент Timer.

Компонент Delphi Timer (вкладка System) - это важный не визуальный компонент, который позволяет задавать в приложении необходимые задержки времени между выполнением тех или иных действий.

Данный компонент имеет два главный свойства:

§ Enabled - включает (TRUE) или выключает (FALSE) работу таймера,

§ Interval - задает фиксированный интервал времени в миллисекундах.

Событие, которое может обработано данным компонентом одно, это onTimer. Его можно задать во вкладке Events Инспектора объектов или двойным щелчком на компоненте. Это событие генерируется всякий раз, когда истекает промежуток времени заданный в свойстве Interval с момента последней генерации данного события, пока свойство Enabled будет равно TRUE.

Компонент Delphi Timer недостаточно точный для малых промежутков времени (менее 100 миллисекунд).

Давайте разберем два примера:

1. Установим событие onTimer:

procedure TForm1.Timer1Timer(Sender: TObject);begin Timer1.Enabled:= False; ShowMessage('Программа уже загружена');end;

Через время заданное в свойстве Interval появиться однократное сообщение о загрузке программы.

2. Расположим на форме в дополнение к компоненту Timer компонент Label. Обработчик события onTimer:

procedure TForm1.Timer1Timer(Sender: TObject);begin Label1.Caption:= TimeToStr(now);end;

Мы создали электронные часы. Now - это функция возвращающая дату и время на данный момент. TimeToStr - забирает время и переводит его в строковую переменную.

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...