Case of i zmiana kolorów komponentu

0

Witam wszytskich!

Mam taki problem . Chce użyć case of do zmiany koloru panelu na formie

Dałem takie coś

begin
  case h of
  1 : Form1.Panel1.Color:=clRed;

  end;

Wszystko pięknie się kompiluje ale nie zmiania koloru. Teraz pytanie dlaczego?
Zmienną h wprowadzam przez inputbox. Zadeklarowałem ją jako Integer. Co możę być nie tak?
Prosze o pomoc
Pozdrawiam</delphi>

0

A od czego jest debugger ? Ustaw sobie breakpointa na dowolnej lini w case of i zobacz czy kod w ogóle sie wykonuje. Może h nie ma odpowiednika w ustawionych warunkach ?

0

Wykonuje się ale nie zmienia koloru

0

NIE:):):)
problem jest w czym innym zwyczajnie z tego Twojego InputBoxa pobierasz STRINGA
To Twoje 1 nie przedstawia wartosci liczbowej - jest znakiem.
Musisz zrzutowac teraz to za pomoca StrToInt .
Proponuje tak :
1.Dodaj na Forme 2 Buttony
2.Dodaj na Forme Panel
3.Dodaj sobie zmienna tak jak miales h typu integer i bedzie dzialac.

w OnClick dla Button1 daj tak :

procedure TForm1.Button1Click(Sender: TObject);
begin
h:=StrToInt(InputBox('Input Box', 'Prompt', 'Default string'));
end;

w OnClick Button2 daj:

procedure TForm1.Button2Click(Sender: TObject);
begin
  case h of
  1 : Form1.Panel1.Color:=clRed;
  end;
end;
0

refuse: Wydaje mi się, że gdyby było tak, jak mówisz kompilator zwróciłby

[Error] Incompatible types: 'Integer' and 'String'

ale rzeczywiście jedynym problemem, jaki się tu nasuwa jest niewłaściwe przypisanie wartości do zmiennej h.
Słoniu, nie lepiej zastosować komponent ColorBox do zmiany kolorów?

0

Może używasz stylów XP - wtedy panelom nie da się prosto zmieniać koloru. A jak nie to sprobuj sprawdzić czy niezmienianie koloru to wina case..of - wstaw zmiane koloru pod jakis button i zobacz czy działa.

0

W tym probrlem ze nawsz nauczyciel wymyślił sobie co musi zawierać kod i za case of i zmiane koloru daje ocene wyżej

0

To pytanie raczej nie nadaje się na forum - sprawdź czy ten kod się wykonuje, sprawdź jaka jest wartość zmiennej h, sprawdź czy możesz ustawić kolor dla panelu od tak.. bez żadnych if`ów ...

0

No wlasnie ja az sam nie wierzylem ze moze byc cos zle w takim programie...
Zrobilem z ciekawosci cos takiego dokladnie tak jak napisalem wyzej i dzialalo
Jesli wiec autor skorzysta z tego sposobu to powinno dzialac.
A palete barw i case of tez da sie polaczyc i bedzie lepiej tak jak ktos wyzej napisal.
Poza tym przeciez Ci napisalem dokladnie jak to zrobic - masz tam case of i masz tego swojego InputBox'a, wiec tak jak chciales ja nie rozumiem co jeszcze jest nie tak ?

0
procedure TForm1.Zmiekolor1Click(Sender: TObject);
begin
repeat
  p:=true;
    try
       h:=StrToInt(inputbox('podaj kolor czcionki', 'Podaj liczbe od 1 do 5 ', ' '));
       if h>5 then showmessage ('Liczba ma by z zakresu od 1 do 5!!!')  ;
       if h<0 then showmessage ('Liczba miała by z zakreu od 1 do 5!!!') ;
      except
     on EconvertError do
    begin
     p:=false;
     showmessage ('To nie jest liczba!!!') ;
    end;
   end;
 until p=true;
 end;
  begin
  case h of
  1 : Form1.Panel1.Color:=clRed;
  end;

Dałem tak jak wyżej i dalej nic. A drugiego buttona nie moge dać

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