AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi ShowModal im Hintergrund vs. Show mit Rückgabewerten
Thema durchsuchen
Ansicht
Themen-Optionen

ShowModal im Hintergrund vs. Show mit Rückgabewerten

Ein Thema von Schwedenbitter · begonnen am 7. Dez 2009 · letzter Beitrag vom 7. Dez 2009
Antwort Antwort
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#1

ShowModal im Hintergrund vs. Show mit Rückgabewerten

  Alt 7. Dez 2009, 14:37
Hallo,

ich habe - möglicherweise - eine Anfängerfrage, weiß aber leider nicht, wie ich mich dem Problem nähern kann:

Ich habe ein Client-Programm, was vollständig ereignisgesteuert läuft. Der TClientSocket ist im Hauptformular. Die relativ umfangreichen Einstellungsmöglichkeiten für das gesamte Programm und so auch für TClientSocket werden in einer separaten Form amgeboten.
Rufe ich nun diese Form mit .ShowModal auf, kann ich zwar auf die Tasten reagieren. Mein Hauptprogramm wird aber logischer Weise nicht weiter ausgeführt. Rufe ich das mit .Show auf, läuft mein Programm zwar weiter. Ich weiß aber leider nicht, wie ich auf die Tasten im Setup-Formular reagieren kann. Mir fiele nur ein, es zur allergrößten Not über Messages zu machen.

Gibt es für mein Problem eine einfache Lösung?

Falls Ihr bessere Ideen für den Titel habt, nur her damit. Auch für weiterführende Stichpunkte zum Suchen wäre ich schon dankbar.

Gruß, Alex
Alex Winzer
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: ShowModal im Hintergrund vs. Show mit Rückgabewerten

  Alt 7. Dez 2009, 15:26
Hallo,

warum soll das Programm während der Einstellungen
einfach so weiterlaufen ?

Davon abgesehen läuft das ganze TClientXXX-Dingens ja eh weiter (OnReceive usw.).


Heiko
Heiko
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: ShowModal im Hintergrund vs. Show mit Rückgabewerten

  Alt 7. Dez 2009, 16:08
Danke für die Antwort.
Zitat von hoika:
Hallo,

warum soll das Programm während der Einstellungen
einfach so weiterlaufen ?
Weil das Programm auf Befehle des Servers reagiert und damit wiederum ein weiteres Programm steuert.
Zitat von hoika:
Davon abgesehen läuft das ganze TClientXXX-Dingens ja eh weiter (OnReceive usw.).

Heiko
Wirklich?
Das werde ich dann mal ausprobieren. Das Problem ist nur, dass das Programmieren von Server und Client nicht ganz ohne ist und ich weder Lust noch Kraft habe um da Zeit reinzustecken, um später festzustellen, dass es nicht geht.
Zumal die Hilfe zu .ShowModal etwas anderes dazu sagt. Dort steht, dass der Ablauf des Programms abgebrochen wird, bis das Modal angezeigte Fenster wieder geschlossen ist.

Gruß, Alex
Alex Winzer
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: ShowModal im Hintergrund vs. Show mit Rückgabewerten

  Alt 7. Dez 2009, 17:09
Hallo,

damit ist gemeint,
dass der Nzuter das Form nicht benutzen kannst.

Lass aber z.B. mal nen Timer mitlaufen,
der ein Label aktualisiert.
Während des ShowModal läuft der weiter.


Heiko
Heiko
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: ShowModal im Hintergrund vs. Show mit Rückgabewerten

  Alt 7. Dez 2009, 17:52
Das ist mir schon klar.

Ich habe folgendes probiert:
Delphi-Quellcode:
Unit Unit1;

Interface

Uses
   Forms, Controls, StdCtrls, Classes, ExtCtrls;

Type
   TForm1   = Class(TForm)
               Timer1   : TTimer;
               Button1   : TButton;
               Procedure Button1Click(Sender: TObject);
               Procedure Timer1Timer(Sender: TObject);
              End;

Var
   Form1      : TForm1;

Implementation

Uses
   Unit2, Unit3;

{$R *.dfm}

Procedure TForm1.Button1Click(Sender: TObject);
Begin
   Form2.ShowModal;
End;

Procedure TForm1.Timer1Timer(Sender: TObject);
Begin
   Timer1.Enabled:=False;
   Form3.ShowModal;
   Timer1.Enabled:=True;
End;

End.
Wenn nun Fenster 3 kommt, kann ich nicht mehr auf den Button (zum Öffnen von 2) von Fenster 1 klicken. Das ist OK, weil Fenster 2 in meinem Programm vom Client.Socket geöffnet wird. Ist Fenster 2 aber schon offen, öffnet sich Fenster 3 und ich kann mit Fenster 2 ebenfalls nichts mehr anfangen.
Da stellt sich mir bloß am Rande auch die Frage: Obwohl beide Fenster mit ShowModal angezeigt werden. Warum schafft es Fenster 3 immer, sich "vorzudrängeln"?

Falls das nicht verständlich ist, muss ich wegen meines Problems wohl etwas weiter ausholen:
Mein Programm hat im Grunde kein MainForm. Es wird nur im SystemTray angezeigt, hat ein Popup und je nach dem, welcher Menüeintrag gewählt wird, kommt das eine oder andere Fenster zum Vorschein. Die einzige Ausnahme soll das Fenster mit den Systemmitteilungen sein. Die Fenster sind daher quasi gleichrangig.

Gruß, Alex
Alex Winzer
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: ShowModal im Hintergrund vs. Show mit Rückgabewerten

  Alt 7. Dez 2009, 18:09
Hallo,

aha !!!
Warum nicht gleich so ?

Dann würde ich .Show nehmen und mit Nachrichten arbeiten.


Heiko
Heiko
  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 07:19 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