Delphi как сделать кнопку на форму

    Редкая программа обходится одной формой. Мы можем с лёгкостью создавать дополнительные формы Delphi, предоставляющие возможность, например, вести диалог с пользователем, принимать и выводить любую необходимую информацию. В этом уроке научимся создавать несколько форм Delphi дополнительно к основной.
    Ввести новую форму в программу проще всего нажатием на кнопочку на главном окне Delphi. Также есть и соответствующая команда меню File -» New -» Form

   Форма создаётся вместе с новым модулем, описывающим её работу. Сразу же покажем, как удалить Форму из программы. Для этого также есть кнопочка, и команда меню Project -» Remove from project.... Так как Форма создаётся вместе с её модулем, то в появившемся окошке нужно выбрать модуль, который и будет удалён из проекта вместе с Формой:

  Сразу возникает вопрос, а что будет, если попытаться удалить и модуль Unit1, что останется?. Выполните команду Project -» View Sourse. В редакторе кода появится новая вкладка, на которой будет отображён код Главного Окна программы (не Главной Формы, а именно Окна. В Windows ведь все объекты рассматриваются как окна.) Главное окно невидимо, но управляет всем проектом, и может работать вообще без Форм. Туда можно вставлять свой код, и писать нехилые программы, как в классическом Паскале.
   Все новые формы автоматически заносятся в разряд автосоздаваемых, то есть в начале работы программы они будут автоматически создаваться сразу, одновременно с первой, главной Формой проекта. Нам не придётся этим заниматься в программе, но одновременное создание многих форм занимает ресурсы и время программы. Поэтому предлагаю сразу научиться создавать нужные формы только в нужный момент.
   Во-первых, нужно отменить автосоздание форм. Выполните команду меню Project -» Options... В появившемся окошке отображаются Main form (главная Форма), Auto-create (автосоздаваемые) и Available(доступные) формы проекта. Нам нужно перевести Форму из разряда автосоздаваемых в разряддоступных Форм. Делается это нажатием кнопки " > " (обратная операция - нажатием кнопки " < "):

   Таким образом, главная Форма Form3 создаётся сама, а дополнительную форму Form2 мы создадим в программе при необходимости.
   Если этого ничего мы не предприняли (что вполне допустимо при малом количестве дополнительных delphi как сделать кнопку на форму форм), то для появления новой Формы на экране достаточно написать:
   Form2.Show; // в случае обычной Формы
   Form2.ShowModal; // в случае модальной Формы
Если же мы перевели дополнительные Формы в разряд доступных, то перед каждым вызовом такой Формы необходимо делать проверку на существование Формы (оператором Assigned) таким образом:
   if (not Assigned(Form2)) then   // проверка существования Формы (если нет, то
       Form2:=TForm2.Create(Self);    // создание Формы)
   Form2.Show; // (или Form2.ShowModal) показ Формы
   Теперь разберёмся в разнице между обычными и модальными Формами. Обычные Формы позволяют свободно переходить между всеми Формами, находящимися в данный момент на экране. Модальная Форма в момент вызова блокирует переход между Формами проекта до тех пор, пока не будет закрыта, и работа возможна только в ней.
   При попытке компилирования программы, содержащей вызов второй формы, Delphi выдаст такой запрос:

означающий:

Форма Form2 содержит вызов формы Form3, которая объявлена в модуле Unit3, но который отсутствует в списке используемых модулей. Вы хотите добавить его?

Нужно разрешить, и в начале модуля перед директивой
{$R.dfm}
будет добавлена фраза
uses Unit2;
   В принципе, можно добавить её туда перед компиляцией "ручками", и тогда запроса не будет. Но смысл? Отвечаем "Yes" и снова жмём F9.

   Первым делом введём в форму операцию её закрытия! Сделать это можно несколькими способами. Возьмём кнопку, напишем "Закрыть" и в обработчике OnClick напишем:
Form2.Close; //В принципе, достаточн просто Close;

   Теперь же необходимо рассмотреть способ закрытия Формы, который относится именно к модальнымформам. Он используется диалоговыми окнами с вопросом, требующим подтверждения, и в других аналогичных случаях. На Форме нужно расположить несколько кнопок, нажатие которых предполагает соответствующий ответ: "Да", "Нет", "Отмена", и т.д.
    У каждой кнопки есть свойство ModalResult, среди значений которой mrYesmrNomrCansel и другие (посмотрите!). Значение ModalResult выбранной кнопки передаётся свойству ModalResult Формы. Это свойство отсутствует в списке свойств Формы, которые можно увидеть в Инспекторе Объектов, но программно оно доступно (напишите " Form2 ", поставьте точку и поищите в появившемся списке!).
    Нажатие кнопки со значением свойства ModalResult, отличного от mrNone, приводит к закрытию Формы, даже если у кнопки отсутствует обработчик нажатия! Затем можно проанализировать свойство ModalResultФормы и выяснить, какой же ответ на поставленный вопрос дал пользователь:

procedure TForm3.Button1Click(Sender: TObject);
begin
  Form2.ShowModal;
  if Form2.ModalResult=mrYes then   // Этот оператор          будет доступен только после закрытия Form2
  Form3.Caption:='Пользователь ответил положительно!';
end;

  Как видно из этого примера, для доступа из одной Формы как к свойствам другой Формы, так и к свойствам её компонентов необходимо указывать имя Формы, к которой мы обращаемся. Мы также имеем доступ к данным, использующимся в модуле, описывающим её работу. Для этого необходимо указывать уже имя модуля. Например, для обращения к переменной X из модуля Unit2 пишем так: Unit2.X.
   Имеющейся возможности укрыть данные от использования в других модулях касаться пока не будем.
   В момент закрытия Формы часто в программе необходимо выполнить определённые операции. Делается это в обработчике события OnClose Формы. А теперь рассмотрим блокировку закрытия Формы. Если вдруг понадобится заставить пользователя выполнить определённые действия перед закрытием Формы (это касается как дополнительных форм, так и основной Формы программы), нужно воспользоваться обработчиком события OnCloseQuery. В этом обработчике определена переменная логического типаCanClose. Форма будет закрыта только в том случае, когда
   CanClose:=True;
Например, если создать такой обработчик OnCloseQuery основной Формы программы:
procedure TForm3.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose:=False;
end;

то пользователь просто не сможет закрыть программу иначе как через Диспетчер задач Windows!

←Предыдущий урок

В начало урока

Следующий урок

←Вернуться в Уроки

 

 


Источник: https://mydelphiprogramms.jimdo.com/2012/03/23/%D1%83%D1%80%D0%BE%D0%BA-8-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0-%D1%81-%D0%B4%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%BC%D0%B8-%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D0%BC%D0%B8-delphi/



Рекомендуем посмотреть ещё:


Закрыть ... [X]

Как сделать кнопку рядом с названием на форме? - Delphi для начинающих Утолщения на коже стоп

Delphi как сделать кнопку на форму Нажал кнопку - открыл форму - Компоненты Delphi - Форум программистов
Delphi как сделать кнопку на форму Как сделать кнопку в Delphi 7 чтоб при нажатии она меняла. - Делфи
Delphi как сделать кнопку на форму Как создать свою кнопку в заголовке формы (на Caption Bar) в Delphi?
Delphi как сделать кнопку на форму Ответы глупый вопрос, но как в Delphi сделать так, что при
Delphi как сделать кнопку на форму Описывается работа с дополнительнымы формами в Delphi
Delphi как сделать кнопку на форму Урок 8. Работа с дополнительными формами Delphi - Delphi
Delphi как сделать кнопку на форму Delphi - Как создать кнопку на форме Форум
Delphi как сделать кнопку на форму Как открыть новую форму в Delphi Форум
Делфи. Цвет кнопки в форме Форум Виды плетения золотых цепочек (133 фото женские модели из золота) КРИК ДУШИ. БОЛЬ СЕРДЦА.(Всё о грустном).СТИХИ Клумбы из покрышек - фото модных идей оформления красивой клумбы на Методы и этапы стрижки Наращивание ногтей фото - Оренбург Пневмоподвеска для усиления рессор авто прицепа Прически для девушек с высоким лбом - Красота - Леди Раскраски Аниме - Манга раскраска