2009-07-26 9 views
8

Mam w sumie 4 radiobuttony w moim formularzu, chcę ustawić dwa pierwsze przyciski w jednej grupie, a drugie dwa w innej grupie, tak aby móc sprawdzić jedną z pierwszej grupy i jedną z drugiej grupy.Jak ustawić dwa radiobutony w jednej grupie i dwie w innej grupie?

Teraz, jeśli sprawdzę jedną z pierwszej grupy, ta z drugiej grupy zostanie odznaczona.

Zawsze zastanawiałem się, jak to zrobić i wierzę, że teraz jest czas, aby to zrozumieć. :)

Odpowiedz

13

Cytując z zaufanego Delphi 5 pomoc:

Domyślnie wszystkie przyciski radiowe, które są bezpośrednio zawarte w tym samym pojemniku okienkowym sterowania, takie jak TRadioGroup lub TPanel są grupowane. Na przykład dwa przyciski opcji w formularzu można sprawdzić w tym samym czasie, tylko jeśli znajdują się w oddzielnych kontenerach, na przykład w dwóch różnych polach grup.

+0

Uzgodnione. Grupowanie radiobutonów opiera się na relacjach rodzic/dziecko. Aby mieć wiele grup przycisków, musisz użyć wielu elementów sterujących nadrzędnych. –

2

Umieść dwa przyciski na panelu, a dwa pozostałe na innym panelu. W ten sposób będą traktowane jako oddzielne grupy. Zmień skosy panelu, aby usunąć krawędź, a cztery przyciski nie będą wyglądać dla użytkownika tak, jakby były rozdzielone, jeśli tego chcesz.

0

Przycisk RadioButton nie ma właściwości GroupIndex, podobnie jak SpeedButton.

Byłoby znacznie łatwiejsze, gdyby tak było, ponieważ można używać liczb do tworzenia zestawów RadioButtons, które współdziałają tylko z tymi o tym samym numerze ustawionym w GroupIndex.

Wszystko, co możesz zrobić, to wydobyć je z kontrolki grupowania, takiej jak panel.

Ale zawsze można zbudować własną wersję RadionButton z różnymi nowymi właściwościami. :)

0

Dlatego używamy Groupbox i Radiogroups (można je znaleźć przy standardowych kontrolkach). Polecam Ci utworzyć 2 skrzynki grupowe i umieścić 2 radiobutony w każdym z nich. Wtedy będziesz mógł sprawdzić 2 radiobuttony.

Możesz także wybrać tytuł skrzynki grupowej. To bardzo dobry sposób na uporządkowanie formularza zgłoszeniowego.

0

To świetnie, gdy przyciski radiowe tej samej grupy mogą być w rzędach lub kolumnach, ale co zrobić, jeśli przyciski radiowe muszą być wyświetlane w stylu X (lub w bardziej złożony sposób):

A B 
C D 

Ograniczenia dla tej próbki X styl kładę:

  • a ma związek z D (a i D nie mogą być sprawdzane w tym samym czasie, sprawdzanie jeden usuwa zaznaczenie pola wyboru inne)
  • C ma związek z B (C i B nie mogą być sprawdzane w tym samym czasie, sprawdzając jeden usuwa zaznaczenie pola wyboru innego)

Jest wizualnie wymagane jako że w stylu X, więc nie można umieszczać żadnych groupbox który przechowuje że RadioButton, ponieważ groupbox są prostokątne, a nie po przekątnej.

Nie znam żadnych poprawek tylko przy użyciu standardowych komponentów, między innymi z hackami, które sprawiają, że panele są przezroczyste, a także mogą być klikalne, dzięki czemu oba panele są kwadratowe, jedno nad drugim.

Ale co z tym, że przyciski radiowe znajdują się bardzo daleko od siebie, z wieloma skomplikowanymi komponentami, panelami przepływu, notatkami itp.?

Jedyną opcją jest użycie komponentów firm trzecich (w końcu do tego, co wiem) lub zrobić dużo ciężkiej pracy:

  1. Utwórz panel dla każdego RadioButton z dokładnie tej samej wielkości i pozycji jako RadioButton; to sprawia, że ​​przycisk radiowy nie odznacza żadnego innego, więc potrzeba więcej kodu.
  2. Dodaj kod dla każdego RadioButton, więc po jego zaznaczeniu usuń zaznaczenie wszystkich tych, które są z nim powiązane (te, które nie mogą być zaznaczone w tym samym czasie).

Zbyt dużo pracy dla czegoś, co mogłoby zostać zaimplementowane na prostej własności, takiej jak RadioGroupIndex, jeśli przypisano wartość 0, to działa teraz, teraz usuń zaznaczenie tylko tych dla tej samej grupy ... jak na główne menu.

Powiązane problemy