Delphi

КОМПЬЮТЕРНЫЕ КУРСЫ "ПОИСК"

[Главная страница] [Delphi] [Контакты]

Динамическое создание формы


Динамическое создание формы

Создайте консольный проект DynaForm и модуль DynaMemo.

Этот пример показывает, как динамически создать форму и TMemo. TMemo заполняется случайными символами.

На практике разработчики Delphi обычно создают формы в ходе разработки, что предполагает выведение нового класса из базового класса и визуальное построение содержания формы. Но для отображения формы не обязательно создавать класс-потомок класса TForm, особенно если это касается простой формы.

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

В неординарном в некотором смысле примере DynaForm нет формы, определенной в ходе разработки, но имеется модуль с такой функцией;

unit DynaMemo;

interface

procedure ShowStringForm (str: string);

implementation

uses
  Forms, Controls, StdCtrls;

procedure ShowStringForm (str: string);
var
  form: TForm;
begin
  Application.CreateForm (TForm, form);
  form.caption := 'DynaForm';
  form.Position := poScreenCenter;
  with TMemo.Create (form) do
  begin
    Parent := form;
    Align := alClient;
    Scrollbars := ssVertical;
    ReadOnly := True;
    Color := form.Color;
    BorderStyle := bsNone;
    WordWrap := True;
    Text := str;
  end;
  form.Show;
end;

end.

Форма создается путем вызова метода CreateForm глобального объекта Application. Написать такое код сложнее, но он позволяет добиться большей гибкости, поскольку параметр может зависеть от внешних настроек.

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

program DynaForm;

uses
  Forms,
  DynaMemo in 'DynaMemo.pas';

{$R *.RES}

var
  str: string;

begin
  str := '';
  Randomize;
  while Length (str) < 2000 do
    str := str + Char (32 + Random (94));
  ShowStringForm (str);

  Application.Run;
end.

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

Исходный код здесь.

Источник:Кэнту М. Delphi 7:Для профессионалов