AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Close in Onshow oder ein Statusfenster
Thema durchsuchen
Ansicht
Themen-Optionen

Close in Onshow oder ein Statusfenster

Ein Thema von Guenni_d · begonnen am 4. Jul 2002 · letzter Beitrag vom 4. Jul 2002
Antwort Antwort
Guenni_d

Registriert seit: 4. Jul 2002
5 Beiträge
 
#1

Close in Onshow oder ein Statusfenster

  Alt 4. Jul 2002, 12:23
Hallo zusammen,

will ein kleines Proggi schrieben, mit dem man mit einem externen Mikrocontroller über die RS232 kommunizieren kann.
Wie man das shcon so oft gesehen hat, soll der Datentransfer in einer extra Form mittels einer Progressbar dargestellt werden. Sobald Transfer beendet, schliesst sich das Statusfenster wieder selbst.

Leider geht das nciht so wie ich wollte...

So hatte ich es versucht:

Mainprogramm:

Transferform.showmodal;


Im Onshow Event der Transferform:

.... tu dies und das... und zeig den Progressbar an...
Close;



Das Funktioniert soweit, dass die Form geöffnet wird und alles funktioniert. Bis auf den Close. Das Fnester bleibt offen.

Kann mir jemand helfen? Wie man so was macht?

Die einzigste Lösung die mir eingefallen ist, wäre ein Timer, der als letztes gestartet wird und dann ziemlich schnell zu schlägt und das Fenster schliesst. Aber muss doch auch einfacher gehen.

Gruss Günter
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2
  Alt 4. Jul 2002, 12:35
Wenn die Progressbar synchron läuft, dann mach doch:
Code:
if Progressbar1.Max = Progressbar1.Position then
  Close;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#3
  Alt 4. Jul 2002, 12:37
Das Problem ist, dass der Befehl Close; nicht im OnShow Event ausgeführt werden kann. Ist generell kein hervorragender Bereich, um den Fortschritt anzuzeigen. Aber wie dem auch sei, mit folgendem Code, kannst Du dem Fenster mitteilen, sich als nächstes zu schließen.
Code:
  PostMessage(Handle, WM_Close, 0, 0);
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Guenni_d

Registriert seit: 4. Jul 2002
5 Beiträge
 
#4
  Alt 4. Jul 2002, 14:57
Danke Sakura für die Hilfe...
Ich weiss dass es nicht ideal ist, in Onshow so viele Dinge zu machen. Aber leider manchmal ne Notlösung.
Oder gibt es da noch andere wege, wenn man ein Modales Fenster öffnen will und dann darin einen Prozess anstossen möchte ohne eine Usereingabe?

Bin für alle Ratschläge offen.
Gruss Günter
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#5
  Alt 4. Jul 2002, 15:06
Ähnlich der PostMessage könntest Du weitere Nachrichten versenden. Beispiel (ungetestet, sollte aber so funktionieren)
Code:
const
  WM_StartMyProcess = WM_USER + 1;
type
  TForm1 = class(TForm)
  private
    procedure WMStartMyProcess(var Msg: TMessage); message WM_StartMyProcess;
  ...
  end;

....

TForm1.WMStartMyProcess;
begin
  ... der Code aus Deinem OnShow Event Handler
  ...
  PostMessage(Handle, WM_Close, 0, 0);
end;

TForm1.OnShow(Sender: TObject);
begin
  PostMessage(Handler, WM_StartMyProcess, 0, 0);
end;
Ich hoffe, dass das weiterhilft.
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#6
  Alt 4. Jul 2002, 15:58
Wie wäre es damit:
Code:
Transferform.Show;
try
  Application.ProcessMessages; // Zeit zum Anzeigen des Formulars geben
  Transferform.TransferData; // hier die Daten übertragen
finally
  Transferform.Close;
end;
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#7
  Alt 4. Jul 2002, 16:02
@jbg:

Er wollte aber ein modales Form, Show ist nicht modal...
Daniel W.
Ich bin nicht zurück, ich tue nur so
  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 12:24 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