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

Менять главную форму во время выполнения

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

Менять главную форму во время выполнения

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

procedure SetAsMainForm(aForm:TForm);
 var
   P:Pointer;
 begin
   P := @Application.Mainform;
   Pointer(P^) := aForm;
 end;

 {************************************}

 // Example of Usage: 

{ 
Question: 

  If my application is main.exe and the main form is form1, form1 displays 
  when it runs. I would like to display other forms based on the parameter 
  passed. 
  main.exe param1 will display form2 as the first form 
  main.exe param2 with display form3 as the first form 

Answer: 
}

 program Project1;

 uses
   Forms,
   Unit1 in 'Unit1.pas' {Form1},
   Unit2 in 'Unit2.pas' {Form2},
   Unit3 in 'Unit3.pas' {Form3};

 {$R *.res}

 procedure SetAsMainForm(aForm:TForm);
 var
   P:Pointer;
 begin
   P := @Application.Mainform;
   Pointer(P^) := aForm;
 end;

 begin
   Application.Initialize;
   Application.CreateForm(TForm1, Form1);
   Application.CreateForm(TForm2, Form2);
   Application.CreateForm(TForm3, Form3);

   if Paramstr(1) = 'Param1' then
     SetAsMainForm(Form2);

   if Paramstr(1) = 'Param2' then
     SetAsMainForm(Form3);

   Application.Run;
 end.

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

Вот как это работает:

  • Процедура SetAsMainForm принимает объект TForm в качестве параметра и устанавливает его как новую основную форму.
  • В блоке main, приложение инициализируется, создается три формы (Form1, Form2 и Form3), а затем проверяется параметр командной строки.
  • Если параметр равен 'Param1', то вызывается SetAsMainForm с параметром Form2. Это устанавливает Form2 как новую основную форму.
  • Если параметр равен 'Param2', то вызывается SetAsMainForm с параметром Form3. Это устанавливает Form3 как новую основную форму.

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

Однако я хотел бы предложить альтернативное решение, использующее функциональность Delphi для обработки параметров командной строки и изменения основной формы. Вот как вы можете модифицировать код:

program Project1;
uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in 'Unit2.pas' {Form2},
  Unit3 in 'Unit3.pas' {Form3};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);
  Application.CreateForm(TForm3, Form3);

  if ParamStr(1) = 'Param1' then
    Application.MainFormOnTaskbar := True; // Установка Form2 как основной формы
  elif ParamStr(1) = 'Param2' then
    Application.MainFormOnTaskbar := True; // Установка Form3 как основной формы

  Application.Run;
end.

В этом модифицированном коде мы используем свойство Application.MainFormOnTaskbar для установки, какой форма должна отображаться на панели задач. Этоapproach более прост и легче поддерживать, чем создание custom-процедуры, как SetAsMainForm.

Надеюсь, это поможет! Пожалуйста, если у вас есть какие-либо дальнейшие вопросы.

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


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

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




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


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


реклама


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

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 13:28:39/0.0057840347290039/1