Der Anwendungsbereich


Der Anwendungsbereich (VCL = "Clientarea") ist der Teil des Fensters, den Sie für Buttons und Listen, kurz gesagt: für die von Ihnen gewünschten Elemente benutzen können. Seine Hintergrundfarbe legen Sie im Fensterklassen-Record in dieser Zeile fest:

wc: TWndClassEx = (
  ...
  hbrBackground   : COLOR_APPWORKSPACE;
  ...
);

In dem Fall wird mit COLOR_APPWORKSPACE die Standardfarbe Ihres Systems für 3D-Objekte einstellt. Weitere Konstanten finden Sie in der Hilfe zu WNDCLASS oder WNDCLASSEX. Reichen Ihnen die vorgegebenen Farben nicht, dann können Sie eigene erstellen. Ergänzen Sie dazu das Beispielprogramm im Hauptteil um die folgende Zeile:

begin
  wc.hInstance  := hInstance;
  ...
// diese Zeile ergänzen -> wc.hbrBackground := CreateSolidBrush(RGB(0,150,255));
... end.

Auf die gleiche Weise können Sie nun mit Hilfe der RGB-Angabe jede beliebige Farben mischen. Oder weisen Sie doch mal "wc.hbrBackground" den Wert Null zu ... »... and see what happens ...« ;o)


Hinweis für Windows XP

Wie Ihnen das Bild links zeigt, wird unter Windows XP der Fensterhintergrund evtl. zu dunkel dargestellt. Das liegt an der Verwendung von COLOR_APPWORKSPACE (wie eingangs gezeigt) bei aktiven Themes. Als Abhilfe sollten Sie mit der Funktion "GetSysColorBrush" die Farbe für 3D-Elemente laden und benutzen:

wc.hbrBackground := GetSysColorBrush(COLOR_3DFACE);

Wie Sie im Bild rechts sehen können, wird dann der Hintergrund korrekt dargestellt:

 

Sie können diesen Befehl auch verwenden, wenn Sie keine Themes aktiviert haben bzw. ein anderes Betriebssystem als Windows XP benutzen (9x, ME, NT und 2000). Eine Übersicht über die möglichen Farbwerte finden Sie unter dem Befehl "GetSysColor" im PSDK.
Der Unterschied zwischen beiden Befehlen ist, dass "GetSysColorBrush" die gewünschte Farbe gleich als so genannten Brush zurückliefert, der sofort mit der Membervariablen hbrBackground (s. TWndClassEx-Record) benutzt werden kann. Dagegen müssten Sie das Ergebnis von "GetSysColor" (ein dword-Wert mit den RGB-Informationen der Farbe) erst bspw. mit "CreateSolidBrush" umwandeln, um ihn für den Fensterhintergrund nutzen zu können.