Alice - Mi 11.07.12 12:06
Titel: Zugriff auf variablen in einer andern form, execption?
hi,
ich versuche hier von formA eine formB zur laufzeit zu erstellen.
dies nun greift auf variablen der formA zu.
das klappt auch, genau *einmal.
dann gibt es eine exception beim zweiten verusch!?
woran könnte das liegen?
hier create formB
Delphi-Quelltext
1: 2: 3: 4:
| Application.CreateForm(Tumsdiagramm, umsdiagramm); umsdiagramm.ShowModal; umsdiagramm.free; umsdiagramm := nil; |
und hier zugriff auf variablen der formA
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| j2002:= unit1.Form1.j2002; j2003:= unit1.Form1.j2003; j2004:= unit1.Form1.j2004; j2005:= unit1.Form1.j2005; j2006:= unit1.Form1.j2006; j2007:= unit1.Form1.j2007; j2008:= unit1.Form1.j2008; j2009:= unit1.Form1.j2009; j2010:= unit1.Form1.j2010; j2011:= unit1.Form1.j2011; j2012:= unit1.Form1.j2012; |
Moderiert von
Narses: Delphi-Tags hinzugefügtModeriert von
Narses: Topic aus Sonstiges (Delphi) verschoben am Mi 11.07.2012 um 14:08
jaenicke - Mi 11.07.12 12:12
Das ist eine sehr schlechte Idee, da du so die Formulare direkt voneinander abhängig machst und zudem auf die globale Formularvariable angewiesen bist. Übergebe die Werte besser vor dem Aufruf der zweiten Form an diese. ;-)
So also z.B.:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| var SettingsForm: TfrmSettingsForm; begin SettingsForm := TfrmSettingsForm.Create(nil); try SettingsForm.Settings := TAppSettings.Instance; SettingsForm.ShowModal; finally SettingsForm.Free; end;
property Settings: TAppSettings read FSettings write FSettings; |
Auf die Weise muss das zweite Formular das erste nicht kennen und bekommt einfach dessen Werte. Umgekehrt kann das erste Formular diese nach der Anzeige natürlich auch wieder auslesen.