colorbox

0

Jak zamienić kolor wybrany w colorbox na kod szesnastkowy koloru?

0

IntToHex()

0

nie chce mi sie za dlugo myslec wiec pwoiem ci jak to zrobic najprosciej:

pobierz RGB koloru tcolor
(getrvalue, itd)
potem kazda z wartosc RGB zamien na liczbe szesnastrowa i poskladaj w stringu.

wyprzedze pytanie o kodzik:

function dectoany(dec: LongInt; Podst: Byte):string;
{to na podstawie kodu z 4p}
const
   Cyfry: string = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var
   Wynik1, wynik2: string;
   W: LongInt;
   M,P: Byte;
begin
   wynik1:=''; wynik2:='';
   if (Podst>1) and (Podst<Length(Cyfry)) then
   begin
      W:=Abs(dec);
      repeat
         M:=W mod Podst;
         W:=W div Podst;
         wynik1:=wynik1 + Cyfry[M+1];
      until W=0;
      if dec<0 then wynik2:='-';
      for P:=Length(wynik1) downto 1 do
        wynik2:=wynik2+wynik1[P];
      dectoany:=wynik2;
   end;
end;


procedure TForm1.HTML1Click(Sender: TObject);
var s:string;
    c:tcolor;
    r,g,b:integer;
begin
if colordialog1.Execute then
begin
c:=colordialog1.color;
 begin
  R := GetRValue(c);
  G := GetGValue(c);
  B := GetBValue(c);
 end;
s:='#';
if r<10 then
s:=s+'0'+dectoany(r,16) else s:=s+dectoany(r,16);
if g<10 then
s:=s+'0'+dectoany(g,16) else s:=s+dectoany(g,16);
if b<10 then
s:=s+'0'+dectoany(b,16) else s:=s+dectoany(b,16);
{wynik to s}
end;
end;

nie ma to jak optymalizacja :)

lub prosciej, tzn krocej:

wynik:=inttohex(colortorgb(color));

1 użytkowników online, w tym zalogowanych: 0, gości: 1