как свернуть форму delphi

Delphi 7. Как свернуть формы в панель задач?

Доброго времени суток!
У меня такой вопрос: «Как сделать, чтобы форма, не являющаяся главной при минимизации
сворачивалась не в левый нижний угол экрана, а в панель задач?»

Нашел вот такой код:

Не пойму, что с ним делать. Прошу вас подсказать или объяснить.

Заранее спасибо, если нужна какая-либо информация, пишите.

Как свернуть программу в панель задач
Как свернуть программу в панель задач. По моему «панель задач» называется нижняя часть правого.

Как свернуть форму в панель задач
Ребята подскажите как свернуть форму в панель задач. Есть Форма1 у которой formBorderStyle=None.

как свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphiКак свернуть в панель задач стороннее приложение?
Здравствуйте. Подскажите пожалуйста. Как свернуть стороннюю программу в панель задач? Необходимо.

Massaraksh7, Можете объяснить, что код означает?

И правильно ли я его вставил:

Если не правильно то поправьте меня пожалуйста.

northener, Я хочу сделать чтобы программа сворачивалась не в правый нижний угол, а как любое приложение под одной иконкой.

Massaraksh7, Так сделал в OnResize, при открытии первом этой формы, он сразу сворачивает её.
Разворачиваю, нажимаю свернуть он сворачивает в угол и скрывает, при попытке развернуть из панели задач, он показывает свернутую форму в углу. При попытке развернуть окно из угла, он тоже сворачивает форму и только потом при попытке развернуть его из панели задачи он показывает форму.

Добавлено через 12 минут
Если ставить все на кнопку обычную, то все хорошо работает.

Значит это проблема в OnResize, т.к. меняются размеры формы при сворачивании и создании.
При каждом изменении размеров формы в процессе выполнения приложения возникает событие onResize
поэтому и происходит сворачивание.

Источник

Как свернуть форму delphi

Как программно свернуть а потом восстановить форму?

как свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphiкак свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphi
akvilon © ( 2004-06-25 19:15 ) [1]

как свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphiкак свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphi
Alaman ( 2004-06-26 16:30 ) [2]

Не совсем то. Надо что б на панель задач сворачивалось.
А ShowWindow(form_handle, SW_MINIMIZE); сворачивает кудато
в левый нижний угол. И потом еще и восстановить надо.

как свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphiкак свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphi
VMcL © ( 2004-06-26 22:50 ) [3]

>>Alaman (26.06.04 16:30) [2]

как свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphiкак свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphi
Alaman ( 2004-06-28 07:10 ) [4]

-Это совсем не то. VMcL если не знаешь дак лучше промолчи.
Умнее выглядеть будешь.

Хочешь, отвечу на [5] в таком же духе? Нет проблем:

Ты, че, чайник что ли? Какая винда, какое мессадже? Где ты видел сворачивающиеся проги? Не знаешь, как спросить, лучше промолчи, (хотя умнее не будешь)

Модераторы, неужели удалите?!

как свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphiкак свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphi
_ALEXey_ ( 2004-06-28 13:30 ) [7]

SendMessage(handle, WM_SYSCOMMAND, SC_MINIMIZE, 0);
SendMessage(handle, WM_SYSCOMMAND, SC_RESTORE, 0);

Куда-то в левый нижний угол сворачиваются неглавные формы.

как свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphiкак свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphi
имя ( 2004-06-28 13:57 ) [8]

Источник

Как свернуть форму delphi

По нажатию кнопки у меня сворачиваются все формы кроме двух и вызывается форма CopyForm. После того, как она закрыта, я хочу развернуть все окна, которые были свёрнуты, а этого почему-то не получается. Делаю я так:

Сворачивание:
procedure TInputForm.OpenClick(Sender: TObject);
var i: Word;
begin // Событие OnClick на TBitBtn
for i:=0 to Screen.FormCount-1 do
begin
Screen.Forms[i].Tag:=0;
if (Screen.Forms[i].Name<>«MainForm») and (Screen.Forms[i].Name<>«Fm_main») and
Screen.Forms[i].Visible and (Screen.Forms[i].WindowState<>wsMinimized) then
begin
Screen.Forms[i].WindowState:=wsMinimized;
Screen.Forms[i].Tag:=1
end
end
end;

Разворачивание:
procedure TCopyForm.FormHide(Sender: TObject);
var i: Word;
begin
for i:=0 to Screen.FormCount-1 do if (Screen.Forms[i].Name<>«MainForm») and
(Screen.Forms[i].Name<>«Fm_main») and Screen.Forms[i].Visible then
begin
if Screen.Forms[i].Tag=1 then
Screen.Forms[i].WindowState:=wsNormal;
Screen.Forms[i].Tag:=0
end
end;

как свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphiкак свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphi
dmtr ( 2002-08-13 17:49 ) [1]

Попробуй в процедуре разворотки исправить
Screen.Forms[i].Visible на Screen.Forms[i].Visible = False

как свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphiкак свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphi
Дельфятник ( 2002-08-14 09:16 ) [2]

как свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphiкак свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphi
Дельфятник ( 2002-08-14 09:39 ) [3]

Да, я забыл написать, что сразу после сворачивания форм идёт вызов CopyForm.ShowModal, то есть процедура TInputForm.OpenClick имеет вид:

procedure TInputForm.OpenClick(Sender: TObject);
var i: Word;
begin // Событие OnClick на TBitBtn
for i:=0 to Screen.FormCount-1 do
begin
Screen.Forms[i].Tag:=0;
if (Screen.Forms[i].Name<>«MainForm») and (Screen.Forms[i].Name<>«Fm_main») and
Screen.Forms[i].Visible and (Screen.Forms[i].WindowState<>wsMinimized) then
begin
Screen.Forms[i].WindowState:=wsMinimized;
Screen.Forms[i].Tag:=1
end
end;
CopyForm.ShowModal
end;

Ещё я изменил процедуру разворачивания (что, впрочем, не помогло).

procedure TCopyForm.FormHide(Sender: TObject);
var i: Word;
begin
for i:=0 to Screen.FormCount-1 do if Screen.Forms[i].Visible then
begin
if Screen.Forms[i].Tag=1 then
Screen.Forms[i].WindowState:=wsNormal;
Screen.Forms[i].Tag:=0
end
end;

как свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphiкак свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphi
Smithson ( 2002-08-14 12:49 ) [4]

Напиши процедуру разворачивания в событие OnClose для CopyForm.
У меня сработало.

как свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphiкак свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphi
Дельфятник ( 2002-08-14 13:40 ) [6]

2 Smithson: У меня Win2000 и Delphi 5.0 (Build 5.62).

2 dmtr: пробовал, не работает.

В общем, проблема в следующем: при сворачивании формы её Tag»у присваивается единица, а когда доходит до разворачивания, то у всех форм Tag»и оказываются равными нулю. При этом Tag»и форм нигде больше не используются и не меняются. Прям мистика какая-то.

как свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphiкак свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphi
Skier ( 2002-08-14 14:11 ) [7]


> У меня Win2000 и Delphi 5.0 (Build 5.62).
>.
> Прям мистика какая-то.

как свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphiкак свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphi
Дельфятник ( 2002-08-14 14:31 ) [8]

Короче. Я завёл TStringList, в который запихиваю имена сворачиваемых форм. А потом только их и разворачиваю. Всё замечательно работает. Но всё равно, всем спасибо.

как свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphiкак свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphi
dmtr ( 2002-08-14 14:50 ) [9]

Я проверил Tag до и после минимизации. Да, действительно Tag становится равным 0 сразу после минимизации формы. Но не смотря на это у меня все работает нормально.
Попробуй так. У меня работает.

procedure TInputForm.OpenClick(Sender: TObject);
var i: Word;
begin // Событие OnClick на TBitBtn
for i:=0 to Screen.FormCount-1 do
if (Screen.Forms[i].Name<>«MainForm») and (Screen.Forms[i].Name<>«Fm_main») and Screen.Forms[i].Visible then
Screen.Forms[i].WindowState:=wsMinimized;
CopyForm.ShowModal
end;

procedure TCopyForm.FormHide(Sender: TObject);
var i: Word;
begin
for i:=0 to Screen.FormCount-1 do
Screen.Forms[i].WindowState:=wsNormal;
end;

dmtr>Да, действительно Tag становится равным 0 сразу после минимизации формы

но и вариант
Screen.Forms[i].WindowState:=wsMinimized;
Screen.Forms[i].Tag:=1
который, вообще-то исправляет Tag после минимизации формы.
Но всё равно для меня это уже неактуально, поскольку я сделал это с использованием TStringList.

как свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphiкак свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphi
dmtr ( 2002-08-14 15:29 ) [11]

>Дельфятник
Зачем тебе TStringList. Попробуй код, который я предложил.

как свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphiкак свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphi
Дельфятник ( 2002-08-14 15:38 ) [12]

2 dmtr: Ваш вариант, во-первых, разворачивает все формы, хотя мне надо чтобы разворачивались только те, которые были свёрнуты автоматически.
А во-вторых, у меня есть форма, у которой WindowState=wsMaximized. Это, конечно, можно обойти доавлением соответствующего условия, но первого замечания это не снимает.

как свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphiкак свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphi
dmtr ( 2002-08-14 15:44 ) [13]

>Дельфятник
Странно. У меня разворачиваются окна, свернутые только в этом потоке(тобиш что свернул, то и развернул)

как свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphiкак свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphi
Дельфятник ( 2002-08-14 16:13 ) [14]

В своей программе я не создаю потоков.

Источник

Как свернуть прогу в трей?

как свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphiСвернуть прогу в трей
нашел компонент TextTrayIcon не пойму как с ним работать. А может кто другой способ знает для того.

как свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphiКак свернуть две формы в трей?
как свернуть две формы в треей при помощи cooltrayicon Добавлено через 2 минуты одна форма.

как свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphiСвернуть приложение в трей
Подскажите пожалуйста, как сделать так, чтобы при щелчке на кнопку программа сворачивалась в трей.

Решение

Как добавить значок программы в трей?

Для работы со значками в трее используется функция Shell_NotifyIcon, объявленная в модуле ShellApi.

Теперь, нам нужно отловить минимизацию приложения, для того, чтобы заменить стандартное действие Windows на «свёртывание в трей». Объявляем в секции protected процедуру

Итак, теперь наш обработчик ловит сообщение о минимизации и прячет нашу прогу в трей. Однако ловит не всегда. Попробуем, например, выбрать из системного меню команду Minimize или нажать на кнопку окна в панели задач, и что же? Не срабатывает!
Поэтому, нам нужно ещё переопределить обработчик onMinimize класса TApplication:

и не забудем присвоить эту процедуру:

Теперь поясню как работает. Когда приложение минимизируется, но эта минимизация не перехватывается нашим обработчиком WM_SYSCOMMAND, мы перехватываем минимизацию в процедуре OnMinimizeProc и принудительно передаём сообщение о минимизации нашей форме, где оно и будет успешно отловлено нашим обработчиком сообщения WM_SYSCOMMAND, благодаря которому прога и «сворачивается» успешно в трей и в этом случае.

Теперь нам нужно, чтобы значок в трее мог реагировать на манипуляции с ним. Если Вы внимательно посмотрите процедру Ic(), то Вы увидите там ссылку на сообщение WM_USER+1. Это не что иное, как сообщение, которое приходит нам от этого значка. Обычно для значка в трее делают всплывающее меню и выводят там те или иные действия. Но TPopUpMenu делается обычно для правой кнопки, по левой же просто активируют приложение. На форму кидаем комопонент TPopUpMenu (пусть это будет PopUpMenu1) и заносим в него все пункты меню, которые мы хотим, чтобы онм появилис в меню, которое будет всплывать по нажатию правой кнопки на значке.
После этого описываем обработчик: В вышеназванную секцию protected добавляем ещё одну процедуру IconMouse, которая будет реагировать на сообщение WM_USER+1

Для выполнения пунктов всплывающего меню, пишите стандартные обработчики onClick() для его пунктов.

Данный опус писался только в форме, в IDE не тестировался, но работоспособный на 100%. Всё работает конечно, но не обессудьте, если будут ошибочки мелкие.

Источник

Как свернуть форму delphi

Подобно фундаменту здания, форма представляет собой фундамент программы, на котором строится все остальное. Форма — это место, где пользователь общается с программой. Приложение может иметь несколько форм, каждая из которых выполняет свое особое предназначение.
Delphi инкапсулирует концепцию форм в класс TForm, и каждая форма, создаваемая с помощью конструктора форм (Form Designer), наследует основные свойства, методы и события этого класса.
Класс TForm не является прямым потомком TWinControl.

Свойства TForm
Класс TForm предоставляет возможность изменять его поведение и внешний вид формы с помощью ряда свойств.

procedure TDataEntryForm.FormCloseQuery(Sender: Tobject;
var CanClose: Boolean);
begin
<Проверяем, введен ли текст в элемент.>
if edtCustName.Text = ‘ ‘ then
begin
<Запрещаем закрытие.>
CanClose:= False;
(Устанавливаем фокус в поле с некорректными данными.)
ActiveControl:= editCustName;
end;
end;

Совет: Метод SetFocus потомков TWinControl устанавливает фокус ввода и обновляет свойство ActiveControl. Большинство событий передает параметр Sender своему обработчику. Sender определяет, какой элемент обнаружил событие и запустил обработчика.

BorderIcons
Свойство Borderlcons представляет собой набор логических значений, использующийся для определения набора пиктограмм в заголовке формы.
Значения biMinimize и biMaximize создают пиктограммы, которые позволяют свернуть и развернуть форму с помощью мыши.

Совет: Для того чтобы значения biMinimize и biMaximize работали, необходимо установить свойство Bo rderStyle равным bsSizeable или bsSizeToolWin.

Значение biHelp выводит кнопку с вопросительным знаком. Щелчок на ней вызывает контекстно-зависимую справку, которая выводится, как текст подсказки Hint, т.е. без вызова Windows Help. На рис. 1.1 представлена такая кнопка. как свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphiРис. 1.1. Доступ к контекстно-зависимой справке можно получить с помощью щелчка на кнопке с вопросительным знаком в заголовке формы.

Значение biSystemMenu создает слева от заголовка пиктограмму, позволяющую вызывать системное меню, как показано на рис. 1.2.

как свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphiРис. 1.2. Системное меню позволяет перемещать и закрывать форму, а также изменять ее размеры.

Совет: Для того чтобы значения biMinimize, biMaximize и biHelp работали, необходимо присвоить свойству заметку BorderIcons значение biSystemMenu.

По умолчанию свойство BorderStyle имеет значение bsSizeable, создающее обычное окно с изменяемыми размерами. Такое окно имеет стандартную строку заголовка и не имеет ограничений на расположение в ней кнопок. Примеры таких окон — программы Explorer и Notepad.
Значение bsDialog создает диалоговое окно, которое используется, когда программа требует от вас ответа для продолжения выполнения программы или для вывода информации, 16-разрядные версии Windows выводили такое окно как окно с широкой границей того же цвета, что и заголовок. Сейчас, если вы будете следовать новому трехмерному интерфейсу, границы окна будут выглядеть так же, как границы обычного окна! Видимое различие между стандартными и диалоговыми окнами в связи с тем, что последнее не может изменять размеры, состоит лишь в том, что указатель мыши не изменяется при пересечении рамки окна.

Совет: Значения biMinimize и biMaximize свойства Borderlcons не будут работать, если свойство BorderStyle установлено равным bsDialog.

Третий по популярности стиль окон — bsSingle, создающий форму, которая не может изменять размеры во время работы. В отличие от bsDialog, bsSingle не запрещает установку любых пиктограмм. Единственное ограничение состоит в том, что кнопка сворачивания окна, будучи выведенной, является недоступной (блокированной). Пример такой программы — Calculator. На рис. 1.4 вы видите другой пример окна bsSingle. как свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphiРис. 1.4. Стиль bsSingle полезен, когда пользователю не надо изменять размер окна.

Панель инструментов (Toolbar) позволяет быстро получить доступ к сгруппированным функциям. В Delphi можно сконструировать панель инструментов, поместив группу компонентов TSpeedButton в форму, имеющую стиль bsSizeToolWin или bsToolWindow. Окно в стиле bsSizeToolWin может изменять размеры и не имеет кнопок biMinimize, biMaximize HbiHelp. Окно в стиле bsToolWindow действует так же, но не позволяет изменять размеры.
Стиль bsNone создает окно без рамки и заголовка. Такое окно не рекомендуется использовать в качестве стандартного или диалогового, однако оно может быть полезным в программах сохранения экрана или заставках.

Совет: Если вы выбрали для свойства BorderStyle значение, создающее окно с разрешенным изменением размеров, Delphi автоматически установит значение AutoScroll равным True. Формы со стилями bsDialog и bsNone не могут иметь строки меню.

Height и Width
Эти свойства определяют высоту и ширину формы в пикселях и обычно используются для изменения размеров формы во время работы на дисплеях разной разрешающей способности. Вот пример увеличения размеров формы до размеров всего экрана.

<Перемещаем форму в верхний левый угол экрана.>
Left:= 0;
Тор:= 0;
(Изменяем размеры формы.)
Width:= Screen.Width;
Height:= Screen.Height;

(Класс TScreen, о котором будет сказано ниже, и его экземпляр Screen предоставляют доступ к информации о размерах всего экрана.)
Приведенный код, конечно, работает, но плохо, так как требуется четыре обновления формы. На самом деле лучше использовать метод SetBounds, определенный у потомков TWinControl:

SetBounds(0, 0, Screen.Width, Screen.Height);

ClientHeight и C lientWidth
Окно состоит из двух частей — клиентской и не клиентской. Обычно приложение выводит изображения только в клиентской области, размер которой возвращается через свойства ClientHeight и ClientWidth. Обычно эти свойства используются для того, чтобы убедиться, что в форме может выводиться весь объект определенного размера. Показанный ниже текст приводит размер клиентской области формы в соответствие размерам изображения, содержащегося в компоненте TImage, ImgPicture.

with imgPicture.Picture do
begin
(Изменение размера.)
ClientWidth:= Width;
ClientHeight:= Height;
end;

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

FormStyle
Свойство FormStyle перечислимого типа определяет, как форма взаимодействует с вашим приложением и Windows.
Существует два основных стиля форм — MDI (Multiple Document Interface — многодокументный интерфейс) и не MDI. Имеется два MDI-стиля (fsMDIForm и fsMDIChild), которые рассматриваются ниже. Не MDI формы существуют также в двух вариантах— fsNormal и fsStayOnTop. Наиболее популярен стиль fsNormal, который создает стандартный стиль, используемый для диалогов, панелей инструментов и SDI-приложений.
Стиль fsStayOnTop применяется реже и создает форму, всегда остающуюся поверх других форм и приложений, что может быть полезно при выводе системной информации и использовании ресурсов. Примером такого окна является окно программа Chat, используемой при работе в сети.
Вот как можно реализовать, подобно программе Chat, установку вывода поверх других окон путем выбора пункта меню.

procedure TFormI.mnuAlwaysOnTopClick(Sender: TObject);
begin
with mnuAlwaysOnTop do
begin
<Переключаем отметку выбора пункта меню.>
Checked:= not Checked;
<Проверка установок меню.>
if Checked then
(Устанавливаем стиль fsStayOnTop.)
FormStyle:= fsStayOnTop
else
<Возвращаем нормальный стиль.>
FormStyle:= fsNormal;
end;
end;

Совет: Изменение свойства FormStyle вызывает событие OnShow.

Icon
Свойство Icon определяет пиктограмму, выводимую Windows при сворачивании вашей формы. В интерфейсе Windows 95 эта пиктограмма также выводится в левом верхнем углу формы на кнопке системного меню. Если вы не определите значения для этого свойства, будет использоваться свойство Icon глобального объекта Application.

Совет: Поскольку клавиша Tab> используется для передачи фокуса другому управляющему элементу, она не вызывает генерации события.

Обычно свойство используется KeyPreview для обработки функциональных клавиш, которые должны быть переданы форме независимо от текущего активного элемента.
Без этого свойства обработка функциональных клавиш сводится к написанию для каждого элемента дополнительного обработчика, который должен отслеживать нажатие функциональных клавиш. Более элегантным является использование разделяемого обработчика событий, так что лучше всего применять свойство KeyPr e ssed.
При этом все нажатия клавиш отсылаются обработчикам событий OnKeyDown, OnKeyUp и OnKeyPress автоматически и для «отлова» функциональной клавиши надо написать только один обработчик события OnKeyDown формы. Вот пример закрытия формы при нажатии клавиши

procedure TFormI.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState):
begin
<Проверить, нажата ли клавиша
if Key = VK_F2 then
<Закрыть форму.>
Close;
end;

Рассматривая принцип работы этого кода, имейте в виду, что события OnKeyDown и OnKeyUp используют виртуальные коды (все они перечислены в файле WI NDOWS.PAS).

Menu
Это свойство определяет компонент TMainMenu, который предоставляет главное меню формы. Свойство Menu позволяет сделать меню контекстно-зависимым и часто используется в OLE-приложениях при замене вашего исходного меню на меню приложения-сервера. На рис. 1.5 показан документ Wordpad с внедренным объектом MediaClip. Обратите внимание, что меню и панель инструментов при этом те же, что и у Media Player. как свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphiРис. 1.5. Вы можете создать контекстно-зависимое меню с помощью свойства Menu

Для изменения свойства Menu просто присвойте ему новое значение (TMainMenu или его потомок):

Position
Position — это свойство перечислимого типа, определяющее размещение формы при запуске приложения.
Значение по умолчанию (poDesigned) заставляет форму выводиться в месте, определенном при разработке приложения. Положение и размер формы при этом берутся из свойств Left, Top, Height и Width. Поскольку вы не можете знать заранее, в какой системе будет запущено ваше приложение, может оказаться, что на мониторе с низким разрешением при использовании этого значения свойства будет видна только часть формы.
Более полезно значение poScreenCenter, использующее заданные вами при создании приложения значения Width и Height, но оно так изменяет Left и Тор, что форма выводится в центре экрана.
Если вы установите Position равным poDefault, Windows автоматически установит размеры и положение формы, но вы при этом лишитесь возможности контролировать ее размеры. Можете создать форму размером 200х200, которая будет выведена как 640х480. Из-за этого, в частности, не допускается применение данного значения для MDI-форм.
Значение poDefaultPosOnly более полезно, так как оно автоматически определяет расположение формы, но не ее размеры (а потому рекомендуется для MDI-форм, в которых требуются определенные размеры дочерних форм).
Последнее значение свойства (poDefaultSizeOnly) автоматически определяет размер, но не расположение формы. Это значение может использоваться там, где важно положение формы на экране, а не ее размер.
Хотя свойство Position позволяет определить, каким образом будет выводиться форма, профессионально сделанные приложения сами запоминают свое расположение на экране и при следующем запуске выводятся в той же позиции и с тем же размером. Это осуществимо, например, благодаря записи положения окна в Registry или в INI-файле, в том же каталоге, где находится приложение. Обычно сохранение позиции и размеров экрана выполняется в самый последний момент — при уничтожении формы.

procedure TForml.FormDestroy(Sender: TObject);
var
sAppPath: String;
iniSettings: TINIFile;
begin
<Получить путь к ЕХЕ-файлу приложения.>
sAppPath:= ExtractFilePath(Application.EXEName);
<Создаем объект TINIFile.>
iniSettings:= TINIFile.Create(sAppPath + ‘SETTINGS.INI’);
try
<Записываем свойства в INI-файл.>
iniSettings.Writelnteger(Name,’Left’,Left);
iniSettings.Writelnteger(Name,’Top’,Top);
iniSettings.Writelnteger(Name,’Width’,Width);
iniSettings.Writelnteger(Name,’Height’,Height);
finally
iniSettings.Free;
end;
end;

Совет: Для компиляции примера не забудьте включить в раздел uses модуль INIFiles.

После выполнения кода ваш INI-файл будет содержать нечто вроде

[Form1]
Left=108
Тор=174
Width=540
Height=165

Заметьте, что для строки раздела используется свойство Name вашей формы.
Восстановить положение формы на экране немного сложнее (главным образом из-за того, что следует отработать ситуацию, когда INI-файла нет).

WindowState
Свойство перечислимого типа WindowState определяет состояние окна— свернутое, развернутое или нормальное. По умолчанию оно имеет значение wsNormal (при этом окно выводится в состоянии, определяемом свойствами Position, Left, Top, Height и Width). Чтобы свернуть или развернуть форму, используются значения wsMinimize и wsMaximize.

События TForm
Класс ТForm добавляет несколько событий к родительскому классу TWinControl. Эти события позволяют изменять поведение формы путем выполнения загрузки и сохранения информации о состоянии формы или распределения и освобождения дополнительных ресурсов.
Когда форма создается и отображается, происходит пять следующих событий.

1. OnCreate запускается при создании формы и позволяет распределять ресурсы и инициализировать форму.
2. OnShow происходит непосредственно перед выводом формы на экран. К этому времени все элементы управления и компоненты созданы и инициализированы.

Совет: Хотя к тому моменту, когда происходит событие OnShow, форма еще не видна, свойство Visible установлено равным True.

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

Совет: OnResize вызывается неоднократно в процессе изменения размеров формы.

Совет: Событие OnCreate происходит один раз за все время существования формы, прочие же события могут вызываться неоднократно.

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

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

procedure TFormI.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
CanClose:= MessageDIg(‘Close form?’, mtConfirmation,
[mbYes,mbNo], 0) = mrYes;
end;

2. OnClose генерируется непосредственно перед закрытием формы. Обычно оно используется для изменения стандартного поведения формы при закрытии. Для этого Delphi передает в обработчик события переменную Action, которая может принимать одно из четырех значений: caHide, caMinimize, caNone или caFree. По умолчанию для не MDI-форм используется caHide, скрывающее форму. Для дочерних MDI-форм значение по умолчанию, сворачивающее форму, равно caMinimize. Если Action установлено равным caNone, закрытия не происходит. caFree заставляет Delphi закрыть форму и освободить всю связанную с ней память. Если после этого сослаться на объект формы, произойдет исключительная ситуация.

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

3. OnDeActivate происходит при потере формой фокуса ввода. Запуск происходит по тем же правилам, что и запуск события OnActivate.
4. OnHide запускается непосредственно перед тем, как форма станет невидимой.

Совет: Хотя при вызове OnHide форма еще видна, ее свойство Visible установлено равным False.

5. OnDestroy генерируется непосредственно перед уничтожением формы. Обычно оно используется для освобождения ресурсов, выделенных в OnCreate.

Совет: Событие OnDestroy вызывается только один раз за все время существования формы, прочие события могут вызываться неоднократно.

Повторное использование форм
К этому моменту вы уже должны быть хорошо знакомы с объектно-ориентированной природой Delphi. Поскольку TForm представляет собой класс, он может повторно использоваться, расширяться и изменяться. Повторное применение форм поддерживается через шаблоны форм и наследование. Оба эти метода используют Object Repository

Шаблоны форм
Шаблоны форм (Form Templates) предоставляют основу для новой формы. По одной заготовке можно создать несколько форм. В Delphi есть хранилище объектов (Object Repository), в котором содержится множество различных шаблонов форм, диалогов и проектов.

Совет: Delphi автоматически включает вновь созданные формы в текущий проект. Они связаны с проектом, как
будто вы воспользовались опцией Use.

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

Управление хранилищем объектов
После добавления шаблона в хранилище вы вдруг обнаруживаете, что совсем забыли внести в него последние исправления. Вы можете сделать это, используя диалоговое окно Object Repository, показанное на рис. 1.9. Для его вызова воспользуйтесь командой Tools/Repository.
В списке Pages, расположенном слева в диалоговом окне, перечислены страницы, выводимые в диалоговом окне New Items. Управлять этим набором можно с помощью кнопок Add Page, Delete Page и Rename Page. как свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphiРис. 1.8. Опция Shared Repository позволяет определить разделяемое хранилище шаблонов как свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphiРис. 1.9. Использование диалогового окна Object Repository для работы с шаблонами

Выбор страницы из списка приводит к заполнению списка Objects объектами, содержащимися на этой странице. Если вы выберете элемент [Object Repository], будут показаны все объекты в хранилище. Вы можете перемещать объекты путем их перетаскивания из списка Objects на нужную страницу в списке Pages.
Кнопка Edit Object позволяет вывести диалоговое окно Edit Object Info, показанное на рис. 1.10. С его помощью можно редактировать свойства объекта в любой момент.
Кнопка Delete Object удаляет объект из хранилища, но не удаляет его файлы с диска.
Переключатели, расположенные внизу диалогового окна, выполняют две задачи. Первый переключатель. New Form, позволяет определить шаблон, используемый при создании новой формы. Второй, Main Form, определяет шаблон, используемый для построения главной формы при создании нового приложения. Для назначения соответствующих шаблонов просто выберите объект из списка Obje c ts и отметьте нужную опцию.
как свернуть форму delphi. Смотреть фото как свернуть форму delphi. Смотреть картинку как свернуть форму delphi. Картинка про как свернуть форму delphi. Фото как свернуть форму delphiРис. 1.10. Редактировать свойства объекта можно в хранилище с помощью диалогового окна Edit Object Info

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

Наследование форм
Наследование форм воплощает лучшие возможности повторного использования форм Use и Copy. При копировании вы создаете дубликат формы и добавляете в него необходимые компоненты и код. Неудобство этого метода состоит в том, что изменения не вносятся в шаблон. При использовании Use изменения вносятся не только в шаблон, но и во все объекты в других проектах.
Наследование позволяет создать множество экземпляров шаблона, которые могут отличаться один от другого, как при использовании Copy. Оно так же автоматически вносит изменения в объект хранилища, как и при использовании Use.

Заголовок нового диалогового окна— OKHelpRightDlg2. Почему Delphi создает это диалоговое окно как OKHelpRightDIg? Ответ заключается в наследовании форм. В списке форм вашего проекта содержится четыре объекта— Form1, OKHelpRightDIg, OKHelpRightDlg2 и OKRightDlg. Поскольку вы наследуете новую форму из OKHelpRightDIg, Delphi включает его в ваш проект для компиляции вашей программы. Это и приводит к наименованию новой формы как OKHelpRightDlg2. К тому же это позволяет избежать конфликта имен. В свою очередь, OKHelpRightDIg — наследник OKRightDlg, а потому последний также включен в проект.

ПРЕДОСТЕРЕЖЕНИЕ: Две родительские формы, OKHelpRightDIg и OKRightDlg, связываются с проектом так же, как и опция Use, поэтому, решив их изменить, вы измените объекты, хранящиеся в Object Repository.

Цепочка наследования отражена в автоматически генерируемом коде. Описание класса OKHelpRightDlg2 выглядит так.

Совет: Описание класса или типа начинается с буквы Т.

Это объявление не назовешь чересчур информативным. Поскольку вы не добавляли ни новых компонентов, ни кода, OKHelpRightDlg2 не определяет ни новых свойств, ни методов или событий. Определение класса TOKHelpRightDIg несколько интереснее.

TOKHelpRightDIg = class (TOKRightDIg)
HelpBtn: TButton;
procedure HelpBtnClick(Sender: TObject);
private
<Закрытые объявления.>
public
<Открытые объявления.>
end;

Как вы можете видеть, OKHelpRightDIg получает компоненты и код от OKRightDIg и добавляет объект HelpBtn типа TButton, а также обработчик события HelpBtnClick.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *