Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Modales Formular in einem Thread (https://www.delphipraxis.net/23388-modales-formular-einem-thread.html)

easywk 2. Jun 2004 12:58


Modales Formular in einem Thread
 
Mahlzeit!
Ich habe eine Anwendung, die Daten über eine RS232-Schnittstelle bekommt - und zwar ziemlich sporadisch. Bisher habe ich für die Schnittstelle ein Formular, welches ich von der Anwendung aus aufrufe:
Delphi-Quellcode:
procedure TFormMain.MenuProtoOmegaClick(Sender: TObject);
begin
  Application.CreateForm(TFormOmegaConnect,FormOmegaConnect);
  FormOmegaConnect.ShowModal; FormOmegaConnect.Release;
end;
Nun wäre es aber ganz schön, wenn ich das Formular einfach als zweites Programm hätte, damit ich in der Anwendung mit anderen Dingen weiterarbeiten kann. Da ich aber einige Daten der Anwendung (lesenderweise) brauche, habe ich an einen Thread gedacht. Dementsprechend habe ich ein Thread definiert und erzeuge beim Menuclick den Thread - und rufe im Thread das Formular auf.
Delphi-Quellcode:
procedure TFormMain.MenuProtoOmegaClick(Sender: TObject);
begin
  Thread:=TElektronikThread.Create(TRUE);
  Thread.Priority:=tpHIGHER;
  Thread.FreeOnTerminate:=TRUE;
  Thread.Resume;
end;

procedure TElektronikThread.Execute;
begin
  Application.CreateForm(TFormOmegaConnect,FormOmegaConnect);
  FormOmegaConnect.ShowModal; FormOmegaConnect.Release;
end;
Irgendwie funzt das aber nicht. Das Fenster kommt nicht und wenn ich dann die Anwendung schließe bekomme ich Fehlermeldungen ohne Ende.

Jemand eine Idee, woran es liegt?

Gruss
Bjoern alias easywk

Bernhard Geyer 2. Jun 2004 13:55

Re: Modales Formular in einem Thread
 
Die Borland-VCL ist nicht Thread-Save. :cry:

D.h. alle Formulare müssen im Kontext des Primären Threads laufen. Alles andere Kracht!

Das einzige wäre, wenn Du zwar die Komponenten (mit Wrapper für Eventbehandlung) in den Thread legen würdest. Die Kommunikation mit dem Formular würde dann z.B. über Windows-Messages erfolgen können.

easywk 2. Jun 2004 14:18

Re: Modales Formular in einem Thread
 
Zitat:

Zitat von Bernhard Geyer
Die Borland-VCL ist nicht Thread-Save. :cry:

Schade, schade, schade. :pale:
Ich denke mal, dass nur die Komponenten im Thread liegen macht wenig Sinn und das Ganze unnötig kompliziert. Vielleicht fällt mir ja noch ne andere Lösung ein, sonst muss es halt so bleiben, wie es momentan ist ...

Thanx for help


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:26 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