Haben Sie sich auch schon immer gefragt, wie Komponenten wie z.B. die MsgBox diese Parameter-Addierung schaffen? Wie Sie ebenfalls solche addierbaren Parameter realisieren, möchte ich Ihnen in diesem Beitrag erklären. Wenn wir die MsgBox aufrufen, gibt uns diese Komponente die Möglichkeit z.B. zwei Buttons (bspw. "Ja" und "Nein") und ein Standardbild (z.B. das gelbe Dreieck mit dem Ausrufezeichen) einzubetten. Der Aufruf sieht in diesem Beispiel folgendermaßen aus: MsgBox "Dies ist ein Test.", vbExclamation + vbYesNo, "Test" Ok, was die MsgBox kann, können wir schon lange! Erstellen wir zunächst ein neues Projekt mit einem Modul. Danach schreiben wir uns eine Enumeration im soeben erstellten Modul mit den gewünschten Parametern. Ich nehme hier mal Zutaten für eine Pizza. Option Explicit Public Enum PizzaZutaten Tomaten = 1 Kaese = 2 Salami = 4 Schinken = 8 Mozarella = 16 Thunfisch = 32 Zwiebeln = 64 Alles = 127 End Enum Der aufmerksame Leser wird bereits bemerkt haben, dass die Zuordnungszahlen in dieser Enumeration durch 2^n gebildet werden. Um Ihre eigene Enumeration zu bauen benutzen Sie also folgende Formel: 2 ^ (ElementNummer - 1) Für das letzte Element, welches alle vorherigen beschreibt müssen Sie noch die Zahl mit 1 subtrahieren. Kommen wir nun zur eigentlichen Prozedur: Public Sub PizzaBacken(ByVal Zutaten As PizzaZutaten) Dim lAktuelleZutat As Long Dim sPizza As String sPizza = "Sie erhalten eine Pizza mit " ' Die Zutat mit der höchsten ID errechnen lAktuelleZutat = 64 ' Die höchste Zuordnungszahl meiner Zutaten Do While Zutaten > 0 ' Ist lAktuelleZutat in Zutaten? Zutaten = Zutaten - lAktuelleZutat If Zutaten >= 0 Then ' Die Zutat kommt auf die Pizza sPizza = sPizza & ZutatName(lAktuelleZutat) If Zutaten = 0 Then sPizza = sPizza & "." Else sPizza = sPizza & ", " End If Else ' Die Zutat ist nicht dabei Zutaten = Zutaten + lAktuelleZutat End If ' Nächste ZutatenID lAktuelleZutat = lAktuelleZutat / 2 Loop ' Pizza ausgeben. Guten Appetit! MsgBox sPizza End Sub Private Function ZutatName(ZutatID As Long) As String Select Case ZutatID Case 1: ZutatName = "Tomaten" Case 2: ZutatName = "Käse" Case 4: ZutatName = "Qualitäts-Salami" Case 8: ZutatName = "gekochter Schinken" Case 16: ZutatName = "Mozarella" Case 32: ZutatName = "Thunfisch" Case 64: ZutatName = "roten Zwiebeln" End Select End Function In der Prozedur wird nun für jeden möglichen Parameter getestet, ob er in der Parametersumme vorkommt. Ist dies der Fall wird die zugehörige Aktion ausgeführt. Die Zusatzfunktion ZutatName ist hier nur für die Namensausgabe meiner Pizza-Zutaten zuständig. Aufgerufen wird diese Funktion dann wie folgt: PizzaBacken Tomaten + Kaese + Thunfisch + Zwiebeln PizzaBacken Alles Mit diesen Aufrufen bekommen Sie nun Ihre virtuelle Thunfisch-Pizza oder eine Pizza mit allem. So, und das war auch schon alles! Dieser Tipp wurde bereits 9.963 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
sevOutBar 4.0 Vertikale Menüleisten á la Outlook Erstellen von Outlook ähnlichen Benutzer- interfaces - mit beliebig vielen Gruppen und Symboleinträgen. Moderner OfficeXP-Style mit Farbverläufen, Balloon-Tips, u.v.m. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 Access-Tools Vol.1 Über 400 MByte Inhalt Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |