Как преобразовать шестнадцатиричный цвет HTML в TColor?

Previous  Top  Next

    
 

 

допустим, мы имеем переменную:

 

const BGCOLOR = '#003366';

 

и нам необходимо связать её с фоновым цветом memo либо любого другого TColor.

Мы можем это сделать простым вызовом функции и использовать возвращённое значение:

 

Code:

procedure TForm1.Button1Click(Sender: TObject);

begin

Memo.Color := ConvertHtmlHexToTColor(BGCOLOR);

end;

 

 

 

Ниже приведён исходник этой функции, а так же код функции CheckHexForHash.

Code:

unit colours;

 

interface

uses Windows, Sysutils, Graphics;

 

function ConvertHtmlHexToTColor(Color: string): TColor;

function CheckHexForHash(col: string): string;

 

implementation

 

////////////////////////////////////////////////////////////////////////////////

// ConvertHtmlHexToTColor

//

 

function ConvertHtmlHexToTColor(Color: string): TColor;

var

rColor: TColor;

begin

Color := CheckHexForHash(Color);

 

if (length(color) >= 6) then

   begin

{незабудьте, что TColor это bgr, а не rgb: поэтому необходимо изменить порядок}

     color := '$00' + copy(color, 5, 2) + copy(color, 3, 2) + copy(color, 1, 2);

     rColor := StrToInt(color);

   end;

 

result := rColor;

end;

 

////////////////////////////////////////////////////////////////////////////////

// CheckHexForHash:

// Просто проверяет первый сивол строки на наличие '#' и удаляет его, если он найден

 

function CheckHexForHash(col: string): string;

begin

if col[1] = '#' then

   col := StringReplace(col, '#', '', [rfReplaceAll]);

result := col;

end;

end.

 

 

©Drkb::03533

Взято из http://forum.sources.ru