AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Form 2 aus Form 1 öffnen und nach schließen von Form 2 in Form 1 witermachen

Form 2 aus Form 1 öffnen und nach schließen von Form 2 in Form 1 witermachen

Ein Thema von Walter Landwehr · begonnen am 12. Jun 2024 · letzter Beitrag vom 16. Jun 2024
Antwort Antwort
Walter Landwehr

Registriert seit: 28. Mär 2006
Ort: 32816 Schieder-Schwalenberg
405 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: Form 2 aus Form 1 öffnen und nach schließen von Form 2 in Form 1 witermachen

  Alt 12. Jun 2024, 12:36
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;
Walter Landwehr
Mfg

Walter
  Mit Zitat antworten Zitat
lxo

Registriert seit: 30. Nov 2017
296 Beiträge
 
Delphi 12 Athens
 
#2

AW: Form 2 aus Form 1 öffnen und nach schließen von Form 2 in Form 1 witermachen

  Alt 12. Jun 2024, 12:43
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;
Du könntest dem Form2 ein OnClose/OnDestroy-Event zuweisen, wenn du dieses aus Form1 verwendest.
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;

Geändert von lxo (12. Jun 2024 um 12:52 Uhr)
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.780 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Form 2 aus Form 1 öffnen und nach schließen von Form 2 in Form 1 witermachen

  Alt 12. Jun 2024, 13:01
oder eine Nachricht (postMessage) an die Form1 senden wenn die Form2 geschlossen wird.

Grüsse Klaus
Klaus
  Mit Zitat antworten Zitat
TomyN

Registriert seit: 8. Nov 2006
Ort: Bayreuth
268 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Form 2 aus Form 1 öffnen und nach schließen von Form 2 in Form 1 witermachen

  Alt 12. Jun 2024, 15:09
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.
Thomas Neumann
Meine Projekte
www.satlive.audio
www.levelcheck.de
  Mit Zitat antworten Zitat
Walter Landwehr

Registriert seit: 28. Mär 2006
Ort: 32816 Schieder-Schwalenberg
405 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Form 2 aus Form 1 öffnen und nach schließen von Form 2 in Form 1 witermachen

  Alt 14. Jun 2024, 14:16
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:
procedure TTierhalterFrm.BtnPatblattFarbe;
begin
  if (ToolsOperation.Farbe = True) then
    btnPatblatt.Font.Color := clred // Hier kommt Zugriffsverletzung
  else
    btnPatblatt.Font.Color := clWindowText;
  btnPatblatt.Refresh;
end;
Keine Ahnung warum.
Ist die Form 1 nicht aktiv?
Walter Landwehr
Mfg

Walter
  Mit Zitat antworten Zitat
TomyN

Registriert seit: 8. Nov 2006
Ort: Bayreuth
268 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Form 2 aus Form 1 öffnen und nach schließen von Form 2 in Form 1 witermachen

  Alt 14. Jun 2024, 14:44
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.
Thomas Neumann
Meine Projekte
www.satlive.audio
www.levelcheck.de
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.376 Beiträge
 
Delphi 12 Athens
 
#7

AW: Form 2 aus Form 1 öffnen und nach schließen von Form 2 in Form 1 witermachen

  Alt 14. Jun 2024, 17:40
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.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (14. Jun 2024 um 17:48 Uhr)
  Mit Zitat antworten Zitat
Walter Landwehr

Registriert seit: 28. Mär 2006
Ort: 32816 Schieder-Schwalenberg
405 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Form 2 aus Form 1 öffnen und nach schließen von Form 2 in Form 1 witermachen

  Alt 15. Jun 2024, 10:44
Wie funktioniert PostMessage? (von form zu form) habe es noch nie benutzt. Gibt es irgendwo ein Beispiel.
Walter Landwehr
Mfg

Walter
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.646 Beiträge
 
Delphi 12 Athens
 
#9

AW: Form 2 aus Form 1 öffnen und nach schließen von Form 2 in Form 1 witermachen

  Alt 14. Jun 2024, 14:54
Also ich rufe in Form 2 bei OnDestroy eine Procedure in Form 1 auf.
Wie machst du das denn genau?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 01:26 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