ColorGrid - jak obsłu?żyć ?

0

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]

0

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;

0

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...

0

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]

0

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;

0

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]

0

Powyższe podpowiedzi były pomocne ale nadal nie wiem jak przypisać kolor z ColorGrid do zmiennej np tlo. Jak to zrobić ?

0

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

0

Dzięki!
Miałem tak zrobione ale wyskakiwał błąd i nie byłem pewien. Doszedłem już jednak. Sorki za problem :-(

0

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;

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