WithHorzScrollBar do
Begin
Margin:=25;
Increment:=10;
Button1.Left:=0;
end;
end;
procedureTForm1.Button1Click(Sender: TObject);
begin
Button1.Left := Button1.Left + 25;
Form1.Caption := IntToStr(HorzScrollBar.Range);
end;
Обратите внимание, что значение свойства Margin назначается в момент создания формы.
Создание, показ и уничтожение формы
По умолчанию при старте программы все подключенные к проекту формы создаются автоматически. Первой на свет появляется главная форма проекта, а затем все остальные согласно очередности, указанной программистом.
Для того чтобы изменить очередность создания форм, выберите пункт меню Project → Options и на вкладке Forms диалогового окна
Project Options (рис. 9.3) расставь те формы в списке Autocreate forms в надлежащем порядке. Более того, реализована возможность отказа от автоматического создания формы. Для этого достаточно перевести форму в разряд доступных, т. е. из левого списка переместить ее в список Available forms. Однако прежде чем обращаться к такой форме, программист должен ее создать. Раз мы заговорили о создании формы, то первое, что стоит обсудить, так это ее конструктор:
constructorCreate(AOwner: TComponent);
Вызов метода Create() полезен при создании форм, входящих в список Available forms. Допустим, что форма Form2 нашего проекта создается вручную. Тогда листинг программы будет выглядеть следующим образом:
varForm2:TForm2;
Begin
if notAssigned(Form2) then// проверка на существование формы
Begin
Form2:=TForm2.Create(Application);
Form2.Show; // вывод формы на экран
end;
end;
При ссылке одного модуля на другой не забудьте добавить в строку usesимя нового модуля. Другой вариант: выберите пункт меню File Ж Use unit (Alt+F11) и в списке модулей найдите нужный модуль.
Сразу отметим существование альтернативного конструктора формы:
constructorCreateNew(AOwner: TComponent; Dummy: Integer = 0); virtual;
Основным достоинством конструктора CreateNew() считается возможность создать новый экземпляр формы без использования файла ресурсов формы .dfm. Для отображения формы на экране монитора обычно применяют метод:
procedureShow;
Такой способ вывода формы на экран называется немодальным. В этом случае пользователь получает право свободно переключаться между окнами
приложения. Для вызова формы в модальном режиме используется метод:
functionShowModal: Integer;
Модальная форма отличается строптивым нравом. Она отображается поверх
всех открытых окон. Более того, пользователь не сможет получить доступ
к другим окнам проекта, пока не будет закрыта модальная форма.
Для передачи результата модальной форме на ее поверхности обычно размещают кнопки класса TBitBtn (см. главу 8 «Стандартные компоненты»).
Закрываясь, модальная форма возвращает целочисленное значение, называемое модальным результатом. Это не что иное, как решение пользователя, нажавшего ту или иную кнопку.
typeTModalResult = Low(Integer)..High(Integer);
Возможные значения модального результата представлены в табл. 9.2.
Таблица 9.2. Возможные значения TModalResult
Константа | Значение | Описание |
mrNone | Значение по умолчанию - None | |
mrOk | idOk | Пользователь нажал кнопку OK. |
mrCancel | idCancel | Пользователь нажал кнопку CANCEL. |
mrAbort | idAbort | Пользователь нажал кнопку ABORT. |
mrRetry | idRetry | Пользователь нажал кнопку RETRY |
mrIgnore | idIgnore | Пользователь нажал кнопку IGNORE. |
mrYes | idYes | Пользователь нажал кнопку YES. |
mrNo | idNo | Пользователь нажал кнопку NO. |
mrAll | MrNo+1 | Используется для определения последней константы. |
Анализируя модальный результат закрывающейся формы, программист получает возможность направлять поведение программы в определенное русло:
iffrmSelect.ShowModal=mrOK then
Begin
{операторы для результата mrOK}
end else{операторы для результата,отличного от mrOK};
Результат модальной операции заносится в свойство формы:
propertyModalResult: TModalResult;
По умолчанию это свойство установлено в 0 (константа mrNone). Присвоение
свойству ModalResult ненулевого значения приводит к вызову метода закрытия формы, и в качестве результата метода ShowModal() возвращается значение этого свойства. Отмечу, что столь серьезный метод для показа формы, как ShowModal(), применим далеко не всегда. Например, в случаях, когда вы считаете возможным допустить пользователя к работе с несколькими формами одновременно, показ формы целесообразнее осуществлять при помощи метода Show(). Использование метода Show() является аналогом присвоения значения true свойству Visible той же формы.
Мы обсудили создание и показ форм, а теперь рассмотрим методы их сокрытия и уничтожения. Простейшим способом спрятать (не уничтожая) форму может стать присвоение свойству Visible значения false. Точно такого же результата можно достигнуть при помощи процедуры:
procedureHide;
Для того чтобы уничтожить экземпляр формы максимально деликатно, рекомендую применять метод:
procedureRelease;
Это ближайший соратник методов Free() и Destroy(), добивающийся тех же результатов: он очищает память компьютера от бренных останков формы, но, в отличие от последних, делает это с некоторым уважением – дожидается завершения обработки событий, инициированных этой формой или ее компонентами.
Обработка событий
Как и любой оконный элемент управления, форма способна реагировать на стандартные события системы. Кроме того, форма может похвастаться рядом своих собственных обработчиков событий, объявленных в основном в TCustomForm.
Дата добавления: 2016-03-15; просмотров: 449;