Lazarus - wiele RaddioButton pod jednym Buttonem

0

Siema. Tak jak w temacie. Mam np. 20 RadioButtonów i pod każdym label z opcją no i jak zrobić, że jak user zaznaczy np. RadioButton7 i gdy kliknie na Button to na Edit1 pojawia się jakiś napis? Prosiłbym o kod, ponieważ nie mam pojęcia jak to zrobić... Z góry dzięki ;d

0

Lazarus też powinien mieć TRadioGroup. Wtedy tam dodajesz sobie Itemy jako kolejne przycisku do wyboru i masz je ideksowane od 0 we własności Items. Poza tym na tak nieprecyzyjne pytanie, że chcesz coś wyświetlić, to odpowiem tak. W OnClick dla przycisku dajez po prostu JakisTwojEdit.Text := 'Jakiś tekst';. Sprecyzuj co chcesz tam wyświetlić. A jeżeli chcesz mieć osobne TRadioButton'y to trzymaj je w talicy, ewentualnie posługuj się funkcją FindComponent aby łatwo sprawdzić, który TRadioButton jest Checked. Więcej informacji na ten temat - wygoogluj sobie. A temat prznoszę do działu Newbie, bo według mnie dotyczy banalnych podstaw. Na przyszłośc jednak za tagowanie "z d__py" będę "nagradzał" Koszem.

0

RadioButton1 "Label - kolor żółty"
Radiobutton2 "Label - kolor zielony"
Radiobutton3 "Label - kolor czerwony"

Button

"Edit1 - wybrałeś..."

W zależności od tego co zaznacze pojawi się na Edit1.

0

Naprościej pod OnClick dla Buttona dać coś takiego jak poniżej. Z tym, że nazywanie przycisków domyślną nazwą i trzymanie ich 20 jest mało eleganckie. Także lepiej trzymaj je w tablicy. Ewentualnie najprościej było by się posłużyć TRadioGroup, o którym już wspominałem. I wtedy odnosił byś się do jego własności Items`.

//...
const
  Max_RB_Count = 20;
  RB_Name = 'RadioButton';
var
  I : integer;
  RB : TRadioButton;
begin
  for I := 1 to Max_RB_Count do
  begin
    RB := TRadioButton(Self.FindComponent(RB_Name + IntToStr(I)));
    if RB <> nil then
    begin
      if RB.Checked then
      begin
        Edit1.Text := 'Wybrałeś ' + RB.Caption;
        Break;
      end;
    end;
  end;
end;
0

Dzięki ziomek. Zrobiłem troche po swojemu i pomęczyłem się z if i then :P

0

Spoko. To pozwoliłem sobie zaakceptować swój powyższy post jako rozwiązanie. A i mając taki kod, przy domyślnych nazwach dla komponentów - nie trzeba było nic kombinować z if then. Ponieważ według mnie działa on tak, jak opisałeś, że ma działać.

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