Как преобразовать шестнадцатиричный цвет HTML в TColor?
Falk0ner, вс, 06/07/2008 - 15:35.
допустим, мы имеем переменную:
const BGCOLOR = '#003366';
и нам необходимо связать её с фоновым цветом memo либо любого другого TColor.
Мы можем это сделать простым вызовом функции и использовать возвращённое значение:
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo.Color := ConvertHtmlHexToTColor(BGCOLOR);
end;
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.
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.
Взято из http://forum.sources.ru
Отправить комментарий