var Kolor : TColor=RGB(10,10,10); - nie działa :/

0

Właśnie (znaczy sie jakies pare godzin temu :-) , przez ten cały czas szukalem, kombinowałem i nic :-( ) próbowałem zadeklarować zmienną globalną TColor z początkową wartością w RGB, czyli:

var Kolor : TColor=RGB(10,10,10);

i mi wyskakuje "Constant expression expected"- co to znaczy to nie mam pojęcia. a o dziwo jeśli zamiast 'RGB(10,10,10)' wpisze jakies same liczby to dziala :|, wiec nie kumam. a i jeszcze dodam ze jak w jakiejs procedurze probuje dać: Kolor:=RGB(10,10,10); to dziala!, no to ja już absolutnie nie wiem oco chodzi... czy wie ktoś może co tu nie halo?

pozdr.

0

i mi wyskakuje "Constant expression expected"- co to znaczy to nie mam pojęcia.

Znaczy to, że kompilator oczekiwał jakiejś stałej wartości...

Jak wiadomo RGB to jest funkcja. Kompilator nie ma możliwości wykonania jakiejkolwiek funkcji podczas deklarowania zemiennych, nie :)

Po prostu chodzi o to, żebyś wpisał jakąś wartość heksadecymalnę, wg. mnie.

Np:

var
kolor: TColor = $ffff;

Musisz znać po prostu wartość szesnastkową koloru.

0

hmm no to szkoda.. ale spokojnie, przeżyję jakoś :-P

dzięki za wytłumaczenie Juhas

0
{windows.pas}
function RGB(r, g, b: Byte): COLORREF;
begin
  Result := (r or (g shl 8) or (b shl 16));
end;

Tak wygląda ta funkcja. nie mozna wstawić funkcji do deklaracji stałej, ale nic nie przeszkadza, aby wstawić wyrażenie arytmetyczne, to kompilator przyjmie:

const color1= (10 or (10 shl 8) or (10 shl 16));
const color2:cardinal=(10 or (10 shl 8) or (10 shl 16));
const color3:cardinal=cardinal(10 or (10 shl 8) or (10 shl 16));
0

sam mozesz napsiac taki program.
wstawiasz colordialog i buttona
w buttonclick:

if colordialog1.execute then showmessage(colortostring(colordialog1.color);

nie dziala na 16 podstawowych kolorach, ale z tym to chyba sobie dasz rade :)

0

Kod szesnastkowy łatwo utworzyc, gdy masz liczby RGB. Musisz tylko pamiętać, by użyć zapisu szesnastkowego, tzn 10, 10 10 = 0A, 0A 0A.
Dla delphi numeryczny zapis koloru ma postać $00BBGGRR (odwrotnie niż w HTML!), więc Twoja stała wynosci $000A0A0A :)

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