vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Variablen/Strings · Algorithmen/Mathematik   |   VB-Versionen: VB4, VB5, VB602.08.05
Optionsaddierung wie die MsgBox

Addierbare Parameter wie bei der Msg-Box selbst gemacht...

Autor:   Tobias WelteBewertung:  Views:  9.953 
www.tobiwan.orgSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11kein Beispielprojekt 

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!
Ich hoffe Ihnen hat dieser Tipp geholfen.
 



Anzeige

Kauftipp Unser Dauerbrenner!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.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


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.