Tak jak w temacie, jak obsłużyć ColorGrid. Nie znalazłem nic w pomocy na ten temat.
Dokładniej, chce przypisać do zmiennych BgColor i FgColor kolory wybrane z ColorGrid. Chcę to wykorzystać potem do Painta, którego robię, do rysowania, tła itd.
Z góry dzięki za pomoc [cya]
a nie lepiej uzyc TColorDialog ??
wtedy wystarczy tylko np. From1.color := ColorDialog1.Color; lub
jesli chcesz na zamienic kolor RGB na HEX (czyli jak w HTML) to :
uses
Windows, SysUtils, Graphic;
function ColorToWebHex(color: TColor): string;
var RGB: LongInt;
Red, Green, Blue: Integer;
begin
RGB := ColorToRGB(color);
Red := GetRValue(RGB);
Green := GetGValue(RGB);
Blue := GetBValue(RGB);
Result := IntToHex(Red,2) + IntToHex(Green,2) + IntToHex(Blue,2);
end;
Ja tam oparłbym to o speedbuttony... poza tym w kolorgrid jest pewne ograniczenie.. wymiary togo grida=16 kolorów. aby to inaczej zrobic, musiałbyś pisać to od nowa...
TColorDialog mam już użyty ale chciałbym spróbować ColorGrida dla lepszego efektu wizualnego. Wiem, że ma on mało barw w swojej palecie ale mimo to chciałbym go zrozumieć. Proszę was o pomoc, zagadnienie opisane jest w pierwszym poście.
Dzięki za wszystkie dotychczasowe posty [cya]
no jak sobie chcesz ale wciaz pozostaje przy tym ze lepiej jest uzytc colordialog. Przy colorgrid masz (nie wiem jak to nazwac) dwie powiedzmy "wlasciowsci" ktore oznaczaja jakis kolor: background i foreground. I np:
kol - TColorGrid
Form1.color := Kol.BackgroundColor;
lub
Form1.color := Kol.ForegroundColor;
Zgadzam się z Tobą, że użycie ColorDialog jest praktyczniejsze i może nawet sensowniejsze. Chciałem jednak uzyskać podobny efekt jak w paincie by kolory były wyświetlone w pasku na dole okna. Dzięki za odpowiedź [browar]
Powyższe podpowiedzi były pomocne ale nadal nie wiem jak przypisać kolor z ColorGrid do zmiennej np tlo. Jak to zrobić ?
przeciez mr.hex ci napisal, czego jeszcze mozna nie rozumiec, ale jak chcesz, masz kodzik:
dodaj: panel 1 i panel2 oraz colorgrid1
teraz w zdarzeniu onchange wpisujesz kodzik:
panel1.Color:=colorgrid1.ForegroundColor;
panel2.Color:=colorgrid1.BackgroundColor;
zamiast panel*.color mozesz wpisac zmienna tcolor, np:
var kolor:tcolor;
begin
kolor:=colorgrid1.foregroundcolor;
form1.canvas.pen.color:=kolor;
end;
cala filozofia, a jak jeszcze nie pojmujesz to idz moze "lepiej pobaw sie klockami", albo zobacz do pomocy delphi (tak, takie cos istnieje, i poszukaj informacji na temat tcolor i jak to obslugiwac)
ps. foreground i backgroundcolor w colorgridzie to sa kolory, normalnie je przypisujesz
Dzięki!
Miałem tak zrobione ale wyskakiwał błąd i nie byłem pewien. Doszedłem już jednak. Sorki za problem :-(
Zrobiłem sobie taką procedurkę i zawsze w edit1 pojawia się C0C0C0 - dlaczego ??
procedure TForm1.SpeedButton2Click(Sender: TObject);
var
result: string;
RGB: LongInt;
Red, Green, Blue: Integer;
begin
if colordialog1.Execute then
begin
RGB := ColorToRGB(color);
Red := GetRValue(RGB);
Green := GetGValue(RGB);
Blue := GetBValue(RGB);
Result := IntToHex(Red,2) + IntToHex(Green,2) + IntToHex(Blue,2);
end;
edit1.Text:=result;
end;