В delphi разместить компонент на заголовке окна. Главные окна Delphi

Знакомство со средой программирования Delphi, как правило, начинается с осмотра внешнего вида рабочей области Delphi. В высокой эффективности работы программистов немалую роль играет удобство интерфейса среды программирования. Чем выгодно и отличается Delphi. Внешне рабочая область Delphi выглядит как несколько одновременно раскрытых на экране окон. Для этих окон предусмотрено свободное перемещение по экрану, в том числе и приведение их к состоянию наложения друг на друга. Интересен тот факт, что у некоторых пользователей при работе в данной среде разработки наблюдается некоторый дискомфорт, вызванный незакреплённым положением в пространстве, которое занимают рабочие окна Delphi. Это происходит в большинстве случаев из-за того, что многие пользователи привыкают к «строгости» среды текстового процессора Word. Так как каждое окно в Delphi имеет своё назначение, чувство дискомфорта постепенно пропадает. В рабочих окнах Delphi нетрудно разобраться, что позволяет быстрее адаптироваться к среде разработки.

Разные версии программы могут несколько отличаться друг от друга количеством окон и их наименованиями, однако, различия эти несущественные, и вы всегда поймёте из контекста и внешнего вида окон их назначение, если вы были внимательны при прочтении этого материала. Итак, запустим Delphi и пронаблюдаем за рабочей областью. Здесь мы увидим 5 основных окон Delphi, которые сейчас постараемся расположить для вас в наиболее ясной последовательно относительно их важности.

  • Главное окно программы (Delphi # - Project 1). Обратите внимание, что в названии данного окна используется символ «#», который обозначает номер вашей версии Delphi.
  • Окно дерева объектов (Object TreeView)
  • Окно редактора свойств объектов (Object Inspector)
  • Окно формы (Form 1)
  • Окно редактора кода программы (Unit1.pas)

Теперь разберём функции этих окон в соответствующем порядке.

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

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

Окно формы является визуальным проектом окна разрабатываемой в данный момент программы.

Окно дерева объектов наглядно отображает связи между отдельными компонентами активной формы или активного модуля данных.

Возможно, начинающие думают, что для того чтобы создать свою первую программу на Delphi, нужно потратить много времени на изучение системы. Тем не менее, в Delphi это не сложнее простого щелчка мышкой!

Итак, запустим Delphi . Для этого нужно создать ярлык на рабочем столе, если, конечно, Вам не нравится каждый раз ходить по адресу Program Files - Borland - Delphi -Bin и отыскивать файл delphi32.exe . Гораздо проще один раз найти его ярлычок в меню ПУСК - ВСЕ ПРОГРАММЫ - BORLAND DELPHI - DELPHI , перетащить его отсюда на рабочий стол и, как говорится, будет Вам счастье!

Перед нами четыре окна Delphi . Вверху во вcю ширину экрана окно управления проектом и средой разработки - главное окно Delphi .
При его сворачивании сворачиваются и все остальные. Слева - Инспектор объектов . В нём задаются свойства составляющих нашу программу компонентов. И наконец, в центре одно над другим два окна Delphi, окно формы будущей программы и окно программной начинки. Прямо перед нами - окно, которое в Delphi называется Форма . Именно Форма является визуальным прообразом нашей будущей программы. Теперь посмотрите, как легко получается программа в Delphi :

  1. Наводим мышку на зелёный треугольник-стрелку на главном окне
  2. Смотрим - всплывает подсказка "Run (F9) "
  3. Жмём на эту кнопку (или F9 на клавиатуре)
  4. Получаем готовую Windows-программу!
Однако (как подсказывают в комментариях), не во всех версиях Delphi запуск программы производится кнопкой F9, для некоторых это CTRL+F9 - посмотрите сами, какую подсказку выдает Delphi при наведении на зелёную стрелку.

По умолчанию программа создаётся в папке :

Отсюда её можно скопировать и использовать так, как нам нужно. Я, например, для начала ставлю ярлык на рабочий стол , чтобы при тестировании проверять её без использования Delphi.

Мы получили программу, состоящую из одного пустого окна. Тем не менее наша программа имеет все атрибуты, присущие всем программам в Windows: заголовок, системное меню (кликните по левому краю заголовка!), кнопки свернуть, развернуть, закрыть , может менять свои размеры.

Закройте программу-Форму. Рассмотрим полезные для нас свойства Формы :

  1. Надпись на заголовке - свойство Caption . Сейчас это Form1, и совпадает со свойством Name . В инспекторе объектов можно поменять их по своему усмотрению. Напишите в свойстве Caption, например, "Простейшая программа!"
  2. Цвет - свойство Color .
  3. Размеры - ширина и высота в пикселах, свойства Width и Height . Изменяем их мышкой, двигая края Формы, затем устанавливаем более точные значения в Инспекторе.
  4. Положение на экране - свойства Top и Left . Это расстояния в пикселах от верхней и левой границы экрана соответственно. Если необходимое положение Формы закрывает элементы управления Delphi, просто сверните её. Но есть очень полезное
  5. свойство Position , с помощью которого можно настроить автоматическое появление Формы в нужном месте. Разверните выпадающий список:
    • При значении poDesigned Форма появится в том месте, где она находилась при проектировании. Это значение по умолчанию.
    • При значениях poDesktopCenter и poScreenCenter Форма появится в центре рабочего стола или центре экрана.

    • Форма может быть вызвана из другого окна-формы. Тогда при значениях
    • poMainFormCenter она появится в центре главного окна приложения,
    • poOwnerFormCenter - в центре вызывающего окна, так называемого "владельца".
  6. Вы можете запрограммировать появление Формы в нормальном, минимизированном или максимизированном состоянии. За это отвечает
  7. свойство WindowState - значения wsNormal , wsMinimized и wsMaximized соответственно.

  8. Не у всех окон в заголовке есть кнопки свернуть, развернуть, закрыть . Их наличием или отсутствием управляет
  9. свойство BorderIcons . В Инспекторе слева от него маленький плюсик, открывающий признак наличия или отсутствия нужной кнопки. True - кнопка будет, False - нет. Смело экспериментируйте, но изменения будут видны только в работающей программе, а не в прототипе. А вот как вы будете закрывать Форму при biSystemMenu=False , ведь крестика закрытия не будет? Запомните сочетание ALT+F4 . Это команда закрытия любых окон, включая саму Windows!

  10. Вы можете управлять также границами Формы. Для этого служит
  11. свойство BorderStyle . При значении
    • bsSizeable - обычная Форма, значение по умолчанию.
    • bsNone - Форма вообще не будет иметь границ, включая строку заголовка.
    • bsSingle - Форма не может менять размеры, но может свернуться или развернуться.
    Таким образом, комбинируя свойства BorderIcons и BorderStyle можно, например, получить форму с неизменными размерами и без возможности свернуться и развернуться:

Теперь займёмся сохранением нашего проекта. Так как по умолчанию Delphi сохраняет новые проекты в папке C:\Program Files\Borland\Delphi7\Projects , то если мы не будем выделять под него место сами, все файлы данного и всех будущих проектов будут свалены в кучу. Поэтому сразу в начале работы над новым проектом командой меню File -» Save All (или соответствующей кнопкой на главном окне) сохраним проект в специально для него созданную папку. Создать её можно прямо в открывшемся окошке. Проект в целом сохраняется в файле с именем Project1. Форма функционирует вместе с программой, описывающей её работу, так называемым модулем . Если модулей в проекте несколько, для каждого из них Delphi создаст отдельный файл, и предложит его сохранить под именем Unit1, Unit2 и т.д. И для файла проекта, и файлов модулей можно дать и своё, более осмысленное название. Договоримся, что каждый новый проект сразу будем сохранять, и я не буду дополнительно напоминать об этом.
Теперь выполните команду File -» Close All . Попробуйте открыть файл модуля командой Open... . Модуль откроется вместе с нашей формой, мы сможем нормально работать, но кнопка запуска программы окажется неактивной. Поэтому сначала нужно открывать файл проекта. Для этого, кстати, есть специальная команда меню File -» Open Project... Ctrl F11 , и соответствующая кнопка, прямо над кнопкой запуска. Теперь в окне выбора будет только один файл, файл проекта. При его открытии будет открыт и первый модуль и первая форма проекта. Для нашего проекта этого достаточно. Если в проекте несколько форм, их модули и формы открываем командой Open... . Можно открывать модули других проектов, например, для копирования кода.

Теперь я предлагаю сделать следующее. Надеюсь, ваш жёсткий диск разбит хотя бы на две части, для размещения системы, и для документов. Поскольку систему приходится иногда переустанавливать, под проекты Delphi целесообразно отвести специальную папку на другом диске, например D:\Проекты Delphi\ , и сохранять проекты туда, а в папку по умолчанию поставить на неё ярлык для быстрого перехода. Теперь, в случае переустановки системы, Вам не придётся дополнительно сохранять Ваши наработки.

Да, кстати, дистрибутив Delphi7, которым пользуюсь я, можно скачать с

В прошлых уроках к примеру мы ознакомились с компонентом TButton и при написании обработчика события кнопки использовали для вывода сообщения процедуру ShowMessage. Поэтому, в этом уроке, предлагаю ознакомиться с основными процедурами и функциями для реализации диалоговых окон, и пример их использования.
Процедура ShowMessage , а также функции MessageDlg и MessageDlgPos отображают окно (панель) вывода сообщений. а функции InputBox и InputQuery отображают окно (панель) для ввода информации.
Процедура ShowMessage
Процедура ShowMessage (const Msg: String) отображает окно сообщения с кнопкой ОК . Заголовок этого окна содержит название исполняемого файла приложения, а строка Msg выводится как текст сообщения. В уроке , посвященному компоненту Delphi TButton (кнопка), используя ShowMessage, мы выводили на экран сообщение "Теперь кнопка Закрыть приложение активна".
Для примера давайте создадим новый проект и разместим на нем 5 кнопок (TButton). Как это делать мы уже знаем.
У первой кнопки изменим заголовок (свойство Caption) на "ShowMessage", у второй на "MessageDlg", у третьей на "MessageDlgPos", у четвертой на "InputBox" и у пятой на "InputQuery". Свойство Width у всех этих кнопок изменим на 100. И естественно дадим кнопкам понятные имена, для этого поменяем у кнопок свойство Name на "ShowMessageButton", "MessageDlgButton", "MessageDlgPosButton", "InputBoxButton" и "InputQueryButton".
Теперь давайте создадим обработчик события OnClick для кнопки ShowMessageButton и в нем напишем следующее:

200?"200px":""+(this.scrollHeight+5)+"px");">


Полностью наша процедура будет выглядеть так:

200?"200px":""+(this.scrollHeight+5)+"px");">procedure TForm1.ShowMessageButtonClick(Sender: TObject);
begin
ShowMessage("Это простое диалоговое окно.");
end;


Давайте скомпилируем и запустим нашу программу. Перед нами появится форма с 5-ю кнопками. Если нажать на кнопку ShowMessage , то перед нами появится сообщение "Это простое диалоговое окно".

Рисунок. Окно сообщения с кнопкой ОК, вызываемое процедурой ShowMessage

Поскольку название нашего проекта мы не меняли, то он у нас называется Project1 и соответственно в заголовке этого окна мы видим это имя.

Функция MessageDlg
Функция MessageDlg(const Msg: String; AType: TMsgDlgType; AButtons: TMsgDlgButtons; Helpctx: Longint) : word отображает окно сообщения в центре экрана и позволяет получить ответ пользователя. Параметр Msg содержит отображаемое сообщение.
Окно сообщения может относиться к различным типам и наряду с сообщением содержать картинки. Тип окна сообщения определяется параметром АТуре, который может принимать следующие значения:
mtWarning - окно содержит черный восклицательный знак в желтом треугольнике и заголовок Warning;
mtError - окно содержит белый косой крест в красном круге и заголовок Error;
mtInformation - окно содержит синюю букву «i» в белом круге и заголовок Information;
mtConfirmation - окно содержит синий знак «?» в белом круге и заголовок Confirmation;
mtCustom - окно не содержит картинки, в заголовке выводится название исполняемого файла приложения.

Параметр AButtons задает набор кнопок окна и может принимать любые комбинации следующих значений:
mbYes (кнопка Yes);
mbAbort (кнопка Abort);
mbNo (кнопка No);
mbRetry (кнопка Retry);
mbOk (кнопка OK);
mbIgnore (кнопка Ignore);
mbCancel (кнопка Cancel);
mbAll (кнопка All);
mbHelp (кнопка Help);

Для значения параметра AButtons имеются две константы - mbYesNoCancel и mbOKCancel , задающие предопределенные наборы кнопок:
mbYesNoCancel = ;
mbOKCancel =

При нажатии любой из указанных кнопок (кроме кнопки Help) диалоговое окно закрывается, а результат (свойство ModalResult) возвращается функцией MessageDlg .
Параметр HelpCtx определяет контекст (тему) справки, которая появляется во время отображения диалогового окна при нажатии пользователем клавиши F1. Обычно! значение этого параметра равно нулю.
Ниже приведен пример использования функции MessageDlg:

200?"200px":""+(this.scrollHeight+5)+"px");">procedure TForm1.MessageDlgButtonClick(Sender: TObject);
var
rez: TModalResult;
begin
rez:= MessageDlg("Перед вами пример использования функции MessageDlg?", mtError, , 0); // выводим сообщение об ошибке с кнопками OK и NO

end;


Рисунок. Диалоговое окно при использовании функции MessageDlg

Функция MessageDlgPos
Функция MessageDlgPos(const Msg: String; AType: TMsgDlgType; AButtons: TMsgDlgButtons; HelpCtx: Longint; X, Y: Integer) : Word отличается от функции MessageDlg наличием параметров Х и Y, управляющих положением окна на экране.
Давайте немного изменим предыдущий пример и получим:

200?"200px":""+(this.scrollHeight+5)+"px");">procedure TForm1.MessageDlgPosButtonClick(Sender: TObject);
var
rez: TModalResult;
begin
rez:= MessageDlgPos("Перед вами пример использования функции MessageDlgPos?", mtConfirmation, , 0, 0, 0); // диалоговое окно выводится с координатfvb X=0 и Y=0
if rez = mrOk then ShowMessage("Вы согласились"); // если нажали ОК, то появляется сообщение о том что мы согласились
if rez = mrNo then ShowMessage("Вы не согласились"); // если нажали NO, то появляется сообщение о том что мы не согласились
end;


Рисунок. Диалоговое окно при использовании функции MessageDlgPos

Функция InputBox
Функция InputBox(const ACaption, APrompt, ADefault: String): String отображает диалоговое окно для ввода строки текста. Окно выводится в центре экрана и содержит поле ввода с надписью, а также кнопки ОК и Cancel .
Параметр ACaption задает заголовок окна, а параметр APrompt содержит поясняющий текст к полю ввода. Параметр ADefault определяет строку, возвращаемую функцией при отказе пользователя от ввода информации (нажатие кнопки Cancel или клавиши Esc).
Ниже приведен пример использования функции InputBox :

200?"200px":""+(this.scrollHeight+5)+"px");">procedure TForm1.InputBoxButtonClick(Sender: TObject);
var
pas: string;
begin
pas:= InputBox("Авторизация", "Введите пароль", "********"); // Выводим Диалоговое окно, которое запрашивает пароль
if pas = "123" then
ShowMessage("Пароль принят");
if pas <> "123" then
ShowMessage("Пароль не правильный");
end;


Рисунок. Пример использования функции InputBox

Функция InputQuery
Функция InputQuery (const ACaption, APrompt: String; var Value: String): Boolean отличается от функции InputBox тем, что вместо третьего параметра - строки по умолчанию - используется параметр Value, который в случае подтверждения ввода содержит введенную пользователем строку.
В качестве результата функция возвращает логическое значение, позволяющее определить, каким образом завершен диалог. Если нажата кнопка ОК , то функция возвращает значение True , если нажата кнопка Cancel или клавиша Esc - значение False .
В нижеприведенном примере показано использование функции InputQuery :

200?"200px":""+(this.scrollHeight+5)+"px");">procedure TForm1.InputQueryButtonClick(Sender: TObject);
var
name: string;
begin
name:= "Введите имя";
InputQuery("Пользователь", "Введите фамилию", name); // Выводим диалоговое окно в котором нас просят ввести Имя
ShowMessage("Вы ввели "+name); // Выводим сообщение с тем именем которое мы ввели
end;

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

Для того чтобы получить возможность скачать исходник Delphi к этому уроку, необходимо посетить сайт рекламодателя. После этого, появится ссылка на исходник Delphi к уроку Диалоговые окна в Delphi. ShowMessage, MessageDlg, MessageDlgPos, InputBox и InputQuery
Нажмите на эту ссылку



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: