怎样将一个Html的颜色值转换成Delphi的TColor颜色,并将该颜色应用于某Edit,答对马上给分!
例如:将#FF0000转换出来,各位大哥帮帮忙啦!

解决方案 »

  1.   

    {十六进值字符串转换成LongInt值}
    function HexStrToInt(S: String): LongInt;
    var
    I: Integer;
    begin
    Result := 0;
    for I := 1 to Length(S) do
    begin
    if S[I] in ['0'..'9'] then
    Result := Result * 16 + (Integer(S[I]) - 48)
    else if S[I] in ['A'..'F'] then
    Result := Result * 16 + (Ord(S[I]) - 55);
    end;
    end;
      

  2.   

    本来就是一个样子的,不过一个是字符串,一个是TColor其实就是整数。
    稍微不同的是Tcolor类型上来说一个枚举,而且还有点差异,所以要这样用
    StringToColor('HTML的色彩字符串');
      

  3.   

    哦!上面还忘了提醒一句,在HTML中Color前面的#号在Delphi中要变成$,当然如果是16进制表达数字的字符串的时候,通常HTNL中色彩都用这表达。
    前面那位老大,写函数比较辛苦吧!嗬嗬,你不知道吗?StrToInt这个函数在编译器中也是用到的,Delphi的源程序中的$XXXX的16进制的数字都是用这StrToInt函数转换的,呵呵。
      

  4.   

    哦!上面还忘了提醒一句,在HTML中Color前面的#号在Delphi中要变成$,当然如果是16进制表达数字的字符串的时候,通常HTNL中色彩都用这表达。
    前面那位老大,写函数比较辛苦吧!嗬嗬,你不知道吗?StrToInt这个函数在编译器中也是用到的,Delphi的源程序中的$XXXX的16进制的数字都是用这StrToInt函数转换的,呵呵。
      

  5.   

    各位大哥,能不能说详细一点,StringToColor('HTML的色彩字符串');转颜色要出错,比如说将00FF00转换出来,就会说他不是有效地值,请高手指点,答对真的就马上给分。
      

  6.   

    To:BlueTrees(蜗牛) :
    小弟有一点不明白,为什么用StringToColor转换出来的颜色和Html的颜色会有些不一样呢?例如:FFFF7B应为黄色,可转换出来确是青色,而有些颜色却能转换正确。还差一点就给分。请高手指点。
      

  7.   

    Web color:RGB
    delphi color: BGRweb          delphi
    ---------------------------
    #1D2736      #36271D
      

  8.   

    这个其实是由于读写数据的方向不一样,只要反过来读就可以了,
    例如:#FF 00 00 反过来是 $00 00 FF
      而:#12 34 56 反过来是 $56 34 12
      

  9.   

    同意楼上的,说的有道理,我没有深入地想。字符串的顺序是RGB,实际上存放的时候是R在低位,所以表达的时候要翻过来了