Jak zamienić kolor wybrany w colorbox na kod szesnastkowy koloru?
0
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));