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

Основы программирования в Delphi. Учебно-методическое пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
Основы программирования в Delphi
cbGrayed: Edit1. Text:= „Затемнено‟ ; cbChecked : Edit1. Text :=‟Включено „ ; end; end;
Код обработчика события OnClick для переключателей имеет вид: procedure TForm. RadioBotton1Click (Sender: TObject);
begin if RadioButton1.Checked then Edit2.Text := „Включена первая‟; end;
procedure TForm. RadioBotton2Click (Sender: TObject); begin if RadioButton2.Checked then Edit2.Text := „Включена вторая‟; end;
Группа переключателей (TRadioGroup)
Вместо использования нескольких переключателей удобнее использовать компонент RadioGroup (группа переключателей) из панели Стандартные.
Свойство Items этой компоненты определяет названий переключателей.
При выборе этого свойства в окне Инспектора объектов появляется редактор строк, для ввода названий переключателей. Количество введенных строк опре-
деляет количество переключателей и их названий.
Свойство ItemIndex определяет номер выбранного переключателя (первый пункт имеет индекс 0). Свойство Caption определяет заголовок панели группы переключателей. Событие OnClick вызывается при выборе одного из пунктов переключателей.
Пример. Разместим на форме группу переключателей для выбора марки автомобиля и текстовое поле Edit1, для указания выбранного автомобиля (рис.
11.3).
81
Основы программирования в Delphi
Рис. 11.3 Использование RadioGroup
Определите свойство Items и измените свойство ItemIndex на 0 (по умол­чанию выбран режим 1). При выборе одного из пунктов происходит событие
OnClick. Ниже представлен обработчик этого события.
procedure TForm1.RadioGroup1Click(Sender: TObject); begin case RadioGroup1.ItemIndex of 0: Edit1.Text:= Вам нравится - Mersedes'; 1: Edit1.Text:= Вам нравится - Fiat'; 2: Edit1.Text:= Вам нравится - Skoda'; 3: Edit1.Text:= Вам нравится - Mazda'; 4: Edit1.Text:= Вам нравится - Toyota'; end; end;
Компонент Полоса прокрутки(TScrollBar)
Полосы прокрутки используются для прокрутки данных в списках, тексто­вых областях. Используется два вида полосы прокрутки: горизонтальная и вер­тикальная. Оба вида полосы прокрутки определяется одним компонентом
TscrollBar из панели Стандартные.
Свойство Kind определяет вид Полосы прокрутки:
sbHorizontal - горизонтальная полоса
82
Основы программирования в Delphi
scLineUp
Нажата кнопка ▲или◄(или клавиши ↑, ←)
scLineDown
Нажата кнопка ▼или ►(или клавиши ↓, →)
scPageUp
Нажата клавиша PageUp или произведен щелчок слева от ползунка (выше ползунка)
scPageDown
Нажата клавиша PageDown или произведен щелчок справа от ползунка (ниже ползунка)
scPosition
Завершено перемещение ползунка перетаскиванием
scTrack
Идет перемещение ползунка перетаскиванием
scTop
Ползунок установлен в крайнее левое или верхнее положение
scBotton
Ползунок установлен в крайнее правое или нижнее положе­ние
scEndScroll
Операция прокрутки завершена
sbVertical - вертикальная полоса
При перетаскивании ползунка, значение свойства Position автоматически
изменяется пропорционально положению ползунка в некоторых пределах. Диа-
пазон изменения этого свойства определяется значением свойств Min и Max. Полностью переписать функционирование полосы прокрутки можно, создав обработчик события OnScroll. Обработчик этого события имеет следующий заголовок:
procedure TMyForm. ScrollBar1Scroll (Sender: TObject;
ScrollCode: TScrollCode; var ScrollPos: Integer);
Здесь в переменную ScrollPos можно занести новое значение ползунка (которое потом автоматически скопируется в свойство Position.). Новое значе-
ние надо сформировать на основе анализа действия пользователя, описываемых
параметром ScrollCode:
Пример. На форме разместим горизонтальную полосу прокрутки и тек­стовое поле Edit1 (рис. 11.4). Напишем обработчик события OnChange, кото­рое выводит значение свойства Position в текстовом поле Edit1. Для этого до­статочно сделать двойной щелчок на компоненте ScrollBar и написать код приведенный ниже.
Рис. 11.4 Полоса прокрутки
83
Основы программирования в Delphi
procedure TForm1.ScrollBar1Change(Sender: TObject); begin
Edit1.Text:= IntToStr(ScrollBar1.Position);
end;
11.2. Создание меню windows-приложения
Без меню не обходится ни одно приложение Windows. В программахт ис­пользуются три вида меню: Главное меню, которое появляется на верхней строке окна, ниже главного меню располагается Пиктографическое меню и Контекстное меню, которое появляется при нажатии правой кнопки мыши.
Рассмотрим создание главного и пиктографического меню. Создание кон-
текстного меню связано с событиями мыши. Поэтому создание этого меню бу­дет рассмотрено позже.
Создание главного меню
Чтобы добавить к разрабатываемой программе главное меню, на панели
компонентов Стандартные надо выбрать компонент TMainMenu и поместить его на форме в произвольном месте. При этом, система Delphi присвоит свой­ству Name этого компонента значение MainMenu1. Заметим, что одна форма
может содержать несколько главных меню, которые друг от друга будут отли-
чаться со значением свойства Name.
Компонент TMainMenu невизуальный. Это означает, что хотя он виден на
форме как небольшой квадрат, в окне созданной программы в таком виде ком­понент не появится. Представление его на форме в виде квадрата, просто ука-
зывает на наличие в программе объекта, ответственного за меню.
Пункты меню создаются с помощью специального редактора меню. Редак­тор меню вызывается двойным щелчком на размещенном компоненте TMain- Menu. Первоначально меню пустое. На рис. 11.5 указан Редактор меню для за- полненного случая.
Структура меню определяется совместно с Инспектором объектов.
84
Основы программирования в Delphi
Рис. 11.5. Редактор меню
Для ввода нового пункта меню в окне Инспектора объектов на поле Cap­tion введите описание нового пункта и нажмите Enter. При этом в редакторе
меню появляется новый пункт меню и рядом появится пустая клетка, место для следующего пункта меню. Теперь следует выбрать новую пустую клетку и вве-
сти описание нового пункта меню.
По мере определения новых пунктов меню система Delphi автоматически определяет значения свойства Name пунктов меню, как N1, N2, N3 и т.д. Эти имена можно переименовать на более смысловые имена. Например, mnuFile, mnuColor и т.п., здесь префикс mnu используется для обозначения пунктов ме- ню.
Когда меню подготовлено, редактор надо закрыть. При этом на форме по­явится меню, в точности соответствующее тому, как оно будет выглядеть в бу-
дущей программе.
Создание обработчиков пунктов меню
Чтобы создать обработчик события, возникающего при выборе одного из
пунктов меню, надо в Редакторе меню дважды щелкнуть на соответствующем пункте. Система Delphi 7 автоматически создает заготовку процедуры обработ­ки события. Например, для пункта Выход (в меню Файл):
procedure TForm1.mnuExitClick ( Sender: TObject);
begin
…
end;
Здесь предполагается, что пункт Выход имеет значение свойства Name – mnuExit, а форма имеет имя Form1. Чтобы закрыть приложение при выборе
пункта Выход, надо вызвать метод Close класса TForm. Если закрывается глав­ная форма, то завершается и работа всего приложения.
Перед закрытием программы желательно проверить, можно ли еѐ в дан-
ный момент корректно закрыть (иногда закрытие окна не допускается, напри-
мер, когда запущено подчиненное приложение – поток, который должен завер­шиться в первую очередь). Подобную проверку выполняет функция Close- Query. Эта функция возвращает значение True, если в данный момент можно
корректно закрыть приложение. Таким образом, код обработчика события
пункта меню имеет вид:
85
Основы программирования в Delphi
procedure TfrmCalc. mnuExitClick ( Sender: TObject);
begin if CloseQuery then Close;
end;
Задание. Создайте меню, которое изменяетет цвет формы (рис.3.4). Для этого в обработчике пункта меню следует изменить свойство Color формы. Например, для формы Form1, обработчик пункта меню должен содержать выражение:
Form1.Color := clGreen;
Желаемое значение свойства Color можно определить путем просмотра значения свойства Color формы в Навигаторе объектов.
Создание пиктографического меню
Для создания пиктографического меню разместим на форме панель ин-
струментов (компонент TToolBar из панели компонентов Win32). Панель ин-
струментов является областью, на которой могут размещаться кнопки меню.
Для добавления новых кнопок (элементов класса TToolButton) пиктогра- фического меню из контекстного меню панели инструментов вызывается ко­манда Новая кнопка.
Ниже определим меню, кнопки которого дублируют функции главного меню. Для этого разместите 4 кнопки, которые будут определять цвет формы. Далее следует определить картинки для этих кнопок. Для этого следует выпол-
нить следующие действия:
1. С помощью команды Сервис/ImageEditor вызывем редактор рисунков и создадим четыре рисунка 16х16-пикселей. Рисунком может быть буква, с ко­торого начинается наименование цвета. Например, З, С, Кр и т.д.
2. На форме разместим компонент ImageList из панели Win32, из кон­текстного меню этой компоненты вызовем редактор ImageList Editor и с помо­щью кнопки Добавить выберем файлов, которые содержат рисунки 16 х 16 пикселей.
3. Свойству Images панели инструментов присвоим имя компоненты Im-
ageList.
4. Выделим кнопку панели инструментов и свойству ImageIndex присвоим номер индекса картинки из списка ImageList.
Следующим шагом создания меню является написание обработчиков этих
кнопок. Заголовки этих обработчиков появляются при двойном щелчке на этих
86
Основы программирования в Delphi
кнопках. В этом примере обработчик должен содержать только одно выраже-
ние, например,
Form1.Color:= clGreen; //Зеленый цвет
11.3. Диалоговые окна ввода-вывода
Создание диалога для ввода
В Windows-приложениях для ввода данных обычно используют специаль-
ные диалоговые окна. Эти окна появляются только при вводе данных, после
нажатия кнопки OK или Cancel эти окна закрываются. Для получения вводимо­го значения можно использовать две функции: InputBox и InputQuery.
Функция InputBox. Обе функции отображают диалоговое окно с полем
ввода и двумя кнопками OK и Cancel. Например, при выполнении фрагмента программы
var InputString: string;
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
InputString:=InputBox ('Диалог Input', 'Введите N группы', '1211');
в окне приложения появится диалоговое окно вида, представленного на
рисунке 11.6.
Из сравнения этого диалога и параметров функции InputBox становится яс-
но, что это функция имеет три параметра в виде строки:
- первая строка ('Диалог Input') определяет заголовок окна:
- вторая строка ('Введите N группы') определяет поясняющее сообщение:
- третья строка ('1211') определяет значение строки по умолчанию.
Рис. 11.6. Диалоговое окно Input
87
Основы программирования в Delphi
Если пользователь щелкнет на кнопке OK, то функция возвращает значе-
ние из поля ввода, а если на кнопке Cancel, то функция возвращает значение, указанное третим параметром (значение по умолчанию). В этом фрагменте воз­вращаемое значение присваивается к переменной InputString.
Функция InputQuery имеет следующий формат вызова:
function InputQuery (const Строка1, Строка2: string; var Value: string): Boolean;
Параметры Строка1 и Строка2 имеют такие же назначения, что и в функ-
ции InputBox. Параметр Value содержит значение, отображаемое и редактируе-
мое в поле ввода. Таким образом, эта функция позволяет редактировать строко­вую переменную, которая заранее определена. Ниже приведем фрагмент про-
граммы, где показан использование этой функции
var InputString: string;
ClickOK :boolean;
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
InputString:= '1211'; ClickOK:=InputQuery ('Диалог Input', 'Введите N группы', InputString);
При выполнении этой программы появляется такой же диалог, но в этом
случае этот диалог позволяет редактировать значение переменной InputString.
Отображение окна сообщений
Для вывода окна сообщений, в Delphi имеется различные функции. Наибо-
лее простой из них является процедура ShowMessage. Формат вызова этой про­цедуры покажем в следующем примере:
ShowMessage („Я студент факультета математики и информатики НИСПТР‟);
При выполнении этого выражения появляется окно сообщения вида, пред-
ставленного в рис. 11.7. Это окно удобно использовать при отладке программы,
чтобы узнать до какого участка доходит выполнение программы.
Рис. 11.7 Процедура ShowMessage
88
Основы программирования в Delphi
Функция MessageDlg выводит окно сообщения с несколькими кнопками,
что предоставляет некоторый выбор. Формат вызова этой функции следующий:
function MessageDlg (const Сообщение: string; DlgType: TmsgDlgType; Buttons: TmsgDlgButtons; HelpCtx: Longint): Word;
Параметр Сообщение определяет строку сообщения. Параметр DlgType
определяет тип значка, который выходит перед сообщением. Соответствие па-
раметра и значка следующие:
mtError - - используется для вывода сообщений об ошибке;
mtConfirmation - - используется при выводе подтверждающего сообще-
ния;
mtWarning - - используется при выводе предупреждающего сообщения;
mtInformation - - используется при выводе информационного сообще-
ния;
mtCustom – выводит сообщение без значка.
Параметр Buttons определяет тип выводимых кнопок и может принимать
следующие значения: mbYes, mbNo, mbOk, mbCancel, mbAbort, mbRetry, mbIg- nore, mbAll, mbYesNoCancel, mbOkCancel и другие.
Для того чтобы указать несколько кнопок, следует перечислить их всех в
квадратных скобках через запятую. Например, выражение вида:
MessageDlg ('Хотите выключить компьютер?', mtConfirmation,
[mbYes,mbNo], 0);
выводит окно сообщения вида, представленного в рисунке 11.8.
89
Основы программирования в Delphi
Рис. 11.8 Окно потверждения
Параметр HelpCtx определяет идентификатор ID контекста файла справки.
Как указано в примере, если файл справки не требуется, то значение этого па-
раметра равен нулю.
Функция возвращает обно из следующих значений, определяющих вы-
бранную пользователем кнопку:
mrNone, mrAbort, mrYes, mrOk, mrRetry, mrNo, mrCancel, mrIgnore, mrAll.
Проверку выбора кнопки можно выполнить следующим образом:
if MessageDlg ('Хотите выключить компьютер?', mtConfirmation [mbYes, mbNo], 0)= mrYes then begin
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
end;
В Delphi также имеется более развитые функции вывода сообщений. Например, функция MessageDlgPos(…, X,Y:integer) выводит окно сообщения в позиции, указанной параметрами Х и Y. Другие параметры этой функции пол­ностью совпадает с параметрами функции MessageDlg.
Отметим, что аналогичные окна сообщений, но со цветными изображени-
ями предупредительных знаков можно получить, вызвав функцию MessageBox для объекта Application. Например,
if Application.MessageBox („Текст сообщения‟, „Заголовок окна сообще- ния‟,
MB_OKCANCEL + MB_ICONEXCLAMATION) < > IDOK
then . . . . . . . . . . . . . . . . . . . . . . . . .
Как видно, параметры этой функции аналогичны, параметрам функции
MessageDlg.
11.4. Добавление новой формы
При вводе данных более сложной структуры, диалоговое окно ввода сле­дует оформить в виде отдельной формы. В текстовых полях этой формы поль-
зователем формируется вводимые данные, которые после нажатия кнопки OK передаются на приложение.
Новая форма добавляется к текущему проекту командой Файл/Создать/Форма. При этом появится новая пустая форма и соответству-
90
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]