RadioButton i zmiana widoczności komponentów – błąd kompilacji

0

Serwus
Mam problem z jednym fragmentem kodu i nie mam pojęcia jak go przeskoczyć. Chodzi o ten fragment:

begin
q:=RadioGroup1.ItemIndex;
  case (q) of
    0:Edit1.Visible:=True;
    1:Edit1.Visible:=True;
    2:Label1.Visible:=True;
    3:Label2.Visible:=True;

Zapisany w ten sposób kod działa jednak chodzi o to że każdy RadioButton odpowiada za pojawienie się jednego elementu a moim celem jest taki zapis by po zaznaczeniu jednego RadioButtona pojawiały się wszystkie 4 elementy. Po takim zapisaniu kodu:

begin
q:=RadioGroup1.ItemIndex;
  case (q) of
    0:Edit1.Visible:=True;
    Edit1.Visible:=True;
    Label1.Visible:=True;
    Label2.Visible:=True;

Wywala błąd Constant expression excepted. Działam w Delphi 7. Z góry dzięki wielkie za pomoc.

3
Karol Chomiak napisał(a):

Wywala błąd Constant expression excepted. Działam w Delphi 7. Z góry dzięki wielkie za pomoc.

Musisz zgrupować instrukcje:

case RadioGroup1.ItemIndex of
  0: begin
       Edit1.Visible := True;
       Label1.Visible := True;
       Label2.Visible := True;
     end;
  1: {..}

Do pokazania komponentu w oknie służy metoda Show, a do ukrycia metoda Hide – mniej pisania.

Z właściwości Visible korzysta się wtedy, gdy stan widoczności określa np. rezultat wywołania funkcji (zwracającej wartość logiczną) lub wynik operacji arytmetycznych, co pozwala uniknąć niepotrzebnych warunków. Przykład:

Edit1.Visible := RadioGroup1.ItemIndex = 0;

Mimo wszystko możesz używać czego chcesz.

Działam w Delphi 7.

Z jakiego powodu?

0

Z jakiego powodu?

Z takiego, że na takim muszę programować na studiach. Innego nie uznają i na takim tylko się uczyłem programować.
I wielkie dzięki za pomoc. Już działa ^^
Co do metody Show - Hide to raczej nie będzie się sprawdzać bo jak rozumiem na to potrzebna by był osobny Button czy RadioButton który by ukrywał RadioGroup a nie o to mi chodzi. Nie wiem czy wyłożyć całą zasadę działania mojego programu (jeżeli by Cię to interesowało) ale jak chcesz to nie ma sprawy.

0
Karol Chomiak napisał(a):

Co do metody Show - Hide to raczej nie będzie się sprawdzać bo jak rozumiem na to potrzebna by był osobny Button czy RadioButton który by ukrywał RadioGroup a nie o to mi chodzi.

Nie o to chodzi. Jeśli dany kod zawsze pokazuje wybrane komponenty lub zawsze je ukrywa, to może korzystać z metod Show i Hide. Twój kod z pierwszego posta zawsze pokazuje wybrane komponenty, w zależności od indeksu zaznaczonego przycisku. Nic dodatkowo nie sprawdza, wartości logicznej określającej widoczność nie oblicza, więc można ten kod wymienić na poniższy:

case RadioGroup1.ItemIndex of
  0: begin
       Edit1.Show();
       Label1.Show();
       Label2.Show();
     end;
  1: {..}

Nie wiem czy wyłożyć całą zasadę działania mojego programu (jeżeli by Cię to interesowało) ale jak chcesz to nie ma sprawy.

Jeśli masz jeszcze jakieś problemy lub chcesz się dodatkowo czegoś dowiedzieć to pytaj. ;)

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