Autor |
Beitrag |
mats
Beiträge: 49
|
Verfasst: Di 21.08.18 13:36
Hallo,
Alles ganz einfach, und wieder nicht. Unit1 mit einem Record (Adressdaten, alles Strings) und Label zur Eingabe, Button usw. Wenn ich den Button drücke, wird vom Label gelesen und in den Record geschrieben, dann wird Unit2 aufgerufen um den Inhalt vom Record auszugeben. Funktioniert aber nur, wenn ich auf Unit2 auch einen Button drücke und einem Label den Inhalt von User.Name zuweise. Wenn ich den Record im OnCreate-Ereignis auslesen will und dem Label zuweisen, dann klappts nicht - Warum?
Vielleicht kann mir jemand die Frage beantworten? Ist im OnCreate in Unit2 der Record noch nicht 'geladen'? Ich hab keine Idee..
auf Ideen wartend...
Mats
|
|
jaenicke
Beiträge: 19276
Erhaltene Danke: 1741
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 21.08.18 13:41
Ohne Quelltext lässt sich dazu wenig sagen.
Eine Möglichkeit wäre, dass du die Datei nicht schließt bevor das zweite Formular aufgerufen wird. Dann gibt es vielleicht ein Problem beim Zugriff durch das zweite Formular.
Es gibt davon unabhängig aber auch deutlich bessere Möglichkeiten als die alten typisierten Dateien, in denen Records gespeichert werden. Hast du die Vorgabe Records zu verwenden?
// EDIT:
Missverständnis...
Zuletzt bearbeitet von jaenicke am Di 21.08.18 16:41, insgesamt 1-mal bearbeitet
|
|
mats
Beiträge: 49
|
Verfasst: Di 21.08.18 15:48
Hallo,
die 'Vorgabe' Records? Leider weiß ich nicht was das ist. Das Fenster 1 (dort werden die Daten erzeugt) habe ich geschlossen mit Form1.Close;
Hier zwei Bilder, die die Sache verdeutlichen (was ich meine), bzw. nicht.
Record1.png -> funtioniert NICHT. Label leer.
Record2.png -> bei klick funtioniert. Die Daten werden aus dem Record von Unit1 geladen. Aber warum klappts hier?
Mats
Einloggen, um Attachments anzusehen!
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 21.08.18 16:34
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|
mats
Beiträge: 49
|
Verfasst: Di 21.08.18 16:41
Hallo,
Sorry Frühlingsrolle, aber der/das (?) Record bekommt seine Daten in Unit1! Sorry auch an mich, hätte ich dazuschreiben sollen, die Bilder sind Unit2. Bei OnCreate (Unit2) werden keine Werte vom Record an die Label übergeben. 1 Sekunde später werden die Daten bei ButtonClick korrekt geladen. Als Notlösung geht folgendes: Unit2 -> OnAktivate -> ButtonClick. Ich habe das auch mit OnCreate versucht, da kommt nur die Hälfte der Daten an. Ein Zeitproblem / ein Ladeproblem???
Mats
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 21.08.18 16:56
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|
jaenicke
Beiträge: 19276
Erhaltene Danke: 1741
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 21.08.18 16:57
Einloggen, um Attachments anzusehen!
|
|
mats
Beiträge: 49
|
Verfasst: Di 21.08.18 17:13
Hallo,
vielleicht hab' ich es ein wenig umständlich erklärt. Der Record wird in Unit1 deklariert und bekommt auch dort seine Daten. Bei ButtonCklick -> Weiter schließt sich Unit1 und öffnet sich Unit2 und die Daten sollen angezeigt werden. (Die Daten sind nicht weg, wenn ich Unit1 schließe, wenn ich mit einen Button zurück gehe [also Unit1 öffne und die 2 schließe], sind die Daten noch in den EditFeldern und können noch geändert werden).
An die Möglichkeit für den Record eine eigene Unit zu schreiben hab ich auch schon dran gedacht, bin aber bei dem jetzigen Problem hängengeblieben. Ich werden den SourceCode erst mal ausprobieren.
Danke
Mats
|
|
mats
Beiträge: 49
|
Verfasst: Di 21.08.18 18:42
Hallo,
Habe mir den Code angesehen und viele Anregungen gefunden. Wenn ich aber in meinem Record ca. 20 Variablen habe, gibt es da, beim deklarieren/überschreiben des Contructors eine andere Möglichkeit der Variablenübergabe?
Mats
|
|
Sinspin
Beiträge: 1322
Erhaltene Danke: 117
Win 10
RIO, CE, Lazarus
|
Verfasst: Sa 25.08.18 15:58
Klar. Es ist ja nur in dem Beispiel im Constructor um weitere Methoden zu sparen.
zum beispiel so:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| FValues: array [0..19] of string; procedure SetValue(AIndex: integer; AValue: string); function GetValue(AIndex: integer): string;
property Values[AIndex: integer]: string read GetValue write SetValue; |
_________________ Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?
|
|
jaenicke
Beiträge: 19276
Erhaltene Danke: 1741
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 25.08.18 16:13
Sinnvoller wäre dann eher eine Klasse, wenn es mit dem Array nicht geht (was ich vermute). Denn die kann man problemlos so nutzen: Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| var UserInfo: TUserInfo; begin ... UserInfo := frmSecond.UserInfo; UserInfo.FirstName := 'blub'; UserInfo.FamilyName := 'boo'; ... |
|
|
|