Child-Form soll Daten in Parent-Form ändern

hbrauchl

Mitglied
Hallo zusammen!

Ich stehe vor folgendem Problem:
Meine Hauptform ruft eine andere Form (zB.: Nebenform1) auf.
Diese "Nebenform" soll Daten in der Hauptform verändern.

Wenn ich nun zB.: folgendes mache:

Code:
....
Hauptform.Label1.Caption="Test"
...

dann wird nichts in der "Hauptform verändert.

Weiß hier jemand rat?

Danke im voraus.


LG,
Hans
 
Hallo, das sollte so funktionieren. Der Fehler liegt wahrscheinlich woanders.
In Deiner Haupform wird die Caption des Label1 im Paint, Activate oder Resize Ereignis gelöscht.
Daher siehst Du keine Veränderung im Label1.
 
Hi

nimm doch einfach mal den Debugger zur Hilfe. Setzte auf die Zeile einen Haltepunkt; führe den Code aus; wenn der Debugger die Programmausführung angehalten hat, führe Deine Anweisung mittels F8 noch aus, und schaue Dir nun das Ergebniss auf Deiner Form an.

Gruß
Das Orakel
 
Hi!

Ok, ich habe es debuggt:
Also gesetzt wird es in der Nebenform, jedoch wird das Label anscheinend nicht
refresht.
Verstehe ich nicht. Warum wird der Wert in der Hauptform nicht beibehalten?


LG,
Hans
 
Hallo zusammen!

Ich habe mit Hilfe des Debuggins gesehen, daß zwar die Variable richtig gefüllt
wird, jedoch nicht in der Hauptform korrekt angezeigt wird:

z.B.:
Code:
Hauptform.Label1.Caption="Test"

Dann sehe ich im Debugger wie das Label richtig befüllt wird, jedoch direkt
auf der "Hauptform" bleibt der Standardwert (z.B.: "Text123") gesetzt.

"wincnc" hat geschrieben, daß das durch ein Ereignis gelöscht wird.
Wie kann ich Testen welches Ereignis dies auslöst?

Hoffe es kann mir wer helfen.

Vielen Dank im voraus.


LG,
Hans

PS: Momentan umgehe ich das Problem mit globalen Variablen - nur das ist
nicht wirklich sauber.
 
Probiere doch sonst mal, ein Refresh des Labels zu erzwingen, nachdem du "Caption" geändert hast:
Code:
Hauptform.Label1.Refresh
 
Hi!

Danke für Deine Antwort.

Leider ändert ein refresh auch nichts. :confused:

Hast Du noch eine Idee?

Danke im voraus.

LG,
Hans
 
Hi zusammen,

Also wenn ich einfach mal 2 Forms nehme, auf jeden einen COmmand Button plaziere, und dann folgenden Code nehme:
code Form1:
Code:
Option Explicit

Private Sub Command1_Click()
    Form2.Show
End Sub

code Form2:
Code:
Option Explicit

Private Sub Command1_Click()
    Form1.Caption = "Hallo Welt"
    Form1.Label1.Caption = "Und ein Hallo Welt für das Label"
End Sub
kann ich das von Dir geschilderte Verhalten nicht nachvollziehen.

Ok. Versuchen wir das Problem einzugrenzen:
1) Suche mal in Deinem gesamten Projekt, wo diesem Label die Caption Eigenschaft zugewiesen wird
2) Würde mich mal interessieren, was in dem Label sonst dargestellt wird. Nicht dass es ein gebundenes Label ist, dass seine Daten aus einer Datenbank bekommt.

Gruß
Das Orakel
 
Hi!

Hab Deine Beispiele getestet und bin zu dem selbem Ergebis wie Du gekommen.

Ich denke nun, ich weiß wo der Fehler liegt:

Ich öffne die "Nebenform" mit
Code:
Nebenform.Show (1)
da ich sonst folgende Meldung bekomme:
Laufzeitfehler 401 - Ungebundes Formular kann nicht angezeigt werden,
während modales Formular angezeigt wird.

Wie kann ich dieses Problem lösen (da ich anscheinend .Show (1) benötige).

Danke nochmals.

LG,
Hans
 
Hi,

sehe ich das richtig, dass Du insgesamt 3 Forms hast? Der Code
Code:
Nebenform.Show(1)
steht in der 2 Maske, die bereits mit "Form2.Show (1)" angezeigt wird. Dann vermute ich weiter, dass die Anweisung Hauptform.Label1.Caption = "Test" nach der Anweisung Formxxx.Show (1) steht.

Du zeigst Deine Masken im sogenannten modalen Modus an. Das heist solange diese Masken nicht geschlossen werden, bleibt die Ausführung im Aufrufenden Code an der Zeile stehen, mit der Du die Masken aufrufst. Es wird also nur Code in der Maske ausgeführt, die als letztes angezeigt wird. In den anderen Masken verharrt die Codeausführung bei der Anweisung "Formxxx.Show (1)"

Gruß
Das Orakel
 
Zurück