
- •Часть II
- •Главные составные части среды программирования
- •Формы, модули
- •Интеллектуальный редактор
- •Палитра Компонент
- •Дополнительные элементы
- •Структура проекта
- •Структура модуля
- •Проект Delphi
- •Стандартные компоненты
- •Свойства формы
- •События формы
- •Создание форм разного вида
- •Конструирование меню
- •Компоненты
- •Общие принципы создания меню
- •Пункты меню
- •TMainMenu - компонент
- •Основные свойства tMainMenu
- •Основные методы tMainMenu
- •События tMainMenu
- •TMenuItem - класс
- •Основные свойства tMenuItem
- •Основные методы tMenuItem
- •События tMenuItem
- •Рисование и закраска Графические компоненты
- •Свойство объектов Canvas
- •Полный список методов tCanvas
- •Основные события tCanvas
- •Объект tPaintBox
- •TImage - компонент
- •TShape - компонент
- •Файлы и устройства ввода/вывода
- •Использование файловых переменных. Типы файлов
- •Операции ввода/вывода
- •Процедуры и функции для работы с файлом
- •Контроль ошибок ввода/вывода
- •Атрибуты файла. Поиск файла
- •Базовые классы tStream и tHandleStream
- •Свойства и методы класса Tstream
- •Класс tFileStream
- •Класс tMemoryStream
- •Класс tStringStream
- •Оповещение об изменениях в файловой системе
- •Компоненты, используемые для создания баз данных
- •Открытие и закрытие DataSet
- •Работа с Данными
- •Использование SetKey для поиска в таблице
- •Использование фильтров для ограничения числа записей в DataSet
- •Теория ole
- •Ole Контейнер Основные свойства и методы компонента OleContainer.
- •Работа с ms Office в Delphi.
- •Объекты ms Word
- •Свойства и методы объекта Selection
- •Коллекция объектов Shapes
- •Объекты ms Excel
- •Создание объекта ExceLApplication, запуск и визуализация окна приложения
- •Работа с листами рабочей книги
- •Программирование диаграмм Excel в Delphi
- •Коллекция Charts, размещение диаграммы и исходных данных
- •Тип диаграммы
Создание форм разного вида
Существует возможность создавать непрямоугольные окна. За внешний вид формы отвечает регион. Чтобы воспользоваться регионом, необходимо в обработчике события OnFormCreate выполнить действия:
• объявить переменную типа HRgn;
• создать регион функцией CreateRectRgn (для прямоугольного региона) или CreateEllipticRgn (для эллиптического региона);
• установить этот регион для окна функцией SetWindowRgn.
Например, создадим форму в виде окружности.
procedure TfmCircle.FormCreate(Sender: TObject);
Var Region:HRgn;
begin
Region:=CreateEllipticRgn(30,30,400,400);
SetWindowRgn(fmCircle.Handle,Region,true)
end;
Для создания более сложных форм используется объединение нескольких регионов с помощью функции CombineRgn:
CombineRgn (Rez, A, B: HRgn, fmCombineMode: integer): integer;
где Rez – регион, получаемый после объединения,
A, B – исходные регионы,
fmCombineMode – режим объединения.
Режим объединения задаёт правила, по которым происходит получение результата:
Rgn_AND– создаёт регион, являющийся пересечением исходных регионов;
Rgn_COPY – создаёт копию региона A;
Rgn_DIFF – вычитает из A B;
Rgn_OR – объединяет А и B;
Rgn_XOR – исключает из объединения А и B зону перекрытия.
При создании приложений с окнами произвольной формы необходимо предусмотреть возможность закрытия и перемещения окна, так как традиционные элементы управления отсутствуют. Для закрытия окна можно добавить кнопку Выход или создать соответствующий обработчик, например для события OnDblClick. Для обеспечения возможности перемещения окна мышью целесообразно создать процедуру, определяющую щелчок по любой области окна как щелчок по строке заголовка.
В качестве примера приведён код создания прямоугольной формы с круглым отверстием и кнопкой для закрытия.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type
TfmComby = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
var
fmComby: TfmComby;
implementation
{$R *.dfm}
procedure TfmComby.FormCreate(Sender: TObject);
Var A,B:HRgn;
begin
A:=CreateRectRgn(20,20,400,400);
B:=CreateEllipticRgn(125,125,285,285);
CombineRgn(A,A,B,Rgn_DIFF);
SetWindowRgn(fmComby.Handle,A,true)
end;
procedure TfmComby.Button1Click(Sender: TObject);
begin
Сlose;
end;
end.
Конструирование меню
Слово меню происходит от латинского тiпute, что означает нечто очень маленькое или подробное. Как известно каждому пользователю Windows, раскрывающееся меню представляет собой подробный список таких команд, как Ореп или Exit. В большинстве приложений в главном меню перечислены имена одного или нескольких раскрывающихся подменю. Вы также можете создавать всплывающие меню, щелкнув при этом правой кнопкой мыши.
Просмотреть разработанные с умом меню - все равно что надеть любимый свитер. Вам не нужно прилагать слишком много усилий для создания в своем приложении удобных меню. Как будет показано в этой главе, для этих целей в Delphi имеется два специальных компонента и несколько способов создания удобных меню с такими возможностями, которые, наверняка, придутся пользователям по душе.