Colorpicker in VBA benutzen


  
 Bezieht sich auf 
  
 Produkt(e):MicroStation
 Version(en):08.11.09.578
 Umgebung: Windows 7 32 bit,Windows 7 64 bit
 Produktbereich: Programmierung
 Produktunterbereich: VBA
 Ursprünglicher Autor:Artur Goldsweer, Bentley Technical Support Group
  

Hintergrundinformation

Im Dialogbuilder von MicroStation Basic gab es vorgabemäßig auch ein Steuerelement, um die Farbauswahl zu unterstützen.
Dieses Steuerelement stellt in einem Rechteck alle Farben dar und bietet die Auswahl einer Farbe.
Im VBA ist dieses Steuerelement vorgabemäßig nicht vorhanden, kann aber hinzugefügt werden. 

Erforderliche Schritte

Im VBA Editor unter Extras wählen Sie den Menüpunkt, um zusätzliche Steuerelemente hinzuzufügen, hier ein Screenshot der englischen Version:

Es öffnet sich daraufhin eine Dialogbox mit der Auflistung zusätzlich vorhandener Steuerelemente. ich wähle das Steuerelement des Colorpickers aus:

Das neue Steuerelement ist auch direkt in der Werkzeugbox aufgelistet und kann in einer USerform platziert werden:

Vorgabemäßig sind die Farben eines Colorpickers Elementes mit den Standardfarben vorbesetzt:

In der konkreten Anwendung könnte die Farbtabelle des Colorpickers Elementes der Userform mit den Farben des aktiven Modells gefüllt werden.
Dies kann in der Initialisierung der Userform durchgeführt werden.
Hier dazu ein kleines Beispiel, mit einer Userform, in der der Colorpicker platziert ist, die Farben werden aus dem aktvien Modell zugewiesen.
Zusätzlich sind zwei Textfelder (label1 und label2) platziert und geben die Farbnummer bzw. die RGB Werte der Farbe wieder:

' andere Reihenfolge der Komponenten r,g,b beachten:
Private Function switchRGB2BGR(co As Long) As Long
Dim coTemp As Long
Dim rColor As Byte
Dim gColor As Byte
Dim bColor As Byte

coTemp = co
bColor = coTemp Mod &H100
coTemp = coTemp \ &H100
gColor = coTemp Mod &H100
coTemp = coTemp \ &H100
rColor = coTemp Mod &H100
switchRGB2BGR = RGB(rColor, gColor, bColor)
End Function

' Ausgabe der Farbnummer und RGB Werte bei Auswahl einer Farbe:
Private Sub ColorPicker1_ColorPicked(ByVal cIndex As Long)
Dim longColor As Long
Dim intRed As Byte
Dim intGreen As Byte
Dim intBlue As Byte

' Textfeld 1 gibt die Farbnummer an:
colorpickform.Label1.Caption = "Color selected: " + Str(ColorPicker1.ColorIndex)

longColor = ActiveModelReference.InternalColorToRGBColor(ColorPicker1.ColorIndex)
intBlue = longColor Mod &H100
longColor = longColor \ &H100
intGreen = longColor Mod &H100
longColor = longColor \ &H100
intRed = longColor Mod &H100
' Textfeld 2 gibt den RGB Wert an
colorpickform.Label2.Caption = "RGB: " & intRed & "," & intGreen & "," & intBlue

End Sub

' Initialiserung der Farben aus dem aktiven Modell
Private Sub UserForm_Initialize()
For i = 0 To 255
    colorpickform.ColorPicker1.SetColorAtIndex i, switchRGB2BGR(ActiveModelReference.InternalColorToRGBColor(i))
Next
End Sub


Die Anzeige nach Auswahl einer Farbe könnte dann beispielsweise so aussehen:

Sehen Sie hierzu auch