我需要有关如何将HTML HEX颜色值转换为RGB然后将RGB值作为字符串输出到标签/编辑的任何解决方案。因此,例如,如果输入是#FFFFFF,则输出将为255,255,255。我怎么能这样做?
答案 0 :(得分:1)
问题(问题有所缩短)
我需要HEX颜色值来标记/编辑-color。例如#FFFFFF输出 将是255,255,255。
如果我正确理解了这个问题,你想为TEdit.Color指定一个html十六进制值,如#662233
Delphi Edit1.Color
或label1.Color
无法直接处理255,255,255。
所以你需要一个 $ Hex字符串,比如$ 00662233。
这里有一个简短的功能如何。
必须验证Edit1的Input值:
而不是TLabel我使用TPanel
如果您使用VCL主题
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Panel1: TPanel;
Conv: TButton;
procedure ConvClick(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.ConvClick(Sender: TObject);
const
zeroV = '00000000';
begin
Edit1.Text := StringReplace(Edit1.Text,'#','',[rfReplaceAll]);
Edit2.Text := '$'+Copy(zeroV,1,8-Length(Edit1.Text))+Edit1.Text;
Panel1.Color := StrToInt(Edit2.Text);
end;
<强>更新强>
如果你想简单地将hex转换为rgb,请使用它。
procedure TForm1.RGBBtClick(Sender: TObject);
begin
Edit1.Text := StringReplace(Edit1.Text,'#','',[]);
(* The HTML order *)
Edit2.Text := IntToStr(StrToInt('$'+Copy(Edit1.Text,1,2)))+','+
IntToStr(StrToInt('$'+Copy(Edit1.Text,3,2)))+','+
IntToStr(StrToInt('$'+Copy(Edit1.Text,5,2)));
(* or Reversed the Delphi order
Edit2.Text := IntToStr(StrToInt('$'+Copy(Edit1.Text,5,2)))+','+
IntToStr(StrToInt('$'+Copy(Edit1.Text,3,2)))+','+
IntToStr(StrToInt('$'+Copy(Edit1.Text,1,2)));
*)
end;
您将获得德尔福订单 #35358B
<强> 139,53,53 强>
从颜色选择器中查看图像 您将在RGB字段中看到相同的值。
或HTML命令是(在35358B字段下面)
的#8B3535 强>
所以不要混淆这个!
如果你想在Delphi中使用html颜色代码来获得组件颜色,你必须反过来使用Html颜色代码。