Como converter TColor para cor HTML?
Converter TColor para o código da cor em HTML.
Fala galera do Show Delphi, tudo beleza?
Quando trabalhamos com cores é notável que há vários padrões para representa-las. No Delphi não é diferente, sendo que há uma classe específica denominada TColor.
Porém muitas vezes precisaremos da representação em outros padrões, como por exemplo, HTML e utilizar em automatizações de cadastros ou mesmo em integrações.
Legal mas como é possível fazer a conversão?
Bem, sem uma ajuda, algumas conversões não são muito intuitivas. Felizmente este post vai simplificar muito a conversão.
Vamos ao Exemplo 1
1
2
3
4
5
6
7
8
9
10
11
| function ColorToHtml1(Color: TColor): string;
var
COL: LongInt;
begin
COL := ColorToRGB(Color);
{ first convert TColor to Integer to remove the higher bits }
{ erst TColor zu Integer, da die Unnötigen höheren Bit entfernt werden }
Result := '#' + IntToHex(COL and $FF, 2) +
IntToHex(COL shr 8 and $FF, 2) +
IntToHex(COL shr 16 and $FF, 2);
end; |
function ColorToHtml1(Color: TColor): string;
var
COL: LongInt;
begin
COL := ColorToRGB(Color);
{ first convert TColor to Integer to remove the higher bits }
{ erst TColor zu Integer, da die Unnötigen höheren Bit entfernt werden }
Result := '#' + IntToHex(COL and $FF, 2) +
IntToHex(COL shr 8 and $FF, 2) +
IntToHex(COL shr 16 and $FF, 2);
end;
Neste exemplo a informação em TColor é convertida primeiro para RGB e Depois para hexadecimal e concatenado para resultar no padrão hexadecimal do HTML.
Parece difícil? Bem tem mais uma sugestão!
Vamos ao código do Exemplo 2
1
2
3
4
5
| function ColorToHtml2(Clr: TColor): string;
begin
Result := IntToHex(clr, 6);
Result := '#' + Copy(Result, 5, 2) + Copy(Result, 3, 2) + Copy(Result, 1, 2);
end; |
function ColorToHtml2(Clr: TColor): string;
begin
Result := IntToHex(clr, 6);
Result := '#' + Copy(Result, 5, 2) + Copy(Result, 3, 2) + Copy(Result, 1, 2);
end;
Neste exemplo é convertido para hexadecimal e depois formatado no padrão HTML.
Gostou? Mas e agora se precisar fazer a conversão ao contrário, é possivel?
Claro!, Vamos a um exemplo simples que vai lhe ajudar muito.
Exemplo Inverso, convertendo com HTML para TColor do Delphi
1
2
3
4
| function HtmlToColor(Color: string): TColor;
begin
Result := StringToColor('$' + Copy(Color, 6, 2) + Copy(Color, 4, 2) + Copy(Color, 2, 2));
end; |
function HtmlToColor(Color: string): TColor;
begin
Result := StringToColor('$' + Copy(Color, 6, 2) + Copy(Color, 4, 2) + Copy(Color, 2, 2));
end;
Agora vamos aos testes…
1
2
3
4
5
6
7
8
9
10
| procedure TForm1.Button1Click(Sender: TObject);
var
ColorTemp: TColor;
ident: string;
begin
Edit1.Text := ColorToHtml($808080); // $808080 (clGray) ----> #808080
ColorTemp := HtmlToColor(Edit1.Text); // #808080 -----> $808080 (clGray)
ColorToIdent(StringToColor(IntToStr(ColorTemp)), ident); // ---> ident = clGray
Edit2.Text := ident; // clGray
end; |
procedure TForm1.Button1Click(Sender: TObject);
var
ColorTemp: TColor;
ident: string;
begin
Edit1.Text := ColorToHtml($808080); // $808080 (clGray) ----> #808080
ColorTemp := HtmlToColor(Edit1.Text); // #808080 -----> $808080 (clGray)
ColorToIdent(StringToColor(IntToStr(ColorTemp)), ident); // ---> ident = clGray
Edit2.Text := ident; // clGray
end;
Viu como ficou fácil!
Agora você já pode tranquilamente fazer conversões de TColor para HTML ou mesmo HTML para TColor.
Certo pessoal? Dúvidas e sugestões? Deixem nos comentários!
Um abraço abraço e até o próximo post. Valeu!
Fonte
Baseado no post de Simon Grossenbacher
Em http://www.swissdelphicenter.ch/en/showcode.php?id=250
-
Giovani Da Cruz
-
5.360 views
- 0 comentários
- 17 de janeiro de 2018
Está gostando do conteúdo? Considere pagar um cafezinho para nossa equipe!
Posts Relacionados - Continue Aprendendo