15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту




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

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

const BGCOLOR = '#003366';

и нам необходимо связать её с фоновым цветом memo либо любого другого TColor.
Мы можем это сделать простым вызовом функции и использовать возвращённое значение:

procedure TForm1.Button1Click(Sender: TObject);
begin
    Memo.Color := ConvertHtmlHexToTColor(BGCOLOR);
end;

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

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
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.