2010. október 15., péntek

How to change the system colours


Problem/Question/Abstract:

How to change the system colours

Answer:

Solve 1:

procedure TMainForm.Button4Click(Sender: TObject);
var
  nColorIndex: array[1..2] of integer;
  nColorValue: array[1..2] of longint;
begin
  nColorIndex[1] := COLOR_ACTIVECAPTION;
  nColorIndex[2] := COLOR_BTNFACE;
  nColorValue[1] := clBlue; {define the color you want}
  nColorValue[2] := clRed; {in that case is the caption bar and button color}
  SetSysColors(2, nColorIndex, nColorValue);
  PostMessage(HWND_BROADCAST, WM_SYSCOLORCHANGE, 0, 0);
end;

You could have a look into the "Win32 API reference", under the "SetSysColors" section. There, if you directly go to "GetSysColors" you'll get alist of the places where you can change the colors. (e.g taskbar, borders, etc). In your case use COLOR_BACKGROUND and COLOR_DESKTOP.


Solve 2:

procedure TForm1.Button1Click(Sender: TObject);
const
  ColCount = 2;
  Elements: array[0..ColCount - 1] of Integer = (COLOR_WINDOW, COLOR_WINDOWTEXT);
  Colors: array[0..ColCount - 1] of TColorRef = (clBlue, clYellow);
begin
  if not SetSysColors(ColCount, Elements[0], Colors[0]) then
    RaiseLastWin32Error;
end;

Nincsenek megjegyzések:

Megjegyzés küldése