Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Создание формы переменного типа

Delphi , Программа и Интерфейс , Формы

Создание формы переменного типа

Автор: Mike Orriss

Как насчет этого? (допустим что str содержит 'TForm2' и т.п.)?


procedure TForm1.Button1Click(Sender: TObject);
begin
  with TFormClass(FindClass(str)).Create(Application) do 
    try
      ShowModal;
    finally
      Free;
    end;
end;

initialization
  RegisterClasses([TForm2,TForm3,TForm4]);
end.

Перевод на русский язык:

Этот код-набор Delphi - отличный пример динамического создания и отображения форм в runtime на основе переменной, содержащей имя класса формы.

Вот разбивка того, что код делает:

  1. Секция initialization регистрирует три класса форм: TForm2, TForm3 и TForm4.
  2. Обработчик события Button1Click вызывается при клике на контроле Button1.
  3. Внутри этого обработчика код использует функцию FindClass, чтобы найти класс с именем, хранящимся в переменной str. Это предполагает, что str содержит имя одного из зарегистрированных классов форм (например, 'TForm2', и т.д.).
  4. Код создает экземпляр этого найденного класса с помощью метода Create, передавая Application в качестве параметра.
  5. Метод ShowModal вызывается на созданной форме для отображения ее модально (то есть, до тех пор, пока пользователь не закроет ее или не нажмет кнопки OK/Cancel).
  6. Наконец, код освобождает выделенную память, вызвав метод Free.

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

В отношении улучшений есть несколько предложений:

  • Рассмотрите использование более robust механизма обработки ошибок в случае, если класс не найден. Вы можете проверить результат FindClass и обрабатывать любые потенциальные ошибки.
  • Если вы планируете использовать этот подход широко, рассмотрите создание отдельного модуля для ваших классов форм и регистрации их там, а не в секции initialization.
  • Если вы целяете на Delphi 2009 или позднее, рассмотрите использование более современного TComponentClass вместо TClass.

Вот обновленная версия с некоторыми минимальными улучшениями:

procedure TForm1.Button1Click(Sender: TObject);
begin
  if Supports(FindClass(str), TFormClass) then
  try
    TFormClass(FindClass(str)).Create(Application).ShowModal;
  finally
    Free;
  end
  else
    ShowMessage('Unknown form class: ' + str);
end;

initialization
  RegisterClasses([TForm2, TForm3, TForm4]);
end.

В статье описывается создание формы переменного типа в Delphi с помощью класса TFormClass и метода FindClass, позволяющего динамически создавать экземпляры различных типов форм.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Формы ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100

Время компиляции файла: 2024-05-19 17:53:24
2024-05-19 19:24:58/0.0070440769195557/2