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 | ||
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.
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: