ich bin auf folgende Merkwürdigkeit gestoßen: In der Unit Graphics sind die Farbkonstanten definiert. Ebenso kann man im Colordialog den Hexwert einer Farbe sehen. Wenn ich die Werte vergleiche sind die vertauscht rgb - bgr.
Wenn ich in einer Procedure eine TColor Variable übergebe kommt mit clYellow und dem ColorDialog Gelb als Ergebnis heraus. Setze ich aber den angezeigten Farbnamen $FFFF00 ein kommt Aqua raus. Gibts da eine Erklärung dafür oder wurde da nur einfach was vertauscht?
Viele Grüße
Bernd
Code: Alles auswählen
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls,
LCLIntf;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
ColorDialog1: TColorDialog;
Panel1: TPanel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure SetaColor(aColor : TColor);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
begin
setaColor(clYellow);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
setaColor($FFFF00);
end;
procedure TForm1.Button3Click(Sender: TObject);
var col : TColor;
begin
if ColorDialog1.Execute then
col := ColorDialog1.Color;
setaColor(col);
end;
procedure TForm1.SetaColor(aColor: TColor);
var valR,valG,valB : integer;
begin
valR:=getRvalue(aColor);
valG:=getGvalue(aColor);
valB:=getBvalue(aColor);
Panel1.Color:= rgb(valR,valG,valB);
end;
end.