[Lazarus] Colorconversion in htmlreport
Bart
bartjunk64 at gmail.com
Sat Mar 11 16:52:42 CET 2017
On 3/11/17, frans via Lazarus <lazarus at lists.lazarus-ide.org> wrote:
> I want to use the color #D8FFF4.
> But the function Color2HTML translate that code to $00D8FFF4#
That makes no sense to me.
#D8FFF4 looks like HTML color coding, so calling ColorToHTML on that
makes no sense (or the name of that makes no sense).
Here's a ColorToHtml function from the SynExportHtml unit that works
correctly (at least in my limited tests):
function ColorToHTML(AColor: TColor): string;
var
RGBColor: TColorRef;
RGBValue: byte;
const
Digits: array[0..15] of char = '0123456789ABCDEF';
begin
Result := '';
case AColor of
clRed: Result := 'red';
clGreen: Result := 'green';
clBlue: Result := 'blue';
clPurple: Result := 'purple';
clYellow: Result := 'yellow';
clBlack: Result := 'black';
clWhite: Result := 'white';
clGray: Result := 'gray';
clMaroon: Result := 'maroon';
clFuchsia: Result := 'fuchsia';
clLime: Result := 'lime';
clNavy: Result := 'navy';
clAqua: Result := 'aqua';
clTeal: Result := 'teal';
clSilver: Result := 'silver';
end;
if (Result <> '') then
Exit;
RGBColor := ColorToRGB(AColor);
Result := '#000000';
{****************}
RGBValue := GetRValue(RGBColor);
if RGBValue > 0 then begin
Result[2] := Digits[RGBValue shr 4];
Result[3] := Digits[RGBValue and 15];
end;
{****************}
RGBValue := GetGValue(RGBColor);
if RGBValue > 0 then begin
Result[4] := Digits[RGBValue shr 4];
Result[5] := Digits[RGBValue and 15];
end;
{****************}
RGBValue := GetBValue(RGBColor);
if RGBValue > 0 then begin
Result[6] := Digits[RGBValue shr 4];
Result[7] := Digits[RGBValue and 15];
end;
end;
Note that the represetation of TColor and HTML color (if you both
write them out as hex) is not in the same order.
Bart
More information about the Lazarus
mailing list