Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Визуальное программирование / Визуальное программирование-лекция-3

.doc
Скачиваний:
50
Добавлен:
07.06.2015
Размер:
173.57 Кб
Скачать

Лекция № 3 DELPHI (конспекты лекций)

Основы программирования в среде DELPHI

  1. Использование визуальных компонентов

Для создания интерфейса приложений Delphi предлагает большой набор визуальных компонентов, основные из которых располагаются на вкладках Standard, Additional и Win32 палитры компонентов.

Компонент Меню (TMainMenu)

Компонент TMainMenu предназначен для добавления к программе главного меню, без которого не обходится практически ни одно из приложений Windows.

Для добавления к разрабатываемой программе меню, надо выбрать на панели компонентов Standard компонент TMainMenu и поместить его на форме в произвольном месте. Компонент TMainMenu невизуальный. На форме он виден как небольшой квадрат, в окне созданной программы он в таком виде не появится.

Создается меню с помощью специального редактора. Редактор меню вызывается двойным щелчком на объекте MainMenu1. Первоначально меню пустое. В свойстве Caption Инспектора объектов можно ввести название первого пункта меню (например, &Файл) с указанной горячей клавишей и нажать клавишу Enter. Редактор меню переключится обратно в проектируемое меню, где уже появится первый пункт. Последующие пункты вводятся аналогично. Для вставки/добавления новых пунктов используется клавиша Insert, для удаления клавиша Delete. Чтобы вставить линию-разделитель между пунктами меню, надо в свойстве Caption в первой позиции указать символ «-» (дефис). После подготовки меню и закрытия редактора меню на форме появится меню, соответствующее тому, как оно будет выглядеть в будущей программе.

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

Procedure TForm1.N4Click (Sender: TObject);

Begin

End;

N4 – это идентификатор пункта меню внутри программы. В описании класса TForm1 он (наряду с другими пунктами: N1, N2, N3) декларирован следующим образом:

N4: TMenuItem;

Класс TmenuItem предназначен для объявления пунктов меню. Чтобы создать, например, пункт меню Выход, надо в реализации метода N4Click вызвать метод Close класса TForm, наследником которого является класса TForm1.

Procedure TForm1.N4Click (Sender: TObject);

Begin

Close

End;

Этот метод выполняет корректное закрытие текущей формы (окна).

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

Procedure TForm1.N4Click (Sender: TObject);

Begin

If CloseQuery Then Close

End;

Разработчики Delphi рекомендуют другой способ завершения программы – выполнение команды

Application.Terminate;

Переменная Application – глобальная переменная, она имеет тип TApplication и содержит базовый набор полей и методов, характерных для любой программы Windows.

Компонент Контекстное меню (TPopupMenu)

Контекстное меню, вызываемое по щелчку правой кнопки мыши, является стандартной и удобной возможностью многих приложений Windows. Компонент TPopupMenu (Всплывающее меню) предназначен для создания такого рода меню.

Компонент TPopupMenu размещается на форме аналогично компоненту TMainMenu. Структура его формируется также аналогично. Отличие состоит в том, что в контекстном меню не может быть нескольких разделов верхнего уровня, так как все его пункты располагаются в одном вертикальном столбце.

Для пункта меню выход можно получить.

Procedure TForm1.N7Click (Sender: TObject);

Begin

If CloseQuery Then Close

End;

Для вызова созданного меню из программы достаточно для соответствующего объекта во вкладке Events Инспектора объектов задать значение пункта PopupMenu равным имени созданного контекстного меню (по умолчанию PopupMenu1).

Можно создать обработчик щелчка правой кнопкой мыши на форме и вручную, хотя это более трудоемко. Для обработки щелчка мыши в DELPHI используются три события OnClick, OnMouseDown (при нажатии кнопки мыши) и OnMouseUp (при отпускании кнопки мыши). В рассматриваемом случае правильнее обрабатывать отпускание кнопки.

Чтобы добавить в программу обработчик такого события, надо в Проектировщике форм выделить главную форму и в Инспекторе объектов на вкладке Events дважды щелкнуть на строке с надписью OnMouseUp. Система DELPHI сгенерирует следующий текст.

Procedure TForm1.FormMouseUp (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

Begin

End;

В теле данной процедуры необходимо активизировать контекстное меню PopupMenu1. Это осуществляется с помощью метода Popup() с двумя параметрами – координатами верхнего левого угла меню. Координаты указываются в экранной системе отчета, а не в границах клиентской области программы.

Для определения координат правильнее пересчитать экранные координаты точки щелчка в координаты клиентской области с помощью метода формы GetClientOrigin. Эта функция обращается к стандартным функциям Windows и возвращает корректное значение смещения. Результирующее значение имеет тип TPoint (Координатная точка), представляющий собой запись из двух элементов: X и Y.

Procedure TForm1.FormMouseUp (Sender: TObject; Button: TMouseButton; Shift: TshiftState; X, Y: Integer);

Var P: TPoint;

Begin

P:= GetClientOrigin;

If Button = mbRight Then PopupMenu1.Popup (P.X+X, P.Y+Y)

End;

Компонент независимый переключатель (Флажок) (TCheckBox)

Используется для фиксации включенного или выключенного состояния (одного из двух).

Пользователь может указать свое решение типа Да/Нет или Да/Нет/Не_Знаю (в последнем случае в окошке компонента устанавливается флаг выбора, но само окошко закрашивается серым цветом). Это решение отражается в свойстве State компонента, доступном как для чтения, так и для записи. В составе диалогового окна может быть несколько компонентов TcheckBox. Состояние любого из них не зависит от состояния остальных, поэтому такие переключатели называют независимыми.

Типичное применение компонента:

If CheckBox1.Checked Then

…….

Else

…….

Или:

Case CheckBox1.State of

cbChecked : …;

cbUnChecked : …;

cbGrayed : …;

End;

Свойства компонентов:

Type TleftRight = (taLeftJustify, taRightJustify);

Property Alignment: TleftRight;

Определяет положение текста: taLeftJustify – с левой стороны компонента; taRightJustify – с правой.

Property AllowGrayed: Boolean;

Разрешает/запрещает использование состояния cbGrayed (Не знаю).

Property Caption: String;

Содержит связанный с компонентом текст.

Property Checked: Boolean;

Содержит выбор пользователя типа Да/Нет. Состояния cbUnChecked и cbGrayed отражаются как False.

Type TCheckBoxState = (cbUnChecked, cbChecked, cbGrayed);

Property State: TСheckBoxState;

Содержит состояния компонента; cbUnChecked – нет; cbChecked – да; cbGrayed – не знаю.

Компонент зависимый переключатель (TRadioButton).

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

В компонент-контейнер формы помещается как минимум два компонента TRadioButton. Они могут иметь только два состояния определяемые свойством Checked. Если в одном компоненте это свойство принимает значение True, во всех других компонентах, расположенных в том же контейнере, свойства Checked принимают значения False.

Компонент список выбора (TListBox).

Компонент класса TListBox представляет собой стандартный для Windows список выбора, с помощью которого пользователь может выбрать один или несколько элементов выбора. Список может содержать не только строки, но и произвольные изображения.

Свойства компонента:

Type TBorderStyle = bsNone.. bsSingle;

Property BorderStyle : TborderStyle;

Определяет стиль рамки: bsNone – нет рамки; bsSingle – рамка толщиной 1 пиксель.

Property Canvas: TCanvas;

Канва для программной прорисовки элементов.

Property Columns: LongInt;

Определяет количество столбцов элементов в списке

Property ExtendedSelect: Boolean;

Если ExtendeSelect=True и MultiSelect=True, выбор элемента без одновременного нажатия Ctrl или Alt отменяет предыдущий выбор.

Property IntegralHeight: Boolean

Если IntegralHeight=True и Style<>lbOwnerDrawVariable, в списке выбора показывается целое число элементов.

Property ItemHeight: Integer;

Определяет высоту элементов в пикселях для Style= lbOwnerDrawFixed.

Property ItemIndex: Integer;

Содержит индекс сфокусированного элемента. Если MultiSelect=False, совпадает с индексом выделенного элемента.

Property Items: Tstrings;

Содержит набор строк, показываемых в компоненте.

Property MultiSelect: Boolean;

Разрешает/отменяет выбор нескольких элементов.

Property SelCount: Integer;

Содержит количество выбранных элементов

Property Selected [X: Integer]: Boolean;

Содержит признак выбора для элемента с индексом X (первый элемент имеет индекс 0).

Property Sorted: Boolean;

Разрешает/отменяет сортировку строк в алфавитном порядке.

Type TListBoxStyle = (lbStandrd, lbOwnerDrawFixed,lbOwnerVariable);

Property Style: TlistBoxStyle;

Определяет способ прорисовки элементов: lbStandard – элементы рисует Windows; lbOwnerDrawFixed – рисует программа, все элементы имеют одинаковую высоту, определяемую свойством ItemHeight; lbOwnerVariable –рисует программа, элементы имеют разную высоту.

Property TabWidth: Integer;

Задает ширину табуляционного пробела.

Property TopIndex: Integer;

Индекс первого видимого в окне элемента.

Создание элементов списка компонента реализуется с помощью методов его свойства ItemsAdd, Append, Insert или LoadFromFile.

Пример.

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

ListBox1.Items.Add('Желтый');

Case ListBox1.ItemIndex Of

0: Form1.Color:=clred;

1: Form1.Color:=clgreen;

2: Form1.Color:=clyellow;

End;

end;

Компонент раскрывающийся список выбора (TComboBox).

Представляет собой комбинацию списка TДistBox и редактора TEdit, большинство его свойств и методов заимствовано у этих компонентов.

Компонент Группа переключателей (TRadioGroup).

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

После размещения на форме компонента TRadioGroup входящие в него переключатели задаются перечислением их названий. Эти названия вводятся в свойство Items (пункты, параграфы) имеющее тип TString. Для ввода нескольких строк можно использовать специальный редактор вызываемый щелчком по кнопке , расположенной справа в строке, описывающей свойство Items. Чтобы сделать некоторые буквы в названиях переключателей «горячими» перед ними нужно указать значок &.

Свойство Caption определяет заголовок группы. Свойство Columns задает число столбцов образованных переключателями. Свойство ItemIndex содержит номер выделенного переключателя (значение по умолчанию – 1 показывает, что не один переключатель не выбран). Если в момент появления компонента на экране в каком-то переключателе выбор уже должен быть установлен, то необходимо изменить значение свойства ItemIndex с помощью Инспектора объектов или программным путем. Например, в обработчике OnActivate формы. Проанализировать выбор пользователя можно, например следующим образом:

Case RadioGroup1.ItemIndex of

0: …; {выбран 1-й переключатель}

1: …; {выбран 2-й переключатель}

else

… {не выбран ни один переключатель}

end;

Динамически реагировать на выбор нового переключателя в группе можно с помощью обработчика событий OnClick.

Компонент полоса прокрутки (TScrollBar).

Полосы прокрутки применяются для перемещения в других элементах управления (текстовых областях, списках и т.д.). Однако их можно применять и для визуального управления значением числовой величины с помощью ползунка.

Свойства компонента:

TScrollBarKind=(sbHorizontal, sbvertical);

Property Kind: TscrollBarKind;

Определяет ориентацию компонента: sbHorizontal – бегунок перемещается по горизонтали; sbvertical – по вертикали.

Property LargeChange: TscrollBarInc;

“Большой” сдвиг бегунка (при щелчке мышью рядом с концевой кнопкой).

Property Max: Integer;

Максимальное значение диапазона изменения числовой величины.

Property Min: Integer;

Минимальное значение диапазона изменения числовой величины.

Property Position: Integer;

Текущее значение диапазона изменения числовой величины.

Property SmallChange: TScrollBarInc;

“Малый” сдвиг бегунка (при щелчке мышью по концевой кнопке).

Определить значения свойств Min, Max, Position можно и с помощью метода SetParams:

Procedure SetParams (APosition, AMin, AMax: Integer);

Пример.

Обработчик события OnScroll.

procedure TForm1.ScrollBar1Scroll(Sender: TObject; ScrollCode: TScrollCode;

var ScrollPos: Integer);

begin

Label1.Caption:=IntToStr(ScrollBar1.Position)

end;

Компонент панель группирования (TGroupBox).

Является контейнером для размещения дочерних компонентов, представляет собой прямоугольное окно с рамкой и текстом в разрыве рамки. Обычно с его помощью выделяется группа управляющих элементов, объединенных по функциональному назначению

Компонент панель (TPanel).

Является контейнером общего назначения. В отличии от TGroupBox он не имеет заголовка. Компонент имеет развитые средства создания различных эффектов трехмерности за счет использования внешней и внутренней кромок.

8