Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Variable in aufgerufene Form zurückgeben (https://www.delphipraxis.net/199212-variable-aufgerufene-form-zurueckgeben.html)

Walter Landwehr 6. Jan 2019 17:01

Variable in aufgerufene Form zurückgeben
 
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
Delphi-Quellcode:
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?

juergen 6. Jan 2019 17:09

AW: Variable in aufgerufene Form zurückgeben
 
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;

Walter Landwehr 6. Jan 2019 17:37

AW: Variable in aufgerufene Form zurückgeben
 
PatientenblattFrm ist nicht das Hauptformular. Das PatientenblattFrm wird vom PatientFrm (ist auch nicht das Hauptformular) so aufgerufen:
Delphi-Quellcode:
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 6. Jan 2019 17:39

AW: Variable in aufgerufene Form zurückgeben
 
Hallo Jürgen habe ich schon gemacht, leider ohne Erfolg. Ich weiß nicht warum mein TPatientenblattFrm nil ist.

Heuman 6. Jan 2019 17:43

AW: Variable in aufgerufene Form zurückgeben
 
Zitat:

Zitat von Walter Landwehr (Beitrag 1422734)
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
Delphi-Quellcode:
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ß

Walter Landwehr 6. Jan 2019 17:50

AW: Variable in aufgerufene Form zurückgeben
 
Danke an alle, habe es jetzt so gelöst.
Delphi-Quellcode:
frmDatum := TfrmDatum.Create(nil);
    frmDatum.ShowModal;
    NewDate := frmDatum.cxDateNavigator1.Date;

haentschman 7. Jan 2019 06:18

AW: Variable in aufgerufene Form zurückgeben
 
Moin...:P
Zitat:

PatientenblattFrm.NewDate := cxDateNavigator1.Date;
imho ist das unglücklich.:wink: 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.:wink:
Delphi-Quellcode:
frmDatum := TfrmDatum.Create(nil);
frmDatum.ShowModal;
NewDate := frmDatum.cxDateNavigator1.Date;
...das ist genau das was ich meinte. :thumb: 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;

Luckie 7. Jan 2019 06:36

AW: Variable in aufgerufene Form zurückgeben
 
http://michael-puff.de/Programmierun...tauschen.shtml

TigerLilly 7. Jan 2019 07:04

AW: Variable in aufgerufene Form zurückgeben
 
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.

freimatz 7. Jan 2019 07:06

AW: Variable in aufgerufene Form zurückgeben
 
Zitat:

Zitat von Walter Landwehr (Beitrag 1422734)
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


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:50 Uhr.
Seite 1 von 2  1 2      

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