![]() |
Form 2 aus Form 1 öffnen und nach schließen von Form 2 in Form 1 witermachen
Hallo, ich öffne form 2 so.
Delphi-Quellcode:
nun schließe ich die form 2 und möchte direkt an der Pos. in Form 1 weitermachen wo ich Form 2 aufgerufen habe.
TPatientenblattFrm.Create(Application.MainForm, Patient1Qry.FieldByName('PatientNr').AsInteger, TiereQry.FieldByName('TiereNr').AsInteger);
Hier weitermachen.
Delphi-Quellcode:
Geht das? Wenn ja wie.
PatBlattQry.close;
PatBlattQry.ParamByName('PATIENTNR').AsInteger := TiereQry.FieldByName('PATIENTNR').AsInteger; PatBlattQry.Open; if (PatBlattQry.RecordCount > 0) then btnPatblatt.Font.Color := clred else btnPatblatt.Font.Color := clWindowText; btnPatblatt.Refresh; |
AW: Form 2 aus Form 1 öffnen und nach schließen von Form 2 in Form 1 witermachen
Und Du bist Dir sicher, dass irgendwer versteht, was Du tust und was Du erreichen willst?
|
AW: Form 2 aus Form 1 öffnen und nach schließen von Form 2 in Form 1 witermachen
Zeige die zweite Form per ShowModal an. Wenn diese dann geschlossen wird, geht's in der ersten Form genau da weiter. Man kann dann auch abfragen, ob die Form per Klick auf den "OK-Button" geschlossen wurde, oder ob der Dialog abgebrochen wurde.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin if Form2.ShowModal = mrOK then begin ShowMessage('Form 2 wurde geschlossen'); end; end; |
AW: Form 2 aus Form 1 öffnen und nach schließen von Form 2 in Form 1 witermachen
Zitat:
Also:
Delphi-Quellcode:
Form2:=TPatientenblattFrm.Create(nil, Patient1Qry.FieldByName('PatientNr').AsInteger, TiereQry.FieldByName('TiereNr').AsInteger);
try if Form2.ShowModal = mrOK then begin // mach irgendwas end; finally Form2.Free; end; |
AW: Form 2 aus Form 1 öffnen und nach schließen von Form 2 in Form 1 witermachen
Alle meine Forms sind MDI Forms, die möchte ich nicht auf Modal setzen. Gibt es sonst keine andere Möglichkeit?
Wenn Form 2 geschlossen wird sollte in Form 1 dieser Coder verarbeitet werden.
Delphi-Quellcode:
PatBlattQry.close;
PatBlattQry.ParamByName('PATIENTNR').AsInteger := TiereQry.FieldByName('PATIENTNR').AsInteger; PatBlattQry.Open; if (PatBlattQry.RecordCount > 0) then btnPatblatt.Font.Color := clred else btnPatblatt.Font.Color := clWindowText; btnPatblatt.Refresh; |
AW: Form 2 aus Form 1 öffnen und nach schließen von Form 2 in Form 1 witermachen
Zitat:
In dem du definierst was passieren soll wenn die Form geschlossen/freigegeben wurde.
Delphi-Quellcode:
lForm2 := TPatientenblattFrm.Create(Application.MainForm, Patient1Qry.FieldByName('PatientNr').AsInteger, TiereQry.FieldByName('TiereNr').AsInteger);
lForm2.OnClose := MeineProzedurAusForm1DieAusgeführtWerdenSollWennForm2GeschlossenWurde; lForm2.OnDestroy:= MeineProzedurAusForm1DieAusgeführtWerdenSollWennForm2FreigegebenWurde; |
AW: Form 2 aus Form 1 öffnen und nach schließen von Form 2 in Form 1 witermachen
oder eine Nachricht (postMessage) an die Form1 senden wenn die Form2 geschlossen wird.
Grüsse Klaus |
AW: Form 2 aus Form 1 öffnen und nach schließen von Form 2 in Form 1 witermachen
Werden MDI Fenster nicht sowieso im 'Parent' verwaltet? (Hab glaub ich in 40 Jahren noch nie eine MDI Fenster erzeugt).
Ansonsten im Programm1 verwalten (handle anlegen, create ) und am Ende von Programm2 eine Nachricht an Form1 schicken. Bei mir inzwischen immer eine 'Bitte schließe mich' Nachricht. Alternativ kann man natürlich auch nur melden 'Programm 2' beendet, bitte Handle löschen und Processing starten. |
AW: Form 2 aus Form 1 öffnen und nach schließen von Form 2 in Form 1 witermachen
Also ich rufe in Form 2 bei OnDestroy eine Procedure in Form 1 auf. das geht auch nur erkennt die procedure nicht mein Button 'btnPatblatt' kommt Zugriffsverletzung.
Delphi-Quellcode:
Keine Ahnung warum.
procedure TTierhalterFrm.BtnPatblattFarbe;
begin if (ToolsOperation.Farbe = True) then btnPatblatt.Font.Color := clred // Hier kommt Zugriffsverletzung else btnPatblatt.Font.Color := clWindowText; btnPatblatt.Refresh; end; Ist die Form 1 nicht aktiv? |
AW: Form 2 aus Form 1 öffnen und nach schließen von Form 2 in Form 1 witermachen
Schick doch einfach eine Message an Form1. Wenn Du das mit Postmessage machst, dann ist das ganze entkoppelt.
Ansonsten wäre ich bei Zugriffen nach außen bei Destroy seehr vorsichtig, weil da einiges im Hintergrund abläuft. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:22 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