Dwie grupy RadioButton jedna nie działa

0

Witam.

Można prosić o pomoc, dlaczego dla pierwszych trzech RadioButton działa ok
a dla pozostałych czterech nie. Stale pozostałe pamiętają ustawienia z chwili zamknięcia okna.

w "s" wartości : dla s[1] 1..3 dla s[2] 4..7

Chec.jpg


procedure TForm38021.FormShow(Sender: TObject);
begin
     tak := False;
     RadioButton1.Checked := false;
     RadioButton2.Checked := false;
     RadioButton3.Checked := false;
     TRadioButton(FindComponent('RadioButton'+s[1])).Checked := true;
     RadioButton4.Checked := false;
     RadioButton5.Checked := false;
     RadioButton6.Checked := false;
     RadioButton7.Checked := false;
     TRadioButton(FindComponent('RadioButton'+s[2])).Checked := true;
end;

Pozdrawiam
Janusz

1

Proponuję pomyśleć nad łatwiejszym interfejsem ;-)
Przechwytywanie.PNG

0

Dodaj do tego kodu: ShowMessage(s);

0

Azarien to nie program tylko proste narzędzie dla mnie.

0

_13th_Dragon Bład dalej występuje

0

@dasej - po pierwsze, mało kodu podałeś, więc nie wiemy co się dzieje ze zmienną s i nie wiadomo, czy faktycznie zawiera ona to, czego się spodziewasz; Po drugie nie wykonuj tego kodu w zdarzeniu OnShow, tylko w OnCreate formularza; Po trzecie:

tak := False;

rence opadajom... Artykuły dotyczące sensownego formatowania kodu czekają na Ciebie z otwartymi rękoma.

0

Jakiego typu jest zmienna s? To tablica czy string? Nie trzeba ustawiać Checked na False gdy ustawisz jednego z nich właściwość na True pozostałe same się ustawią.

0

furious. Jak mam to wpisać do create skoro może być wywoływane nawet 20 razy
np. wywołanie dla kolumny 1 s := 27
kolumny 3 s := 36
RadioButton1..3 ustawią się poprawnie, a 4..7 w tym przykładnie wywołanie dla kolumny
3 ustawi się na "Datę" a nie "Walutę" taki efekt jest na ekranie. D2007
tak := false; - może być zmienna := false;
jest potrzebna do czegoś innego i NIE MA w tym przypadku znaczenia.

kAzek. s : string;

2

@dasej: nie wiem czy zdajesz sobie do końca sprawę z tego co robisz. Poczytaj lepiej kurs z pordstawami, to będziesz wiedział więcej. Jeżeli zmienna S jest typu string. To wtedy S[1], to będzie pierwszy znak tej zmiennej. Analogicznie S[2], to będzie jej drugi znak.

Także jeżeli komponent na formatce ma własność Name ustawioną na RadioButton1 to zmienna S musi zawierać przynajmniej tekst zaczynający się od 1. Także najważniejsze już Tobie podpowiedziano wcześniej. Sposób lamerski, bo powinno się debugować kod. Ale co właściwie pokazuje się po zastosowaniu ShowMessage(S);? Bo zawartość zmiennej S jest tutaj kluczowym zagadnieniem.

A i tak jak pisali poprzednicy. Jeżeli kontrolki typu TRadioButton są umieszczone na TGroupBox (jest on ich Parentem) albo są to kontrolki dodane w TRadioGroupBox, to nie ma potrzeby ustawiania ich w ten sposób. Ponieważ ustawienie własności Checked jednego z nich na True, powoduje że pozostałe "automatycznie" odznaczą się.

0

kod po modyfikacji


procedure TForm38021.FormShow(Sender: TObject);
begin
     tak := False;
     Caption := 's = '+s;
     RadioButton1.Checked := false;
     RadioButton2.Checked := false;
     RadioButton3.Checked := false;
     TRadioButton(FindComponent('RadioButton'+s[1])).Checked := true;
     RadioButton4.Checked := false;
     RadioButton5.Checked := false;
     RadioButton6.Checked := false;
     RadioButton7.Checked := false;
     TRadioButton(FindComponent('RadioButton'+s[2])).Checked := true;
end;

a oto efekt działania, wartość "S" na belce.

s=27.jpg
s=36.jpg
s=14.jpg

Takie proste a nie działa.

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