
- •2. Визуальные компоненты
- •2.1. Свойства
- •2.2. События
- •2.3. Методы
- •If Edit1.CanFocus then Edit1.SetFocus; {перед получением фокуса производится проверка на возможность передачи фокуса компоненту}
- •3. Работа с текстом
- •3.1. Использование надписей
- •3.2. Однострочный редактор
- •3.3. Общие свойства, события и методы компонентов редактирования
- •3.4. Класс tStrings
- •3.5. Многострочный редактор
- •3.6. Использование списков
- •3.7. Таблица String Grid
- •4. Кнопки и переключатели
- •4.1. Работа с кнопками
- •4.1.1. Стандартная кнопка
- •4.1.2. Кнопка с рисунком
- •4.2. Работа с переключателями
- •4.2.1. Переключатель с независимой фиксацией
- •If CheckBox1.Checked then MessageDlg ('Время истекло! ', mtError, [mbОк], 0);
- •4.2.2. Переключатель с зависимой фиксацией
- •4.3. Объединение элементов управления
- •5. Использование форм
- •5.1. Свойства, методы и события форм
- •5.2. Организация взаимодействия форм
- •5.3. Особенности модальных форм
- •5.4. Шаблоны форм
- •5.5. Процедуры и функции, реализующие диалоги
- •5.6. Стандартные диалоги
- •If OpenDialog1.Execute then // при отмене диалога открытие файла не происходит
- •If SaveDialog1.Execute then { Получить имя файла }
- •6.Главное и контекстное меню, панели инструментов
- •6.1. Класс tMenuItem
- •6.2. Cоздание главного и контекстного меню
- •6.3. Динамическая настройка меню
- •6.4. Панели инструментов
- •7. Создание графических изображений
- •7.1. Классы для работы с графикой
- •7.2. Основные компоненты для размещения изображений
- •7.3. Типы графических объектов
- •7.4. Создание диаграмм
- •8. Печать объектов
- •8.1. Класс tPrinter
- •8.2. Печать текста
- •Var fPrn: Text; // объявлена переменная типа Text.
- •8.3. Диалоговые окна для работы с принтером
- •8.4. Печать графических изображений
- •8.4.1. Печать форм
- •8.4.2. Печать диаграмм
- •9. Работа с датами
- •9.1. Преобразование даты
- •9.2. Компоненты для ввода дат
- •10. Сохранение параметров программы.
- •Ini : tIniFile; //объявляем переменную типа inifile
- •Ini : tIniFile; //объявляем переменную типа inifile
- •11. Обработка исключительных ситуаций
- •Var f: File; begin AssignFile(f, 'Somefile.Ext'); try // оператор, в котором возможна ошибка Reset(f); // работы с файлом finally CloseFile(f) end;
5.2. Организация взаимодействия форм
Если одна форма выполняет какие-либо действия с другой формой, то в списке uses раздела implementation (или interface) модуля первой формы должна быть ссылка на модуль второй формы.
Пример организации взаимодействия двух форм – Form1 и Form2, для которых имеются Unit1 и Unit2, соответственно.
unit Unit1; // Приложение включает модуль формы Form1
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
end;
var Form1: TForm1;
implementation
uses Unit2; // Ссылка на модуль второй формы Form2
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject};
begin
Form2.Show; // Вызов второй формы
end;
end.
Delphi позволяет выполнить автоматизированную вставку ссылки на модуль другой формы с помощью команды File | Use Unit (Файл | Использовать модуль).
Форма может выполнять различные операции не только с другой формой, но и с отдельными ее компонентами. В этом случае также нужна ссылка на модуль другой формы.
Пример обращение к компоненту другой формы.
uses Unit2;
procedure TForm1.Button2Click(Sender: TObject) // нажатии кнопки Button2 формы Form1
begin
Label1.Caption := Form2.Edit1.Text; // в Label1 отображается текст Edit1 с Form2
end;
5.3. Особенности модальных форм
Несмотря на открытие модальной формы, программно возможен доступ к компонентам любых созданных форм приложения.
Для отображения формы в модальном режиме служит метод ShowModal.
Пример отображения модальной формы:
procedure TForm1.mnuAboutClick(Sender: TObject); // выбор пункта меню mnuAbout
begin
fmAbout.ShowModal; // отображению формы fmAbout в модальном режиме
end;
Многие формы можно отображать и в немодальном режиме, например: fmAbout.Show;
При закрытии модальной формы функция ShowModal возвращает значение свойства ModalResult типа TModalResult, который можно проанализировать и выполнить соответствующие действия. Возможные значения этого свойства рассматриваются при описании кнопок.
Пример управления диалоговой формой:
// Процедура находится в модуле формы Form1
procedure TForm1.btnDialogClick(Sender: TObject);
var rez :TModalResult;
begin
rez := fmDialog.ShowModal; // Вызов модальной формы (диалога)
if rez = mrOK then // Анализ способа закрытия модальной формы (диалога)
MessageDlg('Диалог принят.', mtInformation, [mbYes], 0);
if rez = mrCancel then
MessageDlg('Диaлог отменен.', mtInformation, [mbYes], 0);
end;
// Процедуры находятся в модуле формы fmDialog
// Закрытие формы и установка значения mrOK коду результата
procedure TfmDialog.btnС1оsеС1ick(Sender: TObject);
begin
ModalResult := mrOK;
end;
// Закрытие формы и установка значения mrCancel коду результата
procedure TfmDialog.btnCancelClick(Sender: TObject);
begin
ModalResult := mrСаnсеl;
end;
Как правило, управление кодом результата диалога выполняется не программно (через свойство ModalResult), а с помощью кнопок.
Пример задания кнопок закрытия формы:
procedure TfmDialog.FormCreate(Sender: TObject); // обработчик события OnCreate формы
begin
fmDialog.BorderStyle := bsDialog;
btnOK.Caption := 'OK'; // свойства кнопки btnOK подтверждения диалога fmDialog
btnOK.Default := true;
btnOK.ModalResult := mrOK;
btnCancel.Caption := 'Cancel'; // свойства кнопки btnCancel отмены диалога
btnCancel.Cancel := true;
btnCancel.ModalResult := mrCancel;
end;
При нажатии любой из кнопок форма автоматически закрывается (без выполнения обработчиков события нажатия кнопок) и возвращает соответствующий результат.
При закрытии формы методом Close всегда возвращается значение mrCancel ее свойства ModalResult. Скрытие формы методом Hide не изменяет значение свойства ModalResult.
Для выполнения типовых действий Delphi предлагает ряд стандартных диалогов. Кроме того, ряд диалоговых форм расположены на странице Dialogs (Диалоги) в Хранилище объектов.