Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Bssingle размер окна менять не разрешается. Вид границ — тонкая полосаСодержание книги
Поиск на нашем сайте
BsNone Размер окна менять не разрешается. Видимая граница отсутствует BsSizeable Стандартная граница, допускающая изменение размеров окна BsToolWindow Аналогично bsSingle, но высота заголовка окна уменьшена BsSizeToolWin Аналогично bsSizeable, но высота заголовка окна уменьшена Лучше всего использовать значение bsDialog, специально предназначенное для оформления диалоговых окон. 2. Свойство BorderWidth (Ширина границы окна) определяет область, на которой не Разрешается размещать элементы управления. Для этого свойства надо задать подходящее значение (например 2), потому что диалоговые окна имеют доста- точно широкие границы.__ ДРУГОЕ Работа с формами в Delphi. В Windows основной элемент пользовательского интерфейса - форма. В Delphi почти каждый проект имеет по крайней мере одно окно - главное окно приложения. Все окна в Delphi основаны на объекте TForm. В данной статье мы рассмотрим основные события, участвующие в "жизни формы". Форма Delphi Формы имеют свои свойства, события и методы, при помощи которых Вы можете управлять видом и поведением формы. Форма, это обычный компонент Delphi, но в отличие от других, её нет на панели компонентов. Обычно форма создаётся при создании нового проекта (File | New Application). Вновь созданная форма будет главной формой приложения. Дополнительные формы в проекте создаются через File | New Form. Так же существуют и другие способы создания форм, но здесь мы не будем рассматривать их... Как и любой другой компонент (объект) форма имеет свои методы и реагирует на события. Давайте рассмотрим некоторые из этих событий... Рождение формы в Delphi OnCreate -> OnShow -> OnActivate -> OnPaint -> OnResize -> OnPaint... OnCreate Событие OnCreate возникает при создании TForm и только один раз. При создании формы (у каторой свойство Visible установлено в True), события произойдут в следующем порядке: OnCreate, OnShow, OnActivate, OnPaint. В обработчике события OnCreate можно сделать какие-либо инициализационные действия, однако, любые объекты созданные в OnCreate будут уничтожены в событии OnDestroy. OnShow Это событие генерируется, когда форма станет видимой. OnShow вызывается сразу перед тем, как форма станет видимой. Это событие случается, если установить свойство формы Visible в True, либо при вызове методов Show или ShowModal. OnActivate Это событие генерируется, когда форма становится активной, тоесть когда форма получает фокус ввода. Это событие можно использовать для того, чтобы сменить элемент формы который должен получить фокус. OnPaint, OnResize Эти события вызываются каждый раз, когда форма изначально создаётся. При этом OnPaint вызывается каждый раз, когда какому-нибудь элементу формы необходимо перерисоваться (это событие можно использовать, если необходимо при этом рисовать на форме что-то особенное). Жизнь формы в Delphi Когда форма создана и все её элементы ждут своих событий, чтобы обрабатывать их, жизнь формы продолжается до тех пор, пока кто-нибудь не нажмёт крестик в верхнем правом углу формы! Уничтожение формы в Delphi При уничтожении формы, события генерируются в следующем порядке: ... OnCloseQuery -> OnClose -> OnDeactivate -> OnHide -> OnDestroy OnCloseQuery Если мы попытаемся закрыть форму при помощи метода Close либо другим доступным способом (Alt+F4 либо через системное меню), то сгенерируется событие OnCloseQuery. Таким образом, это событие можно использовать, чтобы предотвратить закрытие формы. Обычно, событие OnCloseQuery используется для того, чтобы спросить пользователя - уверен ли он (возможно в приложении остались несохранённые данные). procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);begin if MessageDlg('Really close this window?', mtConfirmation, [mbOk, mbCancel], 0) = mrCancel then CanClose:= False;end;Обработчик события OnCloseQuery содержит переменную CanClose, которая определяет, можно ли форме закрыться. Изначальное значение этой переменной True. Однако в обработчике OnCloseQuery можно установить возвращаемое значение CloseQuery в False, чтобы прервать выполнение метода Close. OnClose Если OnCloseQuery вернул CanClose=True (что указывает на то, что форма должна быть закрыта), то будет будет сгенерировано событие OnClose. Событие OnClose даёт последний шанс, чтобы предотвратить закрытие формы. Обработчик OnClose имеет параметр Action со следующими четырьмя возможными значениями:
Замечание: Когда пользователь выключает Windows, то будет вызвано OnCloseQuery, а не OnClose. Если Вы не хотите, чтобы Windows завершила свою работу, то поместите свой код в обработчик события OnCloseQuery, хотя CanClose=False не сделает, того, что сделано здесь. OnDestroy После того, как метод OnClose будет обработан и форма будет закрыта, то будет вызвано событие OnDestroy. В OnCreate обычно делаются действия, противоположные тем, которые проделывались в OnCreate, то есть уничтожение созданных объектов и освобождение выделенной памяти. Естественно, что когда главная форма проекта будет закрыта, то и приложение будет завершено. Свойства формы Form
События формы Form
Модальные формы http://www.berdaflex.com/ru/delphi/articles/modal_forms/default.html Компонент TForm в VCL объединяет в себе свойства и может играть роль как главного окна программы, так и диалогового (модального) окна. Чтобы форма работала в качестве диалога, вместо метода Show нужно вызвать метод: function ShowModal: Integer;Этот метод реализует весь жизненный цикл модальной формы. Он показывает ее на экране, активизирует ее и запрещает переключение на другие формы приложения. Начинается обработка сообщений, которая происходит до тех пор, пока свойство (Rb) property ModalResult: TModalResult;не изменит своего значения, первоначально нулевого. Напомним, что это свойство формы меняется непосредственно с помощью некоторых видов принадлежащих ей кнопок (см. раздел "Кнопки"). Если для модальной формы программистом вызывается метод Close, то ее единственным действием является то, что свойству ModalResult присваивается значение mrCancel (без вызовов OnCloseQuery и OnClose). Как только получено ненулевое значение ModalResult, вызьшается метод: procedure CloseModal;Его роль такая же, как у Close для обычной формы: сначала вызов CloseQuery, затем — генерация события OnClose. Установив в параметре Action этого события значение caNone, можно обнулить ModalResult и тем самым воспрепятствовать закрытию. В противном случае форма деактивизируется и делается невидимой. Модуль данных Для размещения компонентов доступа к данным в приложении баз данных желательно использовать специальную "форму" — модуль данных (класс TDataModule). Обратите внимание, что модуль данных не имеет ничего общего с обычной формой приложения, ведь его непосредственным предком является класс TComponent. В модуле данных можно размещать только невизуальные компоненты. Модуль данных доступен разработчику, как и любой другой модуль проекта, на этапе разработки. Пользователь приложения не может увидеть модуль данных во время выполнения. Для создания модуля данных можно воспользоваться Репозиторием объектов или главным меню Delphi. Значок модуля данных Data Module расположен на странице New. Как уже говорилось, модуль данных имеет мало общего со стандартной формой, хотя бы потому, что класс TDataModule происходит непосредственно от класса TComponent. У него почти полностью отсутствуют свойства и методы-обработчики событий, ведь от платформы для других невизуальных компонентов почти ничего не требуется, хотя потомки модуля данных, работающие в распределенных приложениях, выполняют весьма важную работу. Для создания структуры (модели, диаграммы) данных, с которой работает приложение, можно воспользоваться возможностями, предоставляемыми страницей Diagram Редактора кода. Любой элемент из иерархического дерева компонентов модуля данных можно перенести на страницу диаграммы и задать связи между ними. При помощи управляющих кнопок можно задавать между элементами диаграммы отношения синхронного просмотра и главный/подчиненный. При этом производится автоматическая настройка свойств соответствующих компонентов. Для создания модуля данных (рис. 11.2) можно воспользоваться Репозиторием объектов или главным меню Delphi. Значок модуля данных Data Module расположен на странице New. Для обращения компонентов доступа к данным, расположенным в модуле данных, из других модулей проекта необходимо включить имя модуля в секцию uses: unit InterfaceModule; ... implementation uses DataModule; ... DataModule.Tablel.Open; ... Рис. 11.2. Модуль данных Преимуществом размещения компонентов доступа к данным в модуле данных является то, что изменение значения любого свойства проявится сразу же во всех обычных модулях, к которым подключен этот модуль данных. Кроме этого, все обработчики событий этих компонентов, т. е. вся логика работы с данными приложения, собраны в одном месте, что тоже весьма удобно. Продолжая тему создания заготовок, упрощающих процесс разработки программного обеспечения, хочется обратить Ваше внимание на фреймы. В отличие от внешнего модуля, который мы рассматривали в предыдущей статье: "Работа с модальными формами", доступ к фреймам осуществляется через палитру компонентов. Данное свойство упрощает процесс визуальной разработки. А последующие изменения кода фрейма автоматически переносятся на объекты, в которых данный фрейм используется. Попробуем создать что-нибудь полезное. Первым претендентом для фрейма становиться блок кода, который приходится часто повторять по ходу создания проекта. Одним из таких участков можно назвать метод выравнивания кнопок диалоговых окон по правому краю. Создадим новый проект в Delphi. Новый фрейм создается вызовом пункта меню File-New, и в выбранной палитре объектов выбором Frame. В созданный фрейм добавим панель-контейнер TPanel и две кнопки TBitBtn. Рисунок 1. Заготовка фрейма
Для реализации эффекта выравнивания создадим метод на событие Resize панели-контейнера. procedure TFrameBtns.pnlBtnsResize(Sender: TObject);begin bbtnOk.Left:=Self.Width-10-bbtnOk.Width-bbtnCancel.Width; bbtnCancel.Left:=Self.Width-5-bbtnCancel.Width; end;google_protectAndRun("ads_core.google_render_ad", google_handleError, google_render_ad); Чтобы обеспечить возможность включения данного фрейма в другие проекты сохраним его в каталог общего доступа (в моем случае это $(DELPHI)\Projects\Common). Для добавления ранее созданных фреймов в другие проекты предназначен пункт меню Project-Add to project. А для добавления фрейма в форму или контейнер нужно выбрать первый элемент в стандартной палитре компонентов показанный на рисунке. Рисунок 2. Кнопка добавления фрейма в палитре компонент Delphi
После выбора элемента-контейнера Вам будет предложен список доступных фреймов. При выборе фрейма его элементы переносятся в контейнер. Код фрейма скрыт от программиста, что разгружает общий код приложения, и позволяет сконцентрироваться на решении основной задачи проекта. Поместив фрейм в ранее созданный проект, мы получили форму, в которой кнопки автоматически выравниваются по правому краю. Данное свойство мы можем использовать многократно и с минимальными усилиями. Рисунок 3. Пример использования фрейма
И напоследок «ложка дегтя». Хочется обратить Ваше внимание, что увлекаться фреймами особенно не стоит. По крайней мере, для сложных конструкций. Код фрейма должен быть тщательно продуман, отлажен и не должен изменяться после создания. Так как любые изменения в коде фрейма влияют на все проекты его использующие. А это может привести к неприятным сюрпризам.
|
||||
Последнее изменение этой страницы: 2017-02-21; просмотров: 260; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.117.91.170 (0.008 с.) |