Win 11 - Anwendung / Formular mit Parameter starten

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Joh
Lazarusforum e. V.
Beiträge: 288
Registriert: Sa 26. Mai 2012, 17:31
OS, Lazarus, FPC: Win 10 (L 2.2.6 x64 FPC 3.2.2)
CPU-Target: 64Bit

Win 11 - Anwendung / Formular mit Parameter starten

Beitrag von Joh »

Moin,
ich habe mir hier ein kleines Etikettendruckprogramm zusammengeschrieben.
Die Etikettendaten habe ich in .etk-Dateien gespeichert.
Diese kann ich laden und Speichern, so weit, so gut.

Jetzt kommt die Idee, diese Dateien per Doppelklick (unter Windows 11) zu starten.
Dateiendung registriert; das läuft so weit.

Es existiert quasi nur ein Formular, dieses wird vom Hauptprogramm ja standardmäßig aufgerufen:

Code: Alles auswählen

  Application.CreateForm(TfrmEtiketten2pdf, frmEtiketten2pdf); 
  Application.Run;

Ich habe mir dann gedacht, die Kommandozeilenparameter im Formular in einem angepaßtem Constructor zu integrieren:

Code: Alles auswählen

constructor TfrmEtiketten2pdf.create(AOwner: TComponent; param: string);
begin
  aktDatei := param;
  inherited create(AOwner);
end;   
im Hauptprogramm wird dann das Formular mit

Code: Alles auswählen

  frmEtiketten2pdf := TfrmEtiketten2pdf.Create(Application, ParamStr(1))
  frmEtiketten2pdf.show;
  Application.Run;
erzeugt und gestartet. Im Prinzip funktioniert es ja, leider wird die Anwendung nicht beendet.
Als Nicht-Win32-Gui-Anwendung mit Consolenfenster bleibt beim schließen das Konsolenfenster offen.
Als Win32-Gui-Anwendung wird zwar das Fenster geschlossen, aber es bleibt ein nicht geschlossener Prozeß über.

frmEtiketten2pdf.Close oder frmEtiketten2pdf.Free oder Applikation.free sind nicht zielführend...

Ist mein Versuch mit dem verbogenen Constructor völlig flasch oder muß ich dann nur noch 'nen Destructor einfügen?
just my two Beer

Benutzeravatar
Ally
Beiträge: 283
Registriert: Do 11. Jun 2009, 09:25
OS, Lazarus, FPC: Win und Lazarus Stable release
CPU-Target: x64

Re: Win 11 - Anwendung / Formular mit Parameter starten

Beitrag von Ally »

Hallo Joh,

ich hoffe ich verstehe das jetzt richtig.
Du möchtest den übergebenen Dateinamen öffnen?

Dann könnte dir folgendes helfen:
In FormShow:

Code: Alles auswählen

  if (ParamCount > 0) and (FileExists(ParamStr(1))) and (UTF8LowerCase(ExtractFileExt(ParamStr(1))) = '.etk') then
  begin
    DateiOeffnen(ParamStr(1));
  end;
Gruß
Roland

Joh
Lazarusforum e. V.
Beiträge: 288
Registriert: Sa 26. Mai 2012, 17:31
OS, Lazarus, FPC: Win 10 (L 2.2.6 x64 FPC 3.2.2)
CPU-Target: 64Bit

Re: Win 11 - Anwendung / Formular mit Parameter starten

Beitrag von Joh »

Das heißt, ich kann im FormShow direkt auf ParamStr(x) und ParamCount zugreifen...
Oh Mann...

Umgekehrt hatte ich versucht, eine globale Variable im Hauptprogramm anzulegen; diese war im Formular nicht sichtbar.
Dabei ist das ganze so einfach.
(Ich glaube, ich habe seit 1989 die Parameter immer in den ersten Zeilen des Hauptprogramms abgefangen...)

Danke!
just my two Beer

Antworten