AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Anwendung ausserhalb des Hauptfensters beenden

Ein Thema von Jumpy · begonnen am 27. Apr 2011 · letzter Beitrag vom 28. Apr 2011
Antwort Antwort
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#1

Anwendung ausserhalb des Hauptfensters beenden

  Alt 27. Apr 2011, 16:11
Hallo,

bei meiner Anwendung möchte ich, dass sie, wenn sie mit einem Parameter gestartet wird, nur ein bestimmtes Form (eine Eingabemaske) anzeigt, nach schließen der Eingabemaske soll auch das Programm enden. Hintergrund ist, das manche unserer User nicht mit den ganzen Aspekten des Programms verwirrt werden sollen.

Mein Ansatz unten funktioniert soweit, scheint auch die Anwendung wieder zu beenden, aber im Taskmanager sehe ich, dass der Prozess des Programmes noch läuft und muss ihn da killen.
Bei meinem Ansatz stimmt also was nicht, vllt. ist er auch völlig falsch? Wie mach ich es besser?

Delphi-Quellcode:
procedure TMain.FormCreate(Sender: TObject);
begin
  if UpperCase(paramstr(1)) = UpperCase('EINGABE')then
    begin
    self.Visible:=false;
    acMeldedaten_EingabeExecute(nil);
    self.Visible:=true;
    end;
end;

procedure TMain.FormShow(Sender: TObject);
begin
  if UpperCase(ParamStr(1)) = 'EINGABEthen acBeendenExecute(nil);
end;

procedure TMain.acMeldedaten_EingabeExecute(Sender: TObject);
var
  m:TEingabe; //Das Form mit der Eingabemaske
begin
  m:=Teingabe.Create(self);
  m.Showmodal;
  m.Free;
end;
P.S.: Der Titel stimmt nicht so 100% aber ich wußte nicht, wie ich es sonst nennen sollte?
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#2

AW: Anwendung ausserhalb des Hauptfensters beenden

  Alt 27. Apr 2011, 16:24
Wie wäre es, wenn du im OnClose-Event der Form einfach Application.Terminate schreibst - und sonst nichts?!
Chris
Die Erfahrung ist ein strenger Schulmeister: Sie prüft uns, bevor sie uns lehrt.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

AW: Anwendung ausserhalb des Hauptfensters beenden

  Alt 27. Apr 2011, 16:26
Rufe Close der Hautform auf.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.545 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Anwendung ausserhalb des Hauptfensters beenden

  Alt 27. Apr 2011, 16:27
Rufe Close der Hautform auf.
Cellulite.Close; SCNR^^
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#5

AW: Anwendung ausserhalb des Hauptfensters beenden

  Alt 27. Apr 2011, 17:17
Rufe Close der Hautform auf.
Cellulite.Close; SCNR^^
Jede zweite Frau würde sich über diese Zeile Code maßlos freuen

Um aber auch was zum Thema beizusteuern: ich würde das ganze etwas anders handhaben und das in etwa so gestalten:

Delphi-Quellcode:
program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas{Form1},
  WindowManager;

{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;

  //
  //
  //Application.CreateForm(TForm1, Form1);
  
  WindowManager := TWindowManager.Create();
  try
    WindowManager.ShowMainForm();
    Application.Run;
  finally
    WindowManager.Free();
  end;
end.
In der Methode WindowManager.ShowMainForm(); würde ich dann je nach Startparameter die passende Form anzeigen.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)

Geändert von s.h.a.r.k (27. Apr 2011 um 17:21 Uhr)
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#6

AW: Anwendung ausserhalb des Hauptfensters beenden

  Alt 27. Apr 2011, 21:43
Danke schon mal für die Antworten:

@Luckie:
TMain ist die Hauptform. Im acBeenden steht dann auch nur self.close.

@Deep-Sea:
Application.Terminate kann ich mal versuchen. Muss dazu sagen, dass ich nur das wie ich dachte nötigste gepostet habe. Im OnClose-Event der Main-Form passiert noch einiges (Objekte freigeben usw.) - würde das noch ausgelöst?

@s.h.a.r.k:
Werd ich mal überlegen, doch das bedeutet eine größere Umstellung, da mit dem Start der Hauptform auch noch einige andere Objekte erstellt werden (die wie bereits oben erwähnt daher im OnClose auch dringend wieder geschl. werden müssen), die z.B. das Loging starten, den Programstart in einer DB vermerken usw.

Hab es auch schon so versucht, sprich das Hauptform noch im OnCreate zu killen, ging (logischerweise?) auch nicht.
Delphi-Quellcode:
procedure TMain.FormCreate(Sender: TObject);
begin
   if UpperCase(paramstr(1)) = UpperCase('EINGABE')then
     begin
     self.Visible:=false;
     acMeldedaten_EingabeExecute(nil);
     self.Close;
     end;
end;

Das Hauptform einfach nur wieder sichtbar machen und dann per Hand schließen (X-Button) funktioniert dagegen, sprich das Programm wird rückstandslos beendet.
Delphi-Quellcode:
procedure TMain.FormCreate(Sender: TObject);
begin
   if UpperCase(paramstr(1)) = UpperCase('EINGABE')then
     begin
     self.Visible:=false;
     acMeldedaten_EingabeExecute(nil);
     self.Visible:=true;
     end;
end;
Könnte es sein, dass das programmatische schließen einfach zu schnell ist?
Ralph
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:14 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