Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Komponente auf anderer Form einen Wert zuweisen


Heino - Fr 06.06.03 19:59
Titel: Komponente auf anderer Form einen Wert zuweisen
Hallo!

Wie kann ich aus einer Pocedure im Hauptformular einer Komponente auf einem anderen Formular einen Wert zuweisen. wenn ich z.B. zweitesFormular.led.digits:= 123; eingebe zeigt er mir sobald der Punkt nach zweitesFormular eingegeben ist auch alle Eigenschaften der Komponente auf dem anderen Formular an und meckert auch nicht, aber sobald ich F9 drücke stürzt mein Programm ab.

Vielen Dank
Heino

Moderiert von user profile iconTino: Delphi-Tags hinzugefügt. Absätze entfernt.


GruppeCN - Fr 06.06.03 21:11

Der Fehler muss wo anderes liegen.


Heino - Fr 06.06.03 21:33
Titel: Komponente auf einem anderen Formular einen Wert zuweisen
Hallo

Es musss an der Zeile liegen

Delphi-Quelltext
1:
frmAuswahl.ledItalien.Value:= IntToStr(123);                    

frmAuswahl entspricht dem Formularname und ledItalien ist eine
Komponente wenn ich nur diese Zeile auskommentiere

Delphi-Quelltext
1:
//frmAuswahl.ledItalien.Value:= IntToStr(123);                    

dann läuft mein Programm wieder. hat es eventuell etwas unit deklarationen in uses Anweisungen zu tun ?

Danke

Moderiert von user profile iconTino: Delphi-Tags hinzugefügt.


GruppeCN - Fr 06.06.03 21:37

Such mal nach der Zeile

Delphi-Quelltext
1:
uses frmAuswahl;                    


Wenn es die nicht gibt, liegt es daran.


Heino - Fr 06.06.03 22:04
Titel: Komponente wert zuweisen
Hallo

Ich habe den Fehler gefunden aber leider nicht behoben. der Fehler ist das ich den Wert der Komponente auf dem anderen Formular im Ereignis OnShow programmiert habe. Wenn ich einen Button platziere und es im Click Ereignis programmiere funktioniert es. Ich möchte aber beim Programmstart automatisch die Anzahl der Zeilen aus einer Datei auslesen und in die ledAnzeige auf dem anderen Formular bringen. Denn wenn ich die Datei ändere soll beim Programmstart automatisch die neue Zeilenanzahl angezeigt werden.

Heino


Wolff68 - Mo 09.06.03 17:47

Also ich weis jetzt nicht genau welche Komponente bei Dir ledItalien ist, aber die Eigenschaft .Value ist meist ein Integer und kein String. Also eher frmAuswahl.ledItalien.Value := 123 und nicht IntToStr(123).

Das andere Problem ist gravierender. Machst Du das in der OnCreate der Hauptform ist unter Umständen frmAuswahl noch gar nicht erzeugt. Deshalb wird dann auch Dein Programm abstürzen.
Probier mal das ganze in der Hauptform unter OnActivate zu verschieben. Da sollte das Unterfenster bereits vorhanden sein.

Wenn auch das nicht hilft kannst mal versuchen das Unterformular VOR dem Hauptvormular erzeugen zu lassen. (Das kann aber auch total in die Hose gehen!)
Du findest die Aufrufe im Quelltext des eigentlichen Programmes (Ansicht-Units und die 'unit' des eigentlichen Programmes auswählen) Sollte in der ersten Zeile mit program anfangen statt mit unit.
Weiter unten findest dann die Formular-Aufrufe:

Quelltext
1:
2:
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TfrmAuswahl, frmAuswahl);

Tausche die beiden einfach mal aus.