delphi сделать форму активной

Как сделать форму активной

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Как сделать форму активной?
программа имеет 2 формы, form1 и form2, требуется из формы2(развёрнутой) переключиться на.

Сделать форму активной при добавлении строки в Memo
как сделать условие «если в memo1 добавлена новая строка то форма становится активной»?

Как сделать активной вкладку TPageControl
Создано MDI-приложение. На дочернем окне расположен компонент TPageControl Необходимо, что-бы.

в моей программе не помогает

Добавлено через 42 секунды
нужно как-то имитировать щелчок мышью по форме. А как это сделать?

Как сделать активной группу CheckBox при нажатии RadioButton?
Как сделать активной группу CheckBox при нажатии RadioButton и наоборот?

tickКак сделать? Если Caption копки на 1 форме равен 500, тогда неактивная кнопка на 2 форме становится активной.
В общем так, вроде всё просто, но что то застрял: на 1 форме есть кнопка на 2 форме две кнопки.

tickНадо сделать программу всегда активной
На кпопку F1 стоит действие mp1.play надо что бы музыка играла, в тот момент когда приложение.

Как сделать форму невидимой?
Из сабжа. Не получается через visible в False. На форме кнопка и webBrowser. Заранее благодарен.

Как сделать форму треугольникам
Как сделать форму треугольникам.Заранее спасибо.

Источник

Delphi сделать форму активной

«Ни один ремесленник, который стремится к вершинам своей профессии, не примет негодных инструментов; и ни один производитель, который ценит качество работы, не будет упрашивать ремесленника принять их»

58. Разработка активных форм ActiveForm

Что такое активная форма.

Зачем нужны активные формы.

Последовательность создания активной формы.

Для иллюстрации активных форм воспользуемся примером из работы П.Дарахвелидзе, Е.Маркова и О.Котенка «Программирование в Delphi 5». Предположим, что нам требуется в различных приложениях (в том числе и разрабатываемых на других языках) предоставить пользователям возможность удобного выбора параметров пера Pen (компонент TPen). Подчеркнем, что если бы такая возможность требовалась только в одном приложении, то активную форму можно было бы и не разрабатывать, а просто реализовать необходимый код. В приведенном ниже примере будет реализован выбор цвета пера из имеющегося набора, типов и толщин линий.

Этап 1. Создание проекта.

В репозитории Delphi выбираем мастера File | New | ActiveX | ActiveForm. Delphi отобразит такое диалоговое окно:

image026

В этом окне необходимо указать, в простейшем случае, только имя новой активной формы (New ActiveX Name). Другие имена при этом мастер изменит автоматически, что, впрочем, не мешает Вам изменить их и вручную. После указания имени формы окно примет вид:

image028

Последний штрих перед завершением этого этапа – сохранение проекта под заданным именем. Если оставить все имена без изменения, то в результате Delphi создаст такие файлы:

2. PenIpml1.pas – файл реализации, который и является основным файлом-носителем специфических методов и свойств активной формы.

3. PenProj1_TLB.pas – как обычно при использовании СОМ объектов, этот файл является описанием библиотеки типов (type library) на паскале.

Этап 2. Разработка формы.

image030

Переходим к форме и размещаем на ней необходимые компоненты, а именно два компонента ComboBox и один UpDown. Разместим их на форме в желаемом виде и обязательно минимизируем размеры формы для того, чтобы в клиентском приложении она не занимала на экране много места. В результате форма примет такой вид:

Этап 3. Реализация свойств и методов компонентов формы. На этом этапе мы должны реализовать те возможности, которые хотим предоставить пользователям нашего комбинированного компонента.

Назначение компонентов формы примем следующим:

· ComboBox1 – для выбора цвета пера;

· ComboBox2 – для выбора типа пера (вида линии);

· UpDown – для выбора толщины линии.

Для того чтобы в списках ComboBox1 и ComboBox2 непосредственно отображался цвет и тип линии соответственно, зададим значения csOwnerDrawFixed (отрисовываемые пользователем) их свойствам Style с помощью инспектора объектов.

Далее добавим в файл PenIpml1.pas четыре обработчика событий (с помощью инспектора объектов), а также массив констант цветов DefColors и глобальную переменную PenWidth. Вот фрагменты файла PenImpl1.pas с изменениями:

TPenX = class(TActiveForm, IPenX)

procedure ActiveFormCreate(Sender: TObject);

procedure ComboBox1DrawItem(Control: TWinControl; Index: Integer;

Rect: TRect; State: TOwnerDrawState);

procedure ComboBox2DrawItem(Control: TWinControl; Index: Integer;

Rect: TRect; State: TOwnerDrawState);

procedure UpDownClick(Sender: TObject; Button: TUDBtnType);

uses ComObj, ComServ;

const DefColors : array[0..15] of TColor = (clBlack, clDkGray,

clGray, clLtGray, clSilver, clBlue, clFuchsia, clGreen,

clLime, clMaroon, clNavy, clOlive, clPurple, clRed,

var PenWidthGbl : integer; // толщина пера

procedure TPenX.ActiveFormCreate(Sender: TObject);

for i:=Low(DefColors) to High(DefColors) do

procedure TPenX.ComboBox1DrawItem(Control: TWinControl; Index: Integer;

Rect: TRect; State: TOwnerDrawState);

procedure TPenX.ComboBox2DrawItem(Control: TWinControl; Index: Integer;

Rect: TRect; State: TOwnerDrawState);

var HCenter : integer;

HCenter:=Rect.Top + (Rect.Bottom-Rect.Top) shr 1;

with ComboBox2.Canvas do

procedure TPenX.UpDownClick(Sender: TObject; Button: TUDBtnType);

В результате добавления такого кода мы должны получить при нажатии на кнопку списка ComboBox1 палитру из 16 цветов, а при нажатии на кнопку ComboBox2 – палитру из 8 типов линий. Нажатие на кнопки UpDown должно приводить к изменению толщины выбранной линии. Однако, на этом этапе разработки активной формы мы этого увидеть не сможем, так как библиотека не может быть запущена на выполнение без клиентского приложения.

Сейчас можно только откомпилировать проект и устранить возможные ошибки.

Этап 4. Реализация свойств и методов интерфейса активной формы.

Для того чтобы клиентское приложение могло получить доступ к возможностям нашего комбинированного элемента – активной формы – требуется дополнить автоматически сгенерированный мастером Delphi СОМ объект свойствами и методами.

Вызовем редактор библиотеки типов (например, с помощью меню View | Type Library) и добавим к имеющемуся интерфейсу три новых свойства: PenWidth, PenStyle и PenColor. Каждое из свойств можно сделать свойством только для чтения, так как программно мы их изменять не собираемся, но в этом случае свойства не будут отображаться в инспекторе объектов приложения, которое будет использовать наш компонент. Если свойство будет свойством для чтени и записи, то редактор библиотеки типов для каждого свойства создаст два метода: один для записи и второй – для чтения. Для всех методов возвращаемое значение по умолчанию имеет тип long, который мы изменять не будем, так как этот тип нас устраивает. В результате мы увидим окно редактора с таким содержимым:

image032

Теперь нажмем кнопку Refresh Implementation и добавим код в заготовки методов чтения значений свойств (в файле PenImpl1.pas):

function TPenX.Get_PenColor: Integer;

function TPenX.Get_PenStyle: Integer;

function TPenX.Get_PenWidth: Integer;

После внесения этих изменений можно откомпилировать проект, однако наш комбинированный элемент еще не полностью готов к использованию

После регистрации библиотеки DLL необходимо с помощью меню Component | Install Component добавить новый компонент в палитру компонентов. В окне Unit File Name необходимо указать имя файла с библиотекой типов TLB. Установить компонент можно в новый пакет (страница Into new package) или в существующий (Into existing package). Окно диалога по включению компонента в новый пакет имеет такой вид (задано имя пакета MyPackage):

image035

image037

При установке компонента в существующий пакет будет выведено такое диалоговое окно:

В этом случае надо последовательно выполнить команды «Compile», «Add» и «Install».

В результате выполнения этих действий (по установке пакета) будут получены файлы MyPackage.bpl и MyPackage.dpk, которые в данном примере будут располагаться в том же каталоге, что и файлы проекта. В палитре компонент на вкладке ActiveX появится новый компонент. Этот компонент будет виден во вновь создаваемых проектах благодаря тому, что в каталог Delphi\Projects\Bpl будут записаны файлы MyPackage.bpl и MyPackage.dcp.

В принципе теперь компонент можно включить в клиентское приложение таким же образом, как включаются любые другие компоненты, имеющиеся в палитре компонент. Если мы построим и запустим клиентское приложение, то увидим, что новый компонент реагирует на нажатие пользователем кнопок списков ComboBox и кнопки UpDown. Однако наш компонент имеет один весьма существенный недостаток: клиентское приложение не получает никаких «известий» о том, что пользователь выбрал новый цвет, тип или толщину линии. Для посылки известия клиентскому приложению требуется выполнить следующий – заключительный – этап.

Этап 5. Дополнение активной формы событием.

Событие, точнее, метод, который будет посылать сообщение клиентскому приложению в нужное время, необходимо добавить к интерфейсу IPenXEvents. Для этого вернемся к редактору библиотеки типов и добавим метод OnPenChanged к интерфейсу IPenXEvents. Для этого метода не нужно задавать никаких параметров и для него Delphi не создает заготовки. Опять-таки необходимо обновить реализацию библиотеки типов (Refresh Implementation).

Это еще не все. Далее требуется создать обработчики событий OnChange для каждого из компонентов, входящих в состав нашей активной формы: ComboBox1, ComboBox2 и UpDown. Эти обработчики должны иметь такой код:

Procedure TPenX.ComboBox1Change(Sender: TObject);

if FEvents<>nil then FEvents.OnPenChanged;

После внесения этих дополнений необходимо вновь откомпилировать проект и зарегистрировать его для того, чтобы изменения в библиотеке типов были внесены в реестр Windows. Кроме того, необходимо вновь установить компонент – файл с библиотекой типов TLB – в палитру компонент Delphi и повторно откомпилировать пакет. После выполнения всех этих действий событие OnPenChanged появится в списке событий нашего компонента при включении его в клиентское приложение.

Использование активной формы в клиентском приложении.

Клиентское приложение строится обычным образом и в него включается компонент PenX из палитры компонент (страница ActiveX по умолчанию). Включенный компонент будет иметь, помимом прочих, свойства PenWidth, PenStyle и PenColor, а также событие OnPenChanged. Теперь достаточно добавить обработчик этого события и можно получать значения свойств PenWidth, PenStyle и PenColor, установленные пользователем.

Для проверки корректности работы разработанной активной формы можно вывести эти значения с использованием какого-нибудь компонента типа TMemo.

Источник

Свойства и характеристики формы (Form) в Дельфи (Delphi)

Как и любой другой визуальный компонент, форма имеет свойства, методы и события, общие для всех визуальных компонентов, многие из которых уже были рассмотрены в статье События Delphi (События визуальных компонентов), а так же в статьях, посвященных интерфейсным элементам.

Form 3

Наряду с ними у формы есть и спефические свойства, методы и события, определяемые ее особым значением. Некоторые из них характеризуют форму как главный объект приложения, скажем, свойство BorderIcons, другие присущи форме как контейнеру других компонентов, например, свойства AutoScroll и ActiveControl.

Система Delphi при добавлении новой формы в проект автоматически создает один экземпляр класса (Form1, Form2 и т. д.), внося соответствующие изменения в файл проекта, например, добавляя строку кода:

Управлять процессом автоматического создания форм можно, непосредственно редактируя файл проекта (не рекомендуется делать неопытным программистам) или выполняя настройки в окне параметров проекта (список Auto-create forms на странице Form). Если форма переведена из этого списка в список Available forms доступных форм проекта, то инструкция ее создания исключается из файла проекта, и программист в ходе выполнения приложения должен динамически создать экземпляр этой формы.

Form 2

На данном скринште мы видим, что Form1 будет создана при запуске программы, а Form2 необходимо будет создать динамически при выполнении программы.

Метод Сreate

Для создания экземпляров форм служит метод (конструктор) Сreate. Сам класс формы обычно предварительно описывается при конструировании приложения, и для формы уже существуют файлы формы (dfm) и программного модуля (pas).

В вышеуказанной процедуре создается форма Form2, принадлежащая объекту приложения и имеющая заголовок новая форма.

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

events Form1

При создании и использовании формы генерируются следующие события типа TNotifyEvent, указанные в порядке их возникновения:

Событие OnCreate

Событие OnCreate генерируется только один раз— при создании формы, остальные события происходят при каждом отображении, активизации и каждой прорисовке формы соответственно.

В обработчик события OnCreate обычно включается код, устанавливающий начальные значения свойств формы, а также ее элементов управления, т. е. выполняющий начальную инициализацию формы в дополнение к установленным на этапе разработки приложения параметрам. Кроме того, в обработчик включаются дополнительные операции, которые должны происходить однократно при создании формы, например, чтение к из файла некоторой информации и загрузка ее в список.

Приведем в качестве примера процедуру, обрабатывающую событие OnCreate формы Form2:

При создании форма получает новый заголовок пример формы, в комбинированный список ComboBox2 загружаются данные из файла list.txt, кнопка Button3 блокируется, а фокус ввода устанавливается на редактор Edit1.

Свойство Visible

Из всех созданных форм Delphi при выполнении приложения автоматически делает видимой главную форму, для этого свойство Visible этой формы устанавливается в значение True. Для остальных форм значение данного свойства по умолчанию равно False, и после запуска приложения они на экране не отображаются. Если формы создаются вручную, то их отображение и скрытие в процессе работы приложения регулируется программистом через свойство Visible. Даже если форма невидима, ее компонентами можно управлять, например, из других форм.

Дочерние формы многодокументного приложения становятся видимыми на экране сразу после их создания.

В вышеуказанных процедурах нажатие кнопок btnShowForm2 и btnHideForm2, расположенных в форме Form1, приводит, соответственно, к отображению и скрытию формы Form2.

Методы Show и Hide

Управлять видимостью форм на экране можно также с помощью методов Show и Hide. Процедура Show отображает форму в немодальном режиме, при этом свойство Visible устанавливается в значение True, а сама форма переводится на передний план. Процедура Hide скрывает форму, устанавливая ее свойство Visible в значение False.

Если окно видимо, то вызов метода Show переводит форму на передний план и передает ей фокус ввода.

Пример отображения и скрытия формы:

Здесь нажатие кнопок btnShowForm3 и btnHideForm3, расположенных В форме Form1, приводит соответственно к отображению на экране и удалению с экрана формы Form3.

В момент отображения формы на экране ее свойство visible принимает значение True, и возникает событие OnShow. Соответственно при скрытии формы свойство visible принимает значение False, и возбуждается событие OnHide.

События OnActivate и OnDeActivate

При получении формой фокуса ввода, например при нажатии кнопки мыши в области формы, происходит ее активизация и возникает событие OnActivate, а при потере фокуса— событие OnDeActivate.

Событие OnPaint

Событие OnPaint генерируется при необходимости перерисовки формы, например, при активизации формы, если до этого часть ее была закрыта другими окнами.

Метод Сlose — закрывает форму

Для закрытия формы используется метод close, который, если это возможно, удаляет ее с экрана. В случае закрытия главной формы прекращается работа врего приложения.

В вышеуказанной процедуре кнопка btnClose закрывает форму Form2. Форма делается невидимой, но не уничтожается. Для этой кнопки полезно задать соответствующий заголовок (свойство Caption), например, Закрыть.

Процедура Close не уничтожает созданный экземпляр формы, и форма может быть снова вызвана на экран, в частности, с помощью методов Show или ShowModal.

Уничтожение формы (Release, Free или Destroy)

Уничтожение формы происходит с помощью методов Release, Free или Destroy, после чего работа с этой формой становится невозможна, и любая попытка обратиться к ней или ее компонентам вызовет исключение (ошибку). Необходимость уничтожения формы может возникнуть при оформлении заставок или при разработке больших приложений, требующих экономии оперативной памяти. Предпочтительным методом удаления формы считается метод Free, поскольку он предварительно проверяет возможность удаления. Например, в процедуре

В приведенной процедуре кнопка btnDestroy уничтожает форму Form3. Для этой кнопки полезно задать соответствующий заголовок, например Удалить.

События при закрытии и уничтожении формы

events Form1

При закрытии и уничтожении формы генерируются следующие события, указанные в порядке их возникновения:

Событие OnCloseQuery

OnCloseQuery

Событие OnCloseQuery типа TcloseQueryEvent возникает в ответ на попытку закрытия формы. Обработчик события получает логическую переменную-признак CanClose, определяющую, может ли быть закрыта данная форма. По умолчанию эта переменная имеет значение True, и форму можно закрыть. Если установить параметр CanClose в значение False, то форма остается открытой. Такую возможность стоит использовать, например, для подтверждения закрытия окна или проверки, сохранена ли редактируемая информация на диске. Событие OnCloseQuery вызывается всегда, независимо от способа закрытия формы.

Приведем в качестве примера процедуру закрытия формы:

Здесь при закрытии формы Form2 выдается запрос на подтверждение операции, который представляет собой модальное диалоговое окно с текстом и двумя кнопками — Yes и No. Нажатие кнопки Yes вызывает закрытие формы, при нажатии кнопки No закрытие формы не происходит.

Событие OnClose

OnClose

Событие OnClose типа TCioseEvent возникает непосредственно перед закрытием формы. Обычно оно используется для изменения стандартного поведения формы при закрытии. Для этого обработчику события передается переменная Action типа TCloseAction, которая может принимать следующие значения:

При закрытии окна методом Close переменная Action по умолчанию получает значение caHide, и форма делается невидимой. При уничтожении формы, например, методом Destroy, переменная Action по умолчанию получает значение caFree, и форма уничтожается.

Событие OnClose возникает при закрытии формы щелчком мыши на кнопке закрытия системного меню или при вызове метода Close. Когда закрывается главная форма приложения, все остальные окна закрываются без вызова события OnClose.

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

Событие onDestroy

onDestroy

Событие onDestroy типа TNotifyEvent возникает непосредственно перед уничтожением формы и обычно используется для освобождения ресурсов.

Событие onResize

onResize

При каждом изменении размеров формы в процессе выполнения приложения возникает событие onResize типа TNotifyEvent. В обработчике этого события может размещаться код, например, выполняющий изменение положения и размеров элементов управления окна, не имеющих свойства Align.

В форме Form1 находятся два компонента: сетка строк StringGrid1 и кнопка Button1. Эти компоненты расположены в форме следующим образом:

При изменении размеров формы Form1 выполняется пересчет параметров, задающих размеры и положение сетки строк, а также положение кнопки.

Cвойство FormStyle — стиль формы

FormStyle

Стиль формы определяется свойством FormStyle типа TFormstyle, принимающим следующие значения:

Форма может изменять стиль динамически — в процессе выполнения программы, например, при выборе пункта меню. При изменении формой стиля возникает событие OnShow.

Пример динамического изменения стиля формы:

При выборе пункта меню mnuTop форма переключает свой стиль между значениями fsNormal и fsStayOnTop. Смена стиля отображается графически галочкой в заголовке этого пункта меню.

Cвойство BorderStyle — свойства рамки формы

BorderStyle

Каждая форма имеет ограничивающую рамку. Вид и поведение рамки определяет свойство BorderStyle типа TFormBorderstyle. Оно может принимать следующие значения:

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

Невозможность изменения размеров форм некоторых стилей относится только к пользователю — нельзя с помощью мыши передвинуть границу формы в ту или иную сторону. Программно при выполнении приложения для формы любого стиля можно устанавливать любые допустимые размеры окна, а также изменять их.

Пример программного изменения размеров формы:

При нажатии кнопки btnResizeForm ширина формы Form2 увеличивается на 100 пикселов, даже если ее свойство BorderStyle имеет значение, равное bsDialog, bsSingle или bsNone.

Метод ShowModal

Если установить диалоговый стиль формы, то она не становится модальной и позволяет пользователю переходить в другие окна приложения. Для запуска формы, в том числе любой диалоговой, в модальном режиме следует использовать метод ShowModal. Таким образом, стиль определяет внешний вид формы, но не ее поведение.

Cвойство BorderIcons

В области заголовка могут отображаться 4 вида кнопок. Реализуемый набор кнопок определяет свойство BorderIcons типа TBorderIcons, которое может принимать комбинации следующих значений:

Системное меню представляет собой набор общих для всех окон Windows команд, например, Свернуть или Закрыть. При наличии у окна системного меню в области заголовка слева отображается значок приложения, при щелчке на котором и появляются команды этого меню, а в области заголовка справа имеется кнопка закрытия формы (см. скриншот).

Sistemnoe menu

Различные значения свойства BorderIcons не являются независимыми друг от друга. Так, если отсутствует системное меню, то ни одна кнопка не отображается. Если имеются кнопки развертывания и свертывания, то не отображается кнопка справки. Возможность появления кнопок также зависит от стиля формы. Например, отображение кнопок развертывания и свертывания возможно только для обычной формы и формы панели инструментов с изменяемыми размерами.

Обычно стиль формы и набор кнопок заголовка задаются на этапе разработки приложения в окне Инспектора объектов. При этом в проектируемой форме всегда видны обычная рамка и три кнопки (развертывания, свертывания и закрытия формы), независимо от значения свойств FormStyle и BorderIcons. Заданные стиль формы и набор кнопок становятся видимыми при выполнении программы.

Форма включает в себя клиентскую и неклиентскую области. Неклиентская область занята рамкой, заголовком и строкой главного меню. Обычно эта область прорисовывается Windows и программистом не затрагивается. При необходимости изменить отображение в неклиентской области программист может перехватить и обработать сообщение WM_NCPaint.

Cвойства ClientWidth и ClientHeight

ClientWidth ClientHeight

В клиентской области обычно размещаются различные элементы управления, выводится текст или отображается графика. Аналогично тому как свойства Width и Height определяют размеры всей формы, свойства ClientWidth и ClientHeight типа Integer задают ширину и высоту (в пикселах) клиентской части формы.

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

Обычно форму перетаскивают мышью, указатель которой устанавливается в любом месте области заголовка. При необходимости можно переместить форму и при помещении указателя на ее клиентскую область, для чего требуется описать соответствующие операции программно. Одним из способов является перехват системного сообщения WM_NCHitTest. Для этого создается процедура FormMove, которая анализирует, в каком месте формы находится указатель мыши при нажатии кнопки. Код местоположения указателя мыши содержится в поле Result системного сообщения типа TMessage. Если значение Result равно 1, что соответствует нажатию кнопки мыши в клиентской области, то полю Result присваивается новое значение, равное 2, имитирующее нахождение указателя мыши в области заголовка. В процедуре FormMove первая инструкция inherited осуществляет вызов предопределенного обработчика перехватываемого события.

Чтобы указать среде Delphi, что процедура FormMove является обработчиком события WM_NCHitTest, при ее описании в классе формы TForm1 используется специальный синтаксис, включающий ключевое слово message. Как обработчик системного сообщения, процедура содержит один параметр типа TMessage.

Далее приводится код модуля формы Form1, которую можно перемещать мышью, поместив указатель мыши как в область заголовка, так и в клиентскую область.

Имена MoveForm и Msg процедуры и ее параметра могут быть изменены.

Свойство Menu

Отображаемое формой меню задается свойством Menu типа TMainMenu. При разработке приложения размещение компонента MainMenu главного меню в форме вызывает автоматическое присвоение значения MainMenu1 свойству Menu. Это самый простой способ ссылки на главное меню. Если в ходе выполнения приложения какая-либо форма должна отображать различные меню, то через свойство Menu можно указать другое главное меню, например, следующим образом: Form1.Menu := MainMenu2;

Свойство Icon

Каждая форма отображает в левой стороне области заголовка свой значок, определяемый свойством Icon типа Ticon. Если форма не является главной в приложении, то этот значок отображается при свертывании формы. Для любой формы свойство Icon можно задать с помощью Инспектора объектов или динамически (при выполнении приложения). Если значок не задан, то форма использует значок, указанный в свойстве Icon объекта Application. Последний выводится также при свертывании и отображении в панели задач Windows значка главной формы приложения.

В вышеуказанной процедуре значок динамически загружается из файла Picture1.ico при создании формы Form1.

Свойство Position

Position

Размещение и размер формы при отображении определяет свойство Position типа TPosition. Оно может принимать значения, перечисленные далее:

Приложение может запоминать расположение и размеры форм и при последующем выполнении правильно отображать формы на экране. Для этого программист должен записать соответствующие данные в инициализационный файл приложения или в системный реестр Windows, а при последующем выполнении приложения считать эти данные и установить их для форм.

Свойство Active

Свойство Active типа Boolean позволяет определить активность формы. В любой момент времени активной может быть только одна форма, при этом ее заголовок выделяется особым цветом (обычно синим). Если свойство Active имеет значение True, то форма активна (находится в фокусе ввода), если False — то неактивна. Это свойство доступно для чтения во время выполнения программы. Если требуется активизировать форму программно, следует использовать свойство WindowState или метод Show (showModal).

Cвойство ChildActiveForm

В многодокументном приложении родительское окно не может быть активным независимо от цвета заголовка. Для определения активного дочернего окна многодокументного приложения служит свойство ChildActiveForm типа TForm родительской формы.

В вышеуказанном примере процедура CheckFormActive модуля главной формы выполняет проверку активности для двух форм приложения и отображает соответствующую информацию в заголовках форм.

Свойство WindowState

WindowState

Свойство WindowState типа TWindowstate определяет состояние отображения формы и может принимать одно из трех значений:

Кнопки btnMiniForm и btnNormalForm в форме Form1 сворачивают и восстанавливают обычное состояние формы Form2 соответственно.

Форма, для которой изменяется состояние отображения на экране, предварительно должна быть создана методами CreateForm или Create. Если форма не создана, то при обращении к ней будет сгенерировано исключение, несмотря на то, что переменная формы объявлена в модуле. Если форма создана, но не отображается на экране, то изменения ее состояния (свойства windowstate) происходят, однако пользователь не видит этого до тех пор, пока форма не будет отображена на экране.

Свойство ActiveControl

ActiveControl

Будучи контейнером, форма содержит другие элементы управления. Оконные элементы управления (потомки класса TWinControl) могут получать фокус ввода. Свойство ActiveControl типа TWinControl определяет, какой элемент формы находится в фокусе. Для выбора элемента, находящегося в фокусе ввода (активного элемента), можно устанавливать это свойство в нужное значение при выполнении программы:

Эту же операцию выполняет метод SetFocus, который устанавливает фокус ввода для оконного элемента управления:

Свойство AutoScroll

AutoScroll

В случае, когда размеры окна недостаточны для отображения всех содержащихся в форме интерфейсных компонентов, у формы могут появляться полосы прокрутки. Свойство AutoScroll типа Boolean определяет, появляются ли они автоматически, Если свойство AutoScroll имеет значение True (по умолчанию), то полосы прокрутки появляются и исчезают автоматически, без каких-либо действий программиста. Необходимость в полосах прокрутки может возникнуть, например, в случае, если пользователь уменьшит размеры формы так, что не все элементы управления будут полностью видны. Если же свойство AutoScroll установлено в значение False, то программист реализует управление просмотром информации вручную через свойства HorzScrollBar (горизонтальная прокрутка) и VertScrollBar (вертикальная прокрутка) типа TControlScrollBar формы.

Метод ScrollInView

Для программного управления полосами прокрутки можно использовать метод ScrollInView. Процедура ScrollInView (AControl: TControl) автоматически изменяет позиции полос прокрутки так, чтобы заданный параметром AControl элемент управления стал виден в отображаемой области.

Свойство KeyPreview

KeyPreview

Свойство KeyPreview типа Boolean определяет, будет ли форма обрабатывать события клавиатуры, прежде чем их обработают элементы управления формы. Если свойство имеет значение False (по умолчанию), то клавиатурные события поступают к активному элементу управления (имеющему фокус ввода). При установке свойства KeyPreview в значение True форма первой получает сообщения о нажатии клавиш и может на них реагировать, что обычно используется для обработки комбинаций клавиш, независимо от активности элементов управления формы.

В вышеуказанной процедуре форма Form1 обрабатывает нажатие алфавитно-цифровых клавиш, отображая введенный символ в диалоговом окне Information.

Форма не может обрабатывать нажатие клавиши в связи с ее особым назначением.

Cвойство MDichildCount и метод Cascade

У формы имеется ряд свойств и методов, например свойство MDichildCount и метод Cascade, предназначенных для организации многодокументных приложений.

Источник

Понравилась статья? Поделить с друзьями:
Добавить комментарий
  • Как сделать успешный бизнес на ритуальных услугах
  • Выездной кейтеринг в России
  • Риски бизнеса: без чего не обойтись на пути к успеху
  • delphi проверка существования формы
  • delphi приложение для android bluetooth