![]() |
AW: Form 2 aus Form 1 öffnen und nach schließen von Form 2 in Form 1 witermachen
Zitat:
|
AW: Form 2 aus Form 1 öffnen und nach schließen von Form 2 in Form 1 witermachen
Joar, was nach dem Schließen gemacht werden soll, an OnClose/OnDestroy der zweiten Form hängen, oder als Callback übergeben beim Erstellen übergeben.
Nja, den Code für Form1 nicht in die Form2. Entweder wird ein Callback (Methode) von Form1 als Callback an Form2 übergeben. Oder, falls OnClose/OnDestroy der Form2 nicht verwendet wird, dann ein Event von Form1 an dieses OnClose/OnDestroy. Du nutzt aber nicht zufällig die globale Variable der Form1? Wenn ja, bist'e dir sicher, dass diese Form1 zu dem Zeitpunkt noch da ist? SendMessage/PostMessage haben den Vorteil, dass wenn die Zielform verschwindet, verbleibende Messages gelöscht werden. Gibt es die Form beim Senden nicht mehr, geht die Message ins Nirvana und wird nie ausgelöst, ABER gibt es zwischenzeitlich ein neues Fenster (WinControl ala Form/Edit/sonstwas), dann geht die Message an jenes. Hier kann man sich nur schützen, indem man vorher explizit eine Message-ID reserviert, welche niemand anderes nutzt. |
AW: Form 2 aus Form 1 öffnen und nach schließen von Form 2 in Form 1 witermachen
Wie funktioniert PostMessage? (von form zu form) habe es noch nie benutzt. Gibt es irgendwo ein Beispiel.
|
AW: Form 2 aus Form 1 öffnen und nach schließen von Form 2 in Form 1 witermachen
Ich möchte nochmal auf den meiner Meinung nach wesentlichen Code zurückkommen, den wir bisher noch nicht sehen konnten:
Zitat:
|
AW: Form 2 aus Form 1 öffnen und nach schließen von Form 2 in Form 1 witermachen
Form 1
Delphi-Quellcode:
TPatientenblattFrm.Create(Application.MainForm, Patient1Qry.FieldByName('PatientNr').AsInteger, TiereQry.FieldByName('TiereNr').AsInteger);
Form 2
Delphi-Quellcode:
in form 1
procedure TPatientenblattFrm.FormDestroy(Sender: TObject);
begin TierhalterFrm.BtnPatblattFarbe; end;
Delphi-Quellcode:
procedure TTierhalterFrm.BtnPatblattFarbe;
begin if (ToolsOperation.Farbe = True) then btnPatblatt.Font.Color := clred else btnPatblatt.Font.Color := clWindowText; btnPatblatt.Refresh; end; |
AW: Form 2 aus Form 1 öffnen und nach schließen von Form 2 in Form 1 witermachen
Zitat:
Zitat:
|
AW: Form 2 aus Form 1 öffnen und nach schließen von Form 2 in Form 1 witermachen
siehe #15.
|
AW: Form 2 aus Form 1 öffnen und nach schließen von Form 2 in Form 1 witermachen
Und TierhalterFrm ist auch wirklich die Instanz von Form1, in der der gezeigte Aufruf von Form2 ausgeführt wurde, und die Instanz ist auch noch nicht anderweitig freigegeben worden?
|
AW: Form 2 aus Form 1 öffnen und nach schließen von Form 2 in Form 1 witermachen
Zitat:
Zitat:
Was ist nun eigentlich das Problem, oder hab ich hier wirklich übersehn, dass irgendwo der "Fehler" genannt wurde? Zitat:
Dieses gibt man zu Beginn dem mit, welcher es dann später aufrufen soll. in der Fomm dann entweder global reinhängen
Delphi-Quellcode:
procedure WndProc(var Message: TMessage); override;
oder explit
Delphi-Quellcode:
procedure WMMyMessage(var Message: TMessage); message WM_MYMESSAGE;
Als MessageID entweder mit WM_USER+x oder ![]() Will man den Code ordentlich trennen, dann darf Form2 garnichts von Form1 wissen, drum übergibt man im Constructor oder via Property das Event.
Delphi-Quellcode:
type
TForm1 = class(TForm) ... public procedure MyCallback; end; // hab hier einen vordefinieren Typen aus System.Classes verwendet //TThreadMethod = procedure of object; TForm2 = class(TForm) ... private FCallback: TThreadMethod; public constructor Create(Owner: TComponent; ....; Callback: TThreadMethod); end; TForm2.Create(...., MyCallback); constructor TForm2.Create(Owner: TComponent; ....; Callback: TThreadMethod); begin inherited Create(Owner); FCallback := Callback; end; procedure TForm2.FormDestroy(Sender: TObject); begin if Assigned(FCallback) then Callback(); end; |
AW: Form 2 aus Form 1 öffnen und nach schließen von Form 2 in Form 1 witermachen
Was steht in procedure MyCallback;
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz