Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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 со следующими четырьмя возможными значениями:

  • caNone. Форме не разрешено закрыться. Всё равно, что мы установим CanClose в False в OnCloseQuery.
  • caHide. Вместо закрытия, форма будет скрыта.
  • caFree. Форма будет закрыта, и занятые ей ресурсы будут освобождены.
  • caMinimize. Вместо закрытия, форма будет минимизирована. Это значение устанавливается поумолчанию у дочерних форм MDI.

Замечание: Когда пользователь выключает Windows, то будет вызвано OnCloseQuery, а не OnClose. Если Вы не хотите, чтобы Windows завершила свою работу, то поместите свой код в обработчик события OnCloseQuery, хотя CanClose=False не сделает, того, что сделано здесь.

OnDestroy После того, как метод OnClose будет обработан и форма будет закрыта, то будет вызвано событие OnDestroy. В OnCreate обычно делаются действия, противоположные тем, которые проделывались в OnCreate, то есть уничтожение созданных объектов и освобождение выделенной памяти.

Естественно, что когда главная форма проекта будет закрыта, то и приложение будет завершено.

Свойства формы Form


Form.ActiveControl - указывает на компонент, который должен быть по умолчанию
Form.Align - выравнивание компонента
Form.AlphaBlend - указывает, является ли форма прозрачной или нет
Form.AlphaBlendValue - степень прозрачности формы
Form.Anchors - показывает как происходит прикрепление к родительскому объекту
Form.AutoScroll - указывает, будет ли форма автоматически производить скроллинг или нет
Form.AutoSize - указывает, должны ли компоненты на форме автоматически корректировать размеры или нет
Form.BorderIcons - свойство определяющее какие кнопки должны присутствовать у окна формы
• biSystemMenu - показывает или убирает все кнопки а также иконку у окна формы
• biMinimize - кнопка минимизации окна
• biMaximize - кнопка максимизации окна
• biHelp - кнопка помощи
Form.BorderStyle - свойство формы, отвечающее за вид оборки окна
• bsSizeable - установлено по умолчанию. стандартное окно которое может изменять свои размеры
• bsDialog - окно выглядит как диалоговое
• bsNone - окно без оборки. у такого окна нет оборки и меню
• bsSingle - обычное окно только нельзя менять размеры формы
• bsSizeToolWin - окно с тонкой оборкой и только с одной кнопкой "Закрыть"
• bsToolWindow - ничем не отличается от bsSizeToolWin, только нельзя менять размеры формы
Form.BorderWidth - ширина оборки окна
Form.Caption - заголовок окна
Form.ClientHeight - задаёт высоту клиентской области окна формы. высота берётся без учёта ширины оборки и системного меню
Form.ClientWidth - задаёт ширину клиентской области окна формы. ширина берётся без учёта ширины оборки и системного меню
Form.Color - цвет клиентской области окна формы. чтобы выбрать любой цвет, нужно кликнуть 2 раза по этому параметру
Form.Constraints - свойство установки максимального и минимального значение размеров окна
• MaxHeight - максимальная высота окна
• MaxWidth - максимальная ширина окна
• MinHeight - минимальная высота окна
• MinWidth - минимальная ширина окна
Form.Ctl3D - указывает, показывать окно / компонент в псевдо-3D плоскости или нет
Form.Cursor - свойство отвечает за курсор, который будет отображаться при наведении на форму / компонент
Form.DockSite - указывает, можно ли на форму / компонент бросать другие компоненты с помощью Drag & Drop
Form.DragKind - вид перетаскивания объекта при Drag & Drop
• dkDrag - стандартный Drag & Drop, при котором объект остаётся на месте
• dkDock - перетаскивается сам объект. если нужно чтобы компонент мог прикрепляться к другим компонентам, установите этот параметр
Form.DragMode - режим Drag & Drop из двух вариантов
• dmManual - ручной режим. при таком режиме вы сами должны запускать перетаскивания объекта
• dmAutomatic - режим Drag & Drop. будет включаться автоматически, если пользователь начал перетаскивать компонент мышью
Form.Enabled - определяет доступность формы
Form.Font - шрифт, используемый при выводе текста на форме. кликните 2 раза чтобы выбрать шрифты которые находятся в папке Fonts, а токже изменить начертание, размер, цвет шрифта
Form.FormStyle - стиль формы
• fsNormal - нормальное окно формы
• fsMDIForm - окно является родительским для MDI-окон. эти окна относятся к классу MDI - мультидокументные окна
• fsMDIChild - окно является дочерным MDI-окном. это окно будет внутри окна, созданного в fsMDIForm
• fsStayOnTop - окно с этим параметром будет всегда поверх остальных
Form.Height - высота окна формы
Form.Hint - текст всплывающей подсказки, который будет появляться при наведении на форму / компонент
Form.HorzScrollBar - параметры горизонтальной полосы прокрутки
Form.Icon - иконка, отображающая в заголовке окна. кликните 2 раза по этому свойству для загрузки иконки
Form.Left - левая позиция окна
Form.Menu - меню которое используется в главном окне
Form.Name - имя формы / компонента
Form.ParentFont - если это свойство равно true, то для вывода текста оно будет использовать тот же шрифт, что и для родительского объекта
Form.Position - позиция окна формы при старте приложения
• poDefault - Windows сам будет решать, где расположить окно и какие будут его размеры
• poDefaultPosOnly - Windows сам будет решать только, где расположить окно, а размеры его будут такими, какие установите вы в свойствах
• poDefaultSizeOnly - Windows сам будет решать только, какими будут размеры окна, а позиция будет такая, какую вы укажите в свойствах
• poDesigned - и размер и позиция будет такими,какими вы укажите в свойствах
• poDesktopCenter - окно формы будет распологаться по центру рабочего стола
• poMainFormCenter - окно будет распологаться по центру основной формы
• poOwnerFormCenter - окно будет распологаться по центру окна владельца, того окна которое вызвало это
• poScreenCenter - окно будет распологаться по центру экрана
Form.ShowHint - устанавливает, нужно ли показывать всплывающие подсказки или нет
Form.Tag
Form.Top - верхняя позиция окна
Form.TransparentColor - определяет, является ли форма или компонент прозрачным. в отличии от Form.AlphaBlend, эта прозрачность работает всегда. но здесь нельзя сделать полупрозрачными формы и компоненты
Form.TransparentColorValue - значение прозрачного окна
Form.VertScrollBar - вертикальная полоса прокрутки. имеет те же параметры что и горизонтальная
Form.WindowState - состояние окна после запуска
• wsNormal - окно показывается в нормальном состоянии
• wsMaximized - окно показывается максимизированным
• wsMinimized - окно показывается минимизированным

События формы Form


Form.OnActivate - когда приложение стало активным
Form.OnCanResize - это событие генерируется перед тем, как изменить размер окна
Form.onclick - генерируется когда пользователь щёлкнул по форме
Form.OnClose - генерируется когда окно формы закрывается
Form.OnCloseQuery - генерируется до закрытия окна
Form.OnCreate - генерируется когда окно создаётся
Form.ondblclick - генерируется когда пользователь дважды щёлкнул по окну формы
Form.Deactivate - генерируется когда окно деактивируется
Form.Destroy - это событие происходит когда окно уничтожается
Form.Hide - генерируется когда окно исчезает из виду
Form.onkeydown - событие генерируется когда нажата клавиша на клавиатуре
Form.onkeypress - генерируется когда нажата и отпущена клавиша на клавиатуре
Form.onkeyup - событие генерируется когда отпущена клавиша на клавиатуре
Form.onmousedown - генерируется когда нажата кнопка мыши
Form.OnMouseMove - генерируется когда двигается мышка
Form.onmouseup - событие генерируется когда отпускается кнопка мыши
Form.OnMouseWheel - генерируется колёсиком мыши
Form.OnMouseWheelDown - событие генерируется когда колёсико мыши прокручено вниз
Form.OnMouseWheelUp - событие генерируется когда колёсико мыши прокручено вверх
Form.OnPaint - генерируется когда надо перерисовать окно
Form.OnResize - генерируется когда надо изменить размеры окна формы
Form.OnShortCut - событие происходит когда нажата горячая клавиша
Form.OnShow - когда показывается окно, но до фактической прорисовки

Модальные формы 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 с.)