AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Variable in aufgerufene Form zurückgeben
Thema durchsuchen
Ansicht
Themen-Optionen

Variable in aufgerufene Form zurückgeben

Ein Thema von Walter Landwehr · begonnen am 6. Jan 2019 · letzter Beitrag vom 7. Jan 2019
Antwort Antwort
Seite 1 von 2  1 2      
Walter Landwehr

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

Variable in aufgerufene Form zurückgeben

  Alt 6. Jan 2019, 18:01
Hallo,

so ein bisschen bin ich am verzweifeln.

ich habe eine form (PatientenblattFrm) aus dieser rufe ich eine andere Form (frmDatum) auf.
Delphi-Quellcode:
    frmDatum := TfrmDatum.Create(nil);
    frmDatum.ShowModal;
In der zweiten Form ist eine TDateNavigator um ein Datum auszuwählen. Diese gebe ich dann zurück mit
PatientenblattFrm.NewDate := cxDateNavigator1.Date; ----> Hier kommt eine Zugriffsverletzung weil das Form PatientenblattFrm nil ist. Warum ist die Nil?

Die Variable NewDate habe ich in der PatientenblattFrm unter Public declariert. Die Forms sind unter implementation in der uses Klausel eingebunden.

Was mache ich falsch?
Walter Landwehr
Mfg

Walter
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.174 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Variable in aufgerufene Form zurückgeben

  Alt 6. Jan 2019, 18:09
Hallo,

wie genau lautet die Zugriffsverletzung?
Ich sehe nicht warum die Form PatientenblattFrm nil sein soll.
Wenn du deine Form frmDatum nicht zerstörst könntest du auch direkt in der Form PatientenblattFrm das frmDatum.cxDateNavigator1.Date anwenden, also ohne diese globale Variable.
Ist PatientenblattFrm deine Hauptform?

Edit
Ich würde die Form frmDatum mal probieren so aufrufen:
Zitat:
if not Assigned(frmDatum) then begin
frmDatum := frmDatum.Create(nil);
end;
frmDatum.ShowModal;
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)

Geändert von juergen ( 6. Jan 2019 um 18:13 Uhr)
  Mit Zitat antworten Zitat
Walter Landwehr

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

AW: Variable in aufgerufene Form zurückgeben

  Alt 6. Jan 2019, 18:37
PatientenblattFrm ist nicht das Hauptformular. Das PatientenblattFrm wird vom PatientFrm (ist auch nicht das Hauptformular) so aufgerufen:
TPatientenblattFrm.Create(Application.MainForm, Patient1Qry.FieldByName('PatientNr').AsInteger, 0); Das TPatientenblattFrm.ist hier bereits nil. Keine Ahnung warum.

Im frmDatum muss ich aber ein Datum auswählen und zurückgeben.
Walter Landwehr
Mfg

Walter
  Mit Zitat antworten Zitat
Walter Landwehr

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

AW: Variable in aufgerufene Form zurückgeben

  Alt 6. Jan 2019, 18:39
Hallo Jürgen habe ich schon gemacht, leider ohne Erfolg. Ich weiß nicht warum mein TPatientenblattFrm nil ist.
Walter Landwehr
Mfg

Walter
  Mit Zitat antworten Zitat
Heuman
(Gast)

n/a Beiträge
 
#5

AW: Variable in aufgerufene Form zurückgeben

  Alt 6. Jan 2019, 18:43
Hallo,

so ein bisschen bin ich am verzweifeln.

ich habe eine form (PatientenblattFrm) aus dieser rufe ich eine andere Form (frmDatum) auf.
Delphi-Quellcode:
    frmDatum := TfrmDatum.Create(nil);
    frmDatum.ShowModal;
In der zweiten Form ist eine TDateNavigator um ein Datum auszuwählen. Diese gebe ich dann zurück mit
PatientenblattFrm.NewDate := cxDateNavigator1.Date; ----> Hier kommt eine Zugriffsverletzung weil das Form PatientenblattFrm nil ist. Warum ist die Nil?

Die Variable NewDate habe ich in der PatientenblattFrm unter Public declariert. Die Forms sind unter implementation in der uses Klausel eingebunden.

Was mache ich falsch?
Hallo,
müsste es nicht

NewDate := cxDateNavigator1.Date;

lauten?

Gruß
  Mit Zitat antworten Zitat
Walter Landwehr

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

AW: Variable in aufgerufene Form zurückgeben

  Alt 6. Jan 2019, 18:50
Danke an alle, habe es jetzt so gelöst.
Delphi-Quellcode:
frmDatum := TfrmDatum.Create(nil);
    frmDatum.ShowModal;
    NewDate := frmDatum.cxDateNavigator1.Date;
Walter Landwehr
Mfg

Walter
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#7

AW: Variable in aufgerufene Form zurückgeben

  Alt 7. Jan 2019, 07:18
Moin...
Zitat:
PatientenblattFrm.NewDate := cxDateNavigator1.Date;
imho ist das unglücklich. Normalerweise kennt nur der Aufrufer das aufzurufende Form und nicht die aufrufende Form den Aufrufer. Wenn du deine Datumsform mehrfach verwendest, dann hättest du haufenweise Referenzen in den Uses und zirkuläre noch dazu.
Delphi-Quellcode:
frmDatum := TfrmDatum.Create(nil);
frmDatum.ShowModal;
NewDate := frmDatum.cxDateNavigator1.Date;
...das ist genau das was ich meinte. frmDatum ist es wurscht wohin das Ergebnis geht.

Nachtrag (besser):
Delphi-Quellcode:
frmDatum := TfrmDatum.Create(nil);
try
  frmDatum.ShowModal;
  NewDate := frmDatum.cxDateNavigator1.Date;
finally
  frmDatum.Free;
end;

Geändert von haentschman ( 7. Jan 2019 um 09:19 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

AW: Variable in aufgerufene Form zurückgeben

  Alt 7. Jan 2019, 07:36
http://michael-puff.de/Programmierun...tauschen.shtml
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.205 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Variable in aufgerufene Form zurückgeben

  Alt 7. Jan 2019, 08:04
TPatientenblattFrm klingt nach dem Typ und nicht nach einer Variablen, die Nil sein könnte.

Wahrscheinlich hast du die globale Variable, Delphi anlegt, im Code gelassen, nutzt sie aber nicht, um die Form zu erzeugen.
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.444 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Variable in aufgerufene Form zurückgeben

  Alt 7. Jan 2019, 08:06
ich habe eine form (PatientenblattFrm) aus dieser rufe ich eine andere Form (frmDatum) auf.
Ich sehe jetzt warum PatientenblattFrm NICHT nil sein sollte. Wo setzt du die Variable? (Falls das eine ist, sehe keine Code dazu.)
Auch sehe ich nicht, dass Du in PatientenblattFrm eine andere Forma aufrufst. Ich vermute eher, dass du eine TPatientenblattFrm hast
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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