Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Von Programmstart gleiche eine Procedure auf Form2 ausführen ??? (https://www.delphipraxis.net/161512-von-programmstart-gleiche-eine-procedure-auf-form2-ausfuehren.html)

DavidKlimas 6. Jul 2011 22:11

Delphi-Version: 5

Von Programmstart gleiche eine Procedure auf Form2 ausführen ???
 
Guten Abend zusammen,

hoffe das ich das Thema auch richtig eingeordnet habe...

Habe mir schon seit einiger zeit den Kopf zerbrochen und mal hier und mal da gesucht aber das richtige habe ich nicht gefunden darum bitte ich mal um Eure Hilfe. ich gebe hier einfach mal eine vereinfacte form ZUR DEMONSTRATION des Problemes wieder :

Ich habe eine MainForm mit zwei Button. Der erste Button "GehZuForm2" und der zweite Button "GehZuForm3".

Die MainForm:

Delphi-Quellcode:
procedure TMainForm.GehZuForm2Click(Sender: TObject);
begin
  MainForm.Visible := false;
  Form2.ShowModal;
  MainForm.Visible := True;
end;
So weit, so gut

Auf der Form2 hab ich verschiedene Button für verschiedene Operationen. Zum Beispiel der :

Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
begin
  TrayIcon1.Visible := True;
  Form2.Visible := False;
  //hier verschiedene Operationen
  //ende der Operation
  TrayIcon1.Visible := False;
  Form2.Visible := True;
end;
Nun möchte ich ein ParamStr einbauen der mir ermöglicht vom Programmstart gleich zu TForm2.Button1Click(Sender: TObject) zu gehen ohne die MainForm oder die Form2 anzuzeigen.

Ich habe versucht das in die OnCreate procedure einzubauen :

Delphi-Quellcode:
procedure TMainForm.FormCreate(Sender: TObject);
begin
  if (ParamCount = 1)
  AND (lowercase(ParamStr(1)) = '-startop1') then GehZuForm2Click(Self);
  if (ParamCount = 1)
  AND (lowercase(ParamStr(1)) = '-startop2') then GehZuForm3Click(Self);
end;
und in den OnShow proceduren dann folgendes :

Delphi-Quellcode:
procedure TForm2.FormShow(Sender: TObject);
begin
  if (ParamCount = 1)
  AND (lowercase(ParamStr(1)) = '-startop1') then Button1Click(Self);
end;
Das klappt natürlich nicht da die Form2 noch gar nicht existiert wenn die procedure ausgeführt wird.

Dann hab ich das Probiert :

Delphi-Quellcode:
procedure TMainForm.FormShow(Sender: TObject);
begin
  if (ParamCount = 1)
  AND (lowercase(ParamStr(1)) = '-start') then
  Begin
    if (ParamCount = 1) then
    Begin
      MainForm.Visible := False;
      If lowercase(ParamStr(1)) = '-startop1' then GehZuForm2Click(Self);
      If lowercase(ParamStr(1)) = '-startop2' then GehZuForm3Click(Self);
    End;
  End;
end;
Aber das klappt auch nicht, da ich visible nicht in OnShow oder OnHide procedure ändern kann.

Habt Ihr vorschlâge wie ich das am besten anstellen kann ?

omata 6. Jul 2011 22:23

AW: Von Programmstart gleiche eine Procedure auf Form2 ausführen ???
 
Erstelle in Form2 eine Public-Methode und führe sie in der Programm-Unit (.dpr) aus, nachdem das Formular erstellt wurde.

jaenicke 7. Jul 2011 03:26

AW: Von Programmstart gleiche eine Procedure auf Form2 ausführen ???
 
Und im Projektquelltext kannst du auch verhindern, dass das Hauptformular angezeigt wird:
Delphi-Quellcode:
Application.ShowMainForm := False;
Application.CreateForm...
Das brauchst du, wenn du das Hauptformular später doch brauchst und es nur zuerst unsichtbar sein soll. Wenn du nur das zweite Formular brauchst, kannst du natürlich auch nur das überhaupt erstellen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:56 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz