Benutzerdefinierte Bilder in twinBASIC

Die Programmiersprache/Entwicklungsumgebung twinBASIC entwickelt sich aktuell stetig weiter. Der Entwickler Wayne Philips fügt ständig neue Elemente hinzu. In den ersten Beiträgen mussten wir das Ribbon eines COM-Add-Ins noch mit den eingebauten Icons ausstatten, da es nicht möglich war, Bilddateien als Ressourcen in die DLL zu integrieren. Das hat sich nun geändert: Sie können Bilddateien zum Projekt hinzufügen und diese sehr einfach im Ribbon nutzen. Dieser Beitrag zeigt, wie das gelingt.

Voraussetzungen

Wie Sie ein COM-Add-In erstellen, erfahren Sie beispielsweise in den beiden Beiträgen twinBASIC – COM-Add-Ins für Access (www.access-im-unternehmen.de/1306) und Access-Optionen per Ribbon ändern (www.access-im-unternehmen.de/1327).

Icons nutzen

Icons verwenden wir bei COM-Add-Ins aktuell für Schaltflächen und andere Elemente im Ribbon. Um Icons zu nutzen, sind zwei Schritte nötig:

  • Hinzufügen zum Projekt
  • Laden, wenn das Ribbon angezeigt wird.

Beides schauen wir uns nun an.

Icons zum Projekt hinzufügen

Das Beispielprojekt für ein COM-Add-In, das Sie mit dem Befehl aus Bild 1 erstellen, enthält bereits zwei Ordner, die für das Hinzufügen von Bildern benötigt werden.

Erstellen eines COM-Add-In-Projekts

Bild 1: Erstellen eines COM-Add-In-Projekts

Ziehen Sie .ico-Dateien in den ICON-Ordner, sodass diese dort wie in Bild 2 erscheinen. Achtung: Wenn Drag and Drop nicht funktioniert, kann es sein, dass Sie Visual Studio Code als Administrator gestartet haben. Wegen der höheren Rechte können Sie dann keine Dateien mehr aus dem normal geöffneten Explorer hineinziehen.

Hinzufügen eines Icons zum Projekt

Bild 2: Hinzufügen eines Icons zum Projekt

Ribbon-Anpassung

In der Ribbon-Definition haben Sie zwei Möglichkeiten, das Icon einzulesen. Die erste ist die Callback-Funktion getImage, der Sie einfach den Namen der aufzurufenden Callback-Funktion übergeben (siehe Listing 1).

Private Function GetCustomUI(ByVal RibbonID As String) As String _
    Implements IRibbonExtensibility.GetCustomUI
    Dim strXML As String
    strXML &= "<customUI ...xmlns=""http://schemas.microsoft.com/office/2006/01/customui"">" & vbCrLf
    strXML &= "  <ribbon startFromScratch=""false"">" & vbCrLf
    strXML &= "    <tabs>" & vbCrLf
    strXML &= "      <tab id=""tab"" label=""Tab mit Bild"">" & vbCrLf
    strXML &= "        <group id=""grp"" label=""Gruppe mit Bild"">" & vbCrLf
    strXML &= "          <button id=""btnIcon"" size=""large"" label=""Icon"" getIimage=""getImage""" _
            & " onAction=""onAction""/>" & vbCrLf
    strXML &= "        </group>" & vbCrLf
    strXML &= "      </tab>" & vbCrLf
    strXML &= "    </tabs>" & vbCrLf
    strXML &= "  </ribbon>" & vbCrLf
    strXML &= "</customUI>" & vbCrLf
    Return strXML
End Fun ction 

Listing 1: Icon zu einer Schaltfläche hinzufügen per getImage

Diese prüft den Namen des aufrufenden Steuerelements und weist dem Rückgabewert das mit der Funktion Load-ResPicture ermittelte Bild zu. Zu beachten ist hier, dass Sie die Größe mit den letzten beiden Parametern angeben – hier 32×32 (für Icons in Schaltflächen mit dem Wert normal für den Parameter size verwenden Sie 16×16):

Public Function getImage(Control As IRibbonControl)  As IPictureDisp
     Dim objPicture As Object
     Select Case Control.Id
         Case "btnICON"
             Set objPicture = LoadResPicture("add.ico",  vbResBitmapFromIcon, 32, 32)
     End Select
     Return objPicture
End Function

Das Ergebnis sehen Sie in Bild 3.

Ribbon mit Icon

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

den kompletten Artikel im PDF-Format mit Beispieldatenbank

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar