



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.
Bem, sem uma ajuda, algumas conversões não são muito intuitivas. Felizmente este post vai simplificar muito a conversão.
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; |
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!
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; |
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.
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; |
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; |
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