Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Показать нужную форму по имени класса

Delphi , Компоненты и Классы , Классы

Показать нужную форму по имени класса

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

{ 
Mцchten Sie z.B einen Formular mit einer Prozedure initialisieren bzw. 
anzeigen ohne Type-informationen oder classreferenzen ьbergeben zu mьssen? 
Dies geht sowohl im Programmcode als auch zur Laufzeit. 

Dabei gilt z.B.: bei Formulare werden die von Delphi angelegten globalen 
Variablen bzw. die automatische Erzeugung im Hauptprogramm ьberflьssig: 

Die Anbindung der Units und die RegisterClasses(...) sind notwendig!!! 
}

 { 
You may wish to initialise some descendant of a given class (runtime / 
designtime) using a simple procedure but without passing Type 
information of a specified class to it and thus stay flexible ? 

You can deal with the global variable of your forms as you wish, 
you'll never need them again... 

You just need to bind your form units and to register your classes 
(Delphi won't, if you delete the global vars). 
}


 uses
 MyFormOne, MyFormTwo;

 procedure ShowOneOfMyForm(FormClassName: string);
 begin
 with TFormClass(FindClass(FormClassName)).Create(Application) do
 try
 ShowModal;
 finally
 Free;
 end;
 end;

 { Geben Sie z.B. "TMyFormTwo" in dem TEdit und clicken Sie auf dem Knopf }
 { How to use it? Give "TMyFormTwo" in a TEdit and click the TButton...}

 procedure TForm1.btShowMyFormClick(Sender: TObject);
 begin
 //at runtime 
ShowOneOfMyForm(InputEdit.Text);
 // or directly in your code 
ShowOneOfMyForm('TMyFormOneF');
 end;

 initialization
 RegisterClasses([TMyFormOneF, TMyFormTwoF]);
 end.

Приведенный код на Delphi демонстрирует способ отображения формы по ее классовому имени без явного указания типа информации или ссылки на класс напрямую.

Вот разбивка кода:

  1. Процедура ShowOneOfMyForm принимает строковый параметр FormClassName, который ожидается быть именем наследника класса TForm.
  2. Внутри этой процедуры используется функция FindClass, чтобы найти класс, идентифицированный указанным FormClassName. Функция FindClass возвращает указатель на информацию о типе для указанного класса или nil, если не найден.
  3. Если класс найден, на него вызывается функция Create с параметром приложения. Это создает экземпляр формы.
  4. Созданная форма затем отображается с помощью ShowModal, а после этого освобождается с помощью Free.

Процедура может использоваться в различных способах:

  • В реальном времени: передайте имя класса формы в поле ввода (TEdit) и нажмите кнопку (TButton), которая триггерит обработчик события btShowMyFormClick. Процедура ShowOneOfMyForm затем отобразит форму.
  • Прямо в коде: вызовите ShowOneOfMyForm с именем класса формы, например, 'TMyFormOneF'.

Секция инициализации регистрирует классы TMyFormOneF и TMyFormTwoF, которые требуются быть известными на этапе выполнения.

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

Показать нужную форму по имени класса можно с помощью процедуры ShowOneOfMyForm, которая инициализирует форму при помощи FindClass и последующего создания объекта.


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

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




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


:: Главная :: Классы ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 09:51:03/0.0060200691223145/0