Hallo, Ich schreibe gerade ein Programm (unter VB6) bei dem ich mehrere Labels auf einem Formular habe. Jedes Label ist eine Art "Box", wenn man ein Label anklickt öffnet sich ein neues Fenster in dem der Inhalt angezeigt wird.
Jetzt zu meiner Frage. Ist es möglich dieses Problem anders zu lösen als mit sehr vielen "if..then..else"-Anweisungen? Ich habe zwar eine Idee wie ich es anders machen kann, doch leider weiss ich nicht ob es funktioniert. Ist es möglich einfach abzufragen ob irgendein Label angeklickt wurde? Wenn es möglich ist dann müsste man doch auch an den Namen des Labels kommen...
Also, ist es möglich an den Namen eines Labels zu kommen ohne das man für jedes Label eine if...then...else-Anweisung schreiben muss?
verstehe nicht warum du eine if abfrage benötigst!?
es geht prinzipiel so:
nehmen wir an du hast 10 labels lblTest1 bis lblTest10. Jeder dieser hat so genannte evenst unter anderem das 'Click' event welches ausgelöst wird sowie ein benutzer mit der linken Maustaste auf diesen clickt.
die sub sieht so aus
Visual Basic:
PrivateSub lblTest1_Click()
EndSub
PrivateSub lblTest2_Click()
EndSub
PrivateSub lblTest3_Click()
EndSub
in diese schreibst du deinen code eine if abfrage ist nicht notwendig.
die professionelle variante sieht so aus:
z.B: wieder 10 labels ALLE heißen gleich >lblTest< lediglich die Eigenschaft Index wird erhöht (von 0 bis 9). Es gibt auch hier das Click Event jedoch sieht der Syntax so aus:
Visual Basic:
PrivateSub lblTest_Click(Index AsInteger)
EndSub
Mithilfe des Übergabegabe parameters weißt du welcher label (0-9) gedrückt wurde.
wenn du wie du sagst beim drücken nur den Inhalt in 'Groß' Anzeigen möchtest, geht das mit einer msgbox:
willst du eine 2. Form öffnen übergibst du die Caption eigenschaft am leichtesten mit einer Public variable.
willst du für jeden Label eine eigene Prozedur ausführen, brauchst du eine Abfrage, aber es gibt sinnvolleres als if then else if. in 'c' heißt es switch-case in 'vb' select-case geht so:
Visual Basic:
PrivateSub lblTest_Click(Index AsInteger) Select Case Index Case 0 ' Code zu Label 0 Case 1 ' Code zu Label 1 Case 2 ' Code zu Label 2 End Select EndSub
du kannst natürlich noch viele case mehr schreiben aber zur veranschaulichung sollten hier 3 genügen.