laufzeitgenerierte Objekte mit funktion erstellen.

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: laufzeitgenerierte Objekte mit funktion erstellen.
von: d9C
Geschrieben am: 27.05.2015 13:59:09

Hallo,
ich habe das Netz auf und ab gesucht aber leider nicht gefunden.
Ich möchte einem, zu laufzeit generierten, RadioButton eine funktion ausführen lassen.
For i = begin To intAnz
pZahl = Me.mpWechsel.Pages.Count + 1
With Me.mpWechsel
.Add ("Nr. " & pZahl)

With .Pages("Nr. " & pZahl).Add("Forms.Frame.1")
.Left = 6
.Top = 6
.Height = 120
.Width = 360
.Caption = "Wechsel"
.SpecialEffect = 2

With .Add("Forms.Optionbutton.1")
.Left = 240
.Top = 24
.Visible = True
.Height = 21.85
.Width = 96
.Name = "obWunsch" & pZahl
.Caption = "Wunschtermin"
.GroupName = "Datum" & pZahl
.BackStyle = 0
.Font.Size = 12
End With

With .Add("Forms.Optionbutton.1")
.Left = 240
.Top = 48
.Visible = True
.Height = 21.75
.Width = 80
.Name = "obAsap" & pZahl
.Caption = "ASAP"
.ControlTipText = "As soon as possible = Nächst möglicher Termin(Opt-In)"
.GroupName = "Datum" & pZahl
.BackStyle = 0
.Font.Size = 12
End With

With .Add("Forms.Optionbutton.1")
.Left = 114
.Top = 24
.Visible = True
.Height = 21.85
.Width = 117
.Name = "obKdg" & pZahl
.Caption = "Kündigungstermin"
.GroupName = "Datum" & pZahl
.BackStyle = 0
.Font.Size = 12
End With

With .Controls.Add("Forms.Label.1", Name:="lblEndDat" & pZahl)
.Left = 6
.Top = 36
.Visible = True
.Height = 14.35
.Width = 36
.Font.Size = 12
.Caption = "Datum"
End With

With .Add("Forms.Textbox.1")
.Left = 114
.Top = 48
.Visible = True
.Height = 18
.Width = 114
.Name = "tbEndDat" & pZahl
End With
End With
End With
Die RadioButtons sind, wie man sehen kann in einer grp. Wenn der RadioButton "asap" ausgewählt ist, soll die textbox "tbEndDat" ausgegraut werden. diese werden je nach anzahl in einer anderen Textbox erweitert. ergo: anzahl 10 = 10 Pages in Multipage mit den 10 RadioButtons und Textboxen usw.
wie genau mache ich das?

Bild

Betrifft: AW: laufzeitgenerierte Objekte mit funktion erstellen.
von: Daniel
Geschrieben am: 27.05.2015 14:16:18
Hi
warum platzierst du die Optionbuttons nicht ausserhalb der Multipages?
dann reicht eine Gruppe, egal wieviele Werte du hast und die kannst du fest erstellen.
die einzelnen Werte für die verschiednene Multipages merkst du dir in einem Array und setzt die Optionbuttons im Change-Event der Multipage auf den Wert der aktiven Seite.
gleiches für die Textbox.
kannst du im Prinzip für alle Steuerlemente machen, die für jede der Seiten gleich sind.
auf den Multipageseiten befinden ich dann nur die Steuerelmente die nicht für alle Seiten gültig sind
Wenn die Pages prinzipell gleich aufgebaut sind, kannst du dann auch die Multipage durch ein einfaches Register ersetzen.
Gruß Daniel

Bild

Betrifft: AW: laufzeitgenerierte Objekte mit funktion erstellen.
von: d9C
Geschrieben am: 27.05.2015 14:56:23
weil die RadioButtons unmittelbar mit dem inhalt in der Page zusammenhängt. Man muss diese sachen dort ausfüllen für jede einzelne page. anders geht es nicht.

Private Sub oAktion_Aktion2(DieZahl As Long)
	Label2.Caption = DieZahl
	Label1.BackColor = Label2.BackColor
	Label2.BackColor = vbRed
	Me.Repaint
End Sub
steht in einem Beispiel was vorher gepostet wurde. aber das problem ist ja das ich nicht weiß wieviele erstellt werden. es könntne 150 sein. aber ich kann ja kaum 150 aktionen in einer klasse anlegen, das ist nicht wirklich mein ziel.

Bild

Betrifft: AW: laufzeitgenerierte Objekte mit funktion erstellen.
von: Daniel
Geschrieben am: 27.05.2015 15:10:56
Hi
wie gesagt, speichere im Change-Event der Optionbuttons die Inhalte der Optionbuttons einem Array.
Index ist die Nummer des aktiven Blattes (Multipage.Value)
Das Array muss so viele Elemente enthalten wie die MuPa Seiten hat.
im Change-Evetn der Multipage schaust du dann im array, welcher Wert drin steht und aktivierst den entsprechenen Optionbuttons.
dh die zum blatt gehörenden Werte stehen im Array und über die Optionbuttons änderst du den Array-Wert im zum Blatt gehörenden Index.
klinkt jetzt ein bisschen aufwendig, aber die Alternative (Klassenprogrammierung) ist jetzt auch nicht so ganz ohne.
Kleiner Tip noch am Rande:
Optionbuttons möglichst durch eine List- oder Combobox ersetzen.
Auch das reduziert für dich den Aufwand, weil du weniger Steuerelemente zu verwalten hast.
Gruß Daniel

Bild

Betrifft: AW: laufzeitgenerierte Objekte mit funktion erstellen.
von: d9C
Geschrieben am: 27.05.2015 15:20:05
Stimmt ich könnte die RadioButtons mit einer Combobox ersätzen.
Klassenprogrammierung finde ich aber eleganter...

Bild

Betrifft: AW: laufzeitgenerierte Objekte mit funktion erstellen.
von: Daniel
Geschrieben am: 27.05.2015 15:25:18
Hi
warum?
was ist elegant daran, 30 Optionbuttons in einer Userform zu haben, wenns eine Combobbox genauso macht?
Gruß Daniel

Bild

Betrifft: AW: laufzeitgenerierte Objekte mit funktion erstellen.
von: d9C
Geschrieben am: 27.05.2015 16:28:33
ganz einfach ich erläuter es kurz:
es geht um verträge, je nachdem wieviele der KD zu uns mitbringen will, müssen wir für jeden einzelnen das datum festlegen, wann der mitgenommen werden kann oder aktiviert werden soll... also ist es unabdingbar dort für jede page in Multipages eine combobox(radiobutton-set) erstellt wird. Das ich radiobutton genommen habe habe ich einfach nicht bedacht das es eine combobox genauso tut.

Bild

Betrifft: AW: laufzeitgenerierte Objekte mit funktion erstellen.
von: Daniel
Geschrieben am: 27.05.2015 16:41:48
Hi
warum ist das erforderlich, dass jede Seite eine eigene Combobox hat?
angezeigt wird eh immer nur eine gleichzeitig und ob die zur Multipage seite gehörenden Werte jetzt in vielen Comboboxen oder in einem Array gespeichert sind, ist doch egal.
du kannst die Werte auch in eine Zellbereich schreiben und von dort auslesen, dann sind sie gleich gespeichert.
Wie gesagt, wenn du mit vielen zur Laufzeit erstellten Steuerelementen arbeiten willst, dann darfst du das gerne tun, nur dann darfst du mich nicht fragen. Ich kenne mich mit der Klassen programmierung nicht aus, weil ich die selber noch nie benutzt habe.
ich wäre dann erstmal hier raus, du solltest mit ransi weiterreden.
Gruß Daniel

 Bild

Beiträge aus den Excel-Beispielen zum Thema "laufzeitgenerierte Objekte mit funktion erstellen."