Vereinfachter Formularaufruf auf Basis von Indizes Verfasst am: 04.02.2010, 11:16
Hallo,
ich habe eine Frage und hoffe auf jemanden, der sich besser auskennt als ich!
Ich habe ein VB6-Projekt mit mehreren Formularen. Verienfacht geschgildert gibt e ein Startformular (frmStart) von dem aus ich die anderen Formuare aufrufen will. Die anderen Formulare heißen frm0, frm1, frm2, frm3, frm4...
Der Aufruf erfolgt über indizierte Buttons. Ich weiß also das wievielte (Index) Formular ich aufrufen will (z.B. das fünfte Formular -> frm5).
Bisher habe ich das so realisiert:
Code:
Select Case Index
Case 0
Load frm0
frm0.show
Case 1
Load frm1
frm1.show
Case 2
Load frm2
frm2.show
Case 3
...
...
...
End select
Nun meine Frage: Gibt es einen Weg, wie ich unter verwendung des Index die entsprechende Formular ohne die Select-Case Nummer aufrufen kann?
Also jetzt mal symbolisch "programmiert":
Code:
Load "frm" & Index
"frm" & Index.show
Gruß und scon mal Danke an jeden, der versucht mir zu helfen!!!
Magico _________________
christopher.g Poster
Anmeldedatum: 03.05.2008 Beiträge: 174
Verfasst am: 05.02.2010, 05:06
hallo ich habs gestern lange probiert
aber nein ich habs nicht geschafft
und ich glaube auch nicht dass das möglich ist
was su aber machen könntest
du schreibst selcet case in eine eigene sub
Code:
Public Sub fLoad(index As Integer)
Select Case index
Case 0:
frm_main.Show
Case 1:
frm_1.Show
End Select
End Sub
z.B.
und aufrufen tust dus ganz einfach mit
fload 1
und fertig
vielleicht hilft dir das weiter
--------------------------------
weiters könntest du auch
Code:
Private f1 As Frm_deinlangerformname
f1.Show
ich hoffe ich konnte dir etwas helfen
aber andere lösung kenn ich keine
lg
Magico777 Newbie
Anmeldedatum: 17.11.2009 Beiträge: 6
Vereinfachter Formularaufruf auf Basis von Indizes Verfasst am: 05.02.2010, 08:09
Hallo Christopher,
vielen Dank für Deine Antwort und die Mühe, welche Du Dir gemacht hast!!!
Schade, dass auch Du zu keinem positiven Ergebnis gekommen bist. Ich habe auch noch ein wenig recherchiert und ebenfalls keine Lösung gefunden.
Das ganze in eine eigene Procedure zu packen, hatte ich schon...
Im Moment ist die "beste" Variante für mich folgende (leider auch nicht automatsiert, aber immerhin etwas schlanker):
Code:
Dim f(10) As Form
Private Sub Cmd_Aufruf_Click(Index As Integer)
Load f(Index)
f(Index).Show
End Sub
Private Sub Form_Load() 'Deklaration der Formnamen an einer zentralen Stelle - Eingabe leider per Hand
Set f(0) = frm0
Set f(1) = frm1
Set f(2) = frm2
...
...
...
End Sub