Ich habe ein MDI Hauptformular. Dort öffne ich über das Menü ein kleines Fenster, in welchen ich aussuchen kann welche „Kindsformulare“ angezeigt werden sollen. Dies mache ich dann mit Set x = New neues Formular.In der Form.caption steht auch der jeweilige Name.Das funzt auch alles. Soweit so gut.
Nun will ich auf das jeweilige Formular klicken und das active soll seinen Namen im Hauptformular (Statusleiste) anzeigen. Ich habe schon mit Declare Function GetActiveWindow und mit PropertyLet und Get probiert, aber ich bekomme immer nur das erste oder das letzte, aber nie das was ich anklicke.
Ich bin schon fast am verzweifeln und sitze nun den dritten Tag drüber.Aber „vieleicht“ ist die Lösung nur ein paar Minuten von mir entfernt.
denke nicht so kompliziert und mache dich der eigenschaften und Ereignisse zu nutzen
Vom Prinzip her, mache das wiefolgt.
Du willst ein neues Fenster laden, dabei gibst du der Tag Eigenschaft des Fenster einfach den Text mit der angezeigt werden soll! In der jeweiligen Form, welche ja sicherlich die selbe ist, da du sie mit Set … laden tust, schreibst du einfach in dem Form Activate Ereignis, die Zuweisung das der Titel in der MDI Form angezeigt wird. Hört sich vlt. kompliziert an, ist es aber nicht
Ein kleines Demo zur Veranschaulichung.
'MDI Formular = MDIForm1
'UnterFormulare = Form1 -\> MDI Child = True
'Code im MDI Formular
Option Explicit
Private Sub mnuneu\_Click() 'MenuPunkt neu
Dim F As Form1 'Die Form die geladen werden soll (Form1)
Dim I As Byte 'Variable für die Schleife
For I = 1 To 5 'Wir erstellen 5 Fenster
Set F = New Form1 'F = neue Form1
F.Tag = "Fenster:" & CStr(I) 'Tag von Form1 = Fenster + I
F.Show 'Wir zeigen das Fenster an
Set F = Nothing 'Wir setzen F auf Nichts ( Nothing)
Next
End Sub
'Code dann in der Form1
Option Explicit
Private Sub Form\_Activate() 'Beim aktivieren der Form
MDIForm1.Caption = Me.Tag 'Wir setzen den Text in der MDI Form
End Sub
Ich hoffe das ist das was du suchst? Du musst nur den Formularnamen anpassen und halt das Steuerelement was den Text anzeigt!
Du musst aber bedenken, das bei der Zuweisung f.Tag = … das Form_Load Ereignis ausgelöst wird
Das hat erst einmal wunderbar geklappt. Mit der *.Tag Eigenschaft, da wäre ich nie drauf gekommen, weil ich sie noch nie benutzt habe. Nun muß ich mal sehen wie ich weiterkomme.
man lernt halt nie aus und versucht immer den schwersten Weg zu nehmen. Wobei die lösung meist simple ist
Alternativ haettest du auch eine Variable global declarieren koennen und ihr dann den Wert zuweisen und halt wieder auslesen
Das hat erst einmal wunderbar geklappt. Mit der *.Tag
Eigenschaft, da wäre ich nie drauf gekommen, weil ich sie noch
nie benutzt habe. Nun muß ich mal sehen wie ich weiterkomme.