Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 1/2003.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Farben in Access

André Minhorst, Duisburg

Wenn Sie noch mit nicht unter Windows XP mit Access arbeiten, sind Sie mit das altbekannte Grau in Grau der Office-Anwendungen gewohnt. Unter Umständen möchte der eine oder anderen Entwickler oder Anwender mit ein wenig mehr Farbe beglückt werden - ob dies der besseren Übersichtlichkeit der Anwendungsoberfläche dient oder einfach eine Flucht vor der gewohnten Farblosigkeit ist, entscheiden Sie selbst. Im vorliegenden Beitrag erfahren Sie erstmal einiges zum Thema Farben und Access.

Farbcodes

Im Gegensatz zur realen Welt gibt es bei Computern selten Möglichkeiten, Farben einfach über deren Namen festzulegen - und wenn doch, dann verbirgt sich dahinter meist der entsprechende Farbcode.

Farben bestehen aus unterschiedlichen Anteilen von Rot, Grün und Blau. Dabei legt jeweils ein Wert fest, wie hoch der Anteil jeder Farbe ist. Dieser Wert liegt zwischen 0 und 255. Die Zahl 255 als höchster Wert stammt von dem Hexadezimalwert FF.

Abb. 1: Auswahl eines Farbwertes

Durch die Möglichkeit, jeden Farbanteil in 256 Schritten festzulegen, ergeben sich 2563 verschiedene Kombinationen - also insgesamt 16.777.216 Möglichkeiten.

Unterschiedliche Anwendungen bieten verschiedene Formate zur Angabe des gewünschten Farbcodes an. HTML z. B. akzeptiert den Wert in hexadezimaler Form (#FFFFFF), während Sie den Wert in Access als Dezimalzahl angeben müssen - wie beispielsweise für die Hintergrundfarbe in den Eigenschaften eines Formulars (s. Abb. 1).

Der hier angegebene Farbwert steht für die Farbe Weiß - der hexadezimale Wert lautet #FFFFFF. Der Farbe Schwarz entspricht der Wert 0 (dezimal) bzw. #000000 (hexadezimal).

Verwenden von Systemfarben

Mit der Kenntnis des Zahlenbereichs zur Definition einer Farbe (0 bis 16.777.215) und ein wenig Aufmerksamkeit fällt Ihnen schnell Folgendes auf: Wie kann es negative Zahlen als Werte für Farbeigenschaften geben? Dies ist nämlich z. B. beim Hintergrund von Formularen der Fall: Der voreingestellte Wert der Eigenschaft Hintergrundfarbe lautet -2.147.483.633. Dieser Wert ist erstens wesentlich größer als der genannte Bereich und zweitens negativ.

Tatsächlich handelt es sich bei diesen Werten nicht um Farbcodes, sondern um Indizes, die stellvertretend für die Windows-Systemfarben stehen. Die Systemfarben von Windows können Sie im Register Darstellung des Dialogs Eigenschaften von Anzeige einstellen (s. Abb. 2). Den Dialog öffnen Sie über den Eintrag Einstellungen/Systemsteuerung/Anzeige des Startmenüs.

Die Verwendung dieser Konstanten ist sicher eine gute Idee, wenn Sie dem Anwender die Möglichkeit geben möchten, seine Anwendungsfarben selbst über die Systemsteuerung auszuwählen.

Farben auswählen

Die Auswahl einer Farbe erfolgt komfortabel über einen von Access zur Verfügung gestellten Dialog (s. Abb. 3). Den Dialog öffnen Sie vom Eigenschaftsfenster aus, indem Sie zunächst in das Feld mit der gewünschten Farbeigenschaft klicken und dann auf die nun erscheinende Schaltfläche mit den drei Punkten (...) klicken.

Mit dem Dialog können Sie eine von 48 Basisfarben auswählen oder eine benutzerdefinierte Farbe festlegen. Zum Festlegen einer benutzerdefinierten Farbe klicken Sie auf die entsprechende Schaltfläche und erweitern somit den Dialog wie in Abb. 3.

Hier finden Sie die drei bereits beschriebenen Komponenten einer Farbe wieder: drei Felder zur Eingabe der Rot-, Grün- und Blau-Anteile der Farbe.

Abb. 2: Einstellen der Systemfarben

Farben berechnen

Zur Ermittlung von Farbwerten ist oft das Konvertieren von dezimalen Werten in hexadezimale und umgekehrt erforderlich.

Umrechnen von dezimal zu
hexadezimal

Abb. 3: Hinzufügen benutzerdefinierter Farben

Für das Umrechnen von dezimalen Werten in hexadezimale verwenden Sie einfach die Funktion Hex() mit dem dezimalen Wert als Funktionsparameter. Die folgende Anweisung ergibt - im Testfenster (Aufruf über Strg + G) ausgeführt - beispielsweise den Wert FF zurück:

Debug.Print Hex(255)

Umrechnen von
hexadezimal zu
dezimal

Das Umrechnen in umgekehrter Richtung ist noch einfacher. Sie müssen einfach nur die windowsspezifische Schreibweise für Hexadezimalzahlen verwenden, indem Sie der eigentlichen Zahl den Ausdruck &h voranstellen. Der folgende Ausdruck gibt beispielsweise das Ergebnis 255 zurück:

Debug.Print &hFF

Berechnen des Farbcodes aus den Farbanteilen

Wenn Sie zwar die drei Farbanteile kennen, aber keine Lust haben, den resultierenden Wert zu berechnen, verwenden Sie die Funktion RGB. Als Übergabewerte dienen die drei Farbanteile wie z. B. in folgender Anweisung:

Debug.Print RGB(255,255,255)

Als Ergebnis der Anweisung erhalten Sie den Wert 16.777.215. Natürlich können Sie der Funktion auch hexadezimale Werte übergeben, wie folgendes Beispiel zeigt:

Debug.Print RGB(&hFF, &hFF, &hFF)

Als Ergebnis erhalten Sie den gleichen Wert wie mit dem vorherigen Aufruf.

Farbauswahl per Code aufrufen

Die Benutzer Ihrer Anwendungen sollen in der Regel keinen Zugriff auf den Entwurf von Formularen und Berichten haben. Daher fehlt für den Anwender in der Regel auch die Möglichkeit, irgendwelche Farben nachträglich einzustellen.

Abb. 4: Formular zur Anzeige von Farbinformationen

Wenn Sie dem Anwender trotzdem die Gelegenheit dazu bieten möchten, können Sie ihm dazu den Dialog zur Auswahl von Farben über eine eigene Schaltfläche in dem jeweiligen Formular zur Verfügung stellen.

In den folgenden Abschnitten erfahren Sie, wie Sie den Dialog Farbe mit einer Schaltfläche aufrufen und ein Steuerelement in der ausgewählten Farbe anzeigen.

Beispielformular

Um die Vorgehensweise nachvollziehen zu können, erstellen Sie zunächst ein Beispielformular. Das Formular enthält eine Schaltfläche zum Aufrufen des Farbauswahl-Dialogs, ein Rechteck-Steuerelement zur Anzeige der ausgewählten Farbe sowie einige Textfelder (s. Abb. 4).

Die Textfelder dienen der Anzeige des Farbcodes der ausgewählten Farbe in dezimaler und in hexadezimaler Form sowie der einzelnen Anteile.

Funktion zur Auswahl der Farbe

Zur Auswahl der Farbe benötigen Sie eine Funktion, die Sie am Besten in einem eigenen Modul speichern (s. Quellcode 1). Die Funktion verwendet eine Access-interne API-Funktion zur Anzeige des Dialogs (aus: Access 2002 Desktop Developer's Handbook, Sybex-Verlag 2001). Diese Funktion wird in der ersten Zeile deklariert.

Die nachfolgende Funktion FarbeAuswaehlen erwartet zwei Parameter: das Handle des aufrufenden Fensters sowie einen Farbcode. Die Übergabe des Farbcodes ist optional.

Der Parameter dient in jedem Fall zur Rückgabe des Farbcodes der ausgewählten Farbe, kann aber auch verwendet werden, um den aktuell verwendeten Farbcode an den Dialog zu übergeben, wo die entsprechende Farbe dann vorausgewählt wird.

Für die Ereignisprozedur der Schaltfläche cmdFarbeAuswaehlen des Formulars hinterlegen Sie die Prozedur aus Quellcode 2.

Die Prozedur ruft zunächst die Funktion FarbeAuswaehlen auf und übergibt das Fenster-Handle, damit der Dialog weiß, zu welchem Fenster der Focus nach dem Schließen zurückgegeben werden soll. Als zweiter Parameter wird die aktuelle Hintergrundfarbe des Rechteck-Steuerelements recFarbe übergeben.

Nach der Auswahl der gewünschten Farbe verarbeitet die Ereignisprozedur den Farbcode auf unterschiedliche Arten, um die einzelnen Farbanteile in dezimaler und hexadezimaler Schreibweise anzuzeigen - und natürlich, um das Rechteck mit der ausgewählten Farbe zu füllen.

Declare Sub accChooseColor Lib "msaccess.exe" Alias _
    "#53" (ByVal Hwnd As Long, lngRGB As Long)

Public Function FarbeAuswaehlen(ByVal Hwnd As Long, _
    lngRGB As Long) As Long

    accChooseColor Hwnd, lngRGB

    FarbeAuswaehlen = lngRGB

End Function

Quellcode 1

Private Sub cmdFarbeAuswaehlen_Click()

    Dim Rot, Gruen, Blau As Long

    Dim Farbcode As Long

    Farbcode = FarbeAuswaehlen(Me.Hwnd, _
        Me![recFarbe].BackColor)

    Me.txtFarbcode = Farbcode

    Me![recFarbe].BackColor = Farbcode

    Rot = Farbcode Mod 256

    Farbcode = Farbcode \ 256

    Gruen = Farbcode Mod 256

    Farbcode = Farbcode \ 256

    Blau = Farbcode Mod 256

    Me.txtRot = Rot

    Me.txtRotHex = Hex(Rot)

    Me.txtGruen = Gruen

    Me.txtGruenHex = Hex(Gruen)

    Me.txtBlau = Blau

    Me.txtBlauHex = Hex(Blau)

    Me.txtFarbcodeHex = "#" _
        & Format(Me.txtRotHex, "00") _
        & Format(Me.txtGruenHex, "00") _
        & Format(Me.txtBlauHex, "00")

End Sub

Quellcode 2

Wohin mit der
Farbe?

Sie können die Farbwerte leicht in einer Tabelle speichern, indem Sie das Feld zur Anzeige des Farbcodes an ein Feld der Datenherkunft der gewünschten Tabelle binden.

Auf diese Weise können Sie verschiedenen Datensätzen unterschiedliche Farben zuteilen. Ob Sie die Farbe anschließend für die Färbung von Steuerelementen, Hintergründen oder sonstigem verwenden, bleibt Ihnen überlassen.

Sie können die Farbgebung allerdings nur in der Einzelblattansicht von Formularen verwenden - in der Endlos- und Datenblattansicht greift Access auf die dem ersten Datensatz zugeordnete Farbe zurück.

Im Beitrag Daten visualisieren mit dem Webbrowser-Control der vorliegenden Ausgabe von Access im Unternehmen finden Sie ein weiteres Beispiel für die Anwendung von Farbcodes und deren komfortable Auswahl über den entsprechenden Dialog.

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

© 2003-2015 André Minhorst Alle Rechte vorbehalten.