Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   RadioButton & OnDblClick [RadioGroup] (https://www.clubdelphi.com/foros/showthread.php?t=38278)

GaaK 09-12-2006 06:58:13

RadioButton & OnDblClick [RadioGroup]
 
Hola, tengo la siguiente duda:

Tengo un RadioGroup vacío y en tiempo de ejecución se genera los RadioButtons usando TRadioButton.Create(Self). Este proceso funciona muy bien pero no puedo crearle o asignarle el evento OnDblClick. La idea es que en el formulario no hayan botones, sólo un RadioGroup. ¿Cómo puedo asignarle OnDblClick a un RadioButton creado en tiempo de ejecución?

Mirando en el foro descubrí que un RadioGroup tiene Items :cool:, estos son RadioButtons. ¿Como asigno un evento OnDblClick en esto?

Suponer que el evento en OnDblClick tenga un ShowMessage: "Opción elegida i"

Thanks in advance! ;)
- GaaK -

roman 09-12-2006 07:21:16

En un RadioGroup tú no creas los RadioButton. El control mismo los crea según su propiedad Items. Para acceder a cada uno de los RadioButton creados usa la propiedad Buttons, por ejemplo:

Código Delphi [-]
RadioGroup1.Buttons[i].OnDblClick := RadioButtonDblClick;

Conesto asignas el método RadioButtonDblClick al evento OnDblClick del I-ésimo RadioButton.

// Saludos

GaaK 09-12-2006 15:15:26

Gracias esto si que trabaja, pero aún tengo la duda.

En un RadioGroup si se puede crear RadioButtons, los jalo de la paleta o los creo en tiempo de ejecución y los coloco dentro del RadioGroup... Ahora que esto sea usado con otros fines creo que es otra cosa, imagino yo que esos RadioButtons son flotantes?

- GaaK -

dec 09-12-2006 19:10:23

Hola,

Los "TRadioButton" se distinguen de los "TCheckBox" en que de estos últimos puede haber varios marcados a la vez. De los primeros (al menos así creo yo que se deben usar) sólo puede haber marcado uno de ellos al mismo tiempo.

Si tú sitúas dos "TRadioButton" en un formulario, automáticamente se excluirán entre sí, es decir, cuando "marques" uno el otro se "desmarcará" y viceversa. Lo mismo ocurre si sitúas dos o más "TRadioButton" en un "TPanel" o en un "TGroupBox". Yo diría que en cualquier contenedor capaz de albergarlos.

Lo que el componente "TRadioGroup" te ofrece es la posibilidad de trabajar con varios "TRadioButton" conjuntamente, por ejemplo, pudiendo estos ser agrupados por columnas. Tú puedes situar encima de este componente "TRadioButton", pero, "TRadioGroup" no se hará cargo de ellos como podría hacerlo un "TGroupBox". Puedes hacer un par de pruebas en tiempo de diseño y verlo por ti mismo.

Lo último quiere decir que que al situar "TRadionButton" encima de un "TRadioGroup", aunque aquellos quedaran encima de este, en realidad el "TRadioGroup" no los contendría: sería el propio formulario (que contuviese a su vez el "TRadioGroup") el que se hiciera cargo de los "TRadioButton". Si tuvieras otros "TRadioButton" en el formulario los mismos se "excluirían" con los que tuvieras encima (pero no contenidos) en el "TRadioGroup".

En definitiva, tú sabes que existe el componente "TEdit" y el componente "TMemo". ¿Sirven los dos para recoger la entrada del teclado del usuario? Sí; sirven los dos. Pero no se utilizan indistintamente, unas veces se usan unos y otras otros. Por ejemplo, podría solicitarse el nombre del usuario mediante un "TMemo", empero, suele utilizarse un "TEdit". El "TMemo" también nos valdría, pero, el "TEdit" parece aún más apropiado.

Tú verás, por tanto, cuándo te viene mejor un "TRadioGroup"; cuándo te convendría usar sencillamente un par de "TRadioButton"... etc., etc., etc. :D

roman 09-12-2006 19:43:59

¿Y quién habló de los CheckBox? :confused:

dec 09-12-2006 19:46:48

Hola,

Pues yo mismo... los he mencionado relacionados con los "RadioButton"... ¿es que te parece que lié más que otra cosa al compañero?

Muy bien puedes llevar razón... ¡pero deja que sea él quien lo diga al menos! :D :D :D

GaaK 09-12-2006 23:11:51

Cita:

Empezado por dec
Hola,

Pues yo mismo... los he mencionado relacionados con los "RadioButton"... ¿es que te parece que lié más que otra cosa al compañero?

Muy bien puedes llevar razón... ¡pero deja que sea él quien lo diga al menos! :D :D :D

No no, tranquilidad, entiendo muy bien lo que comenta. A eso me refería con que practicamente no estaban asociados al RadioGroup (o flotantes). Ahora tengo solucionado esto, y me es mucho más conveniente en este caso usar los Items de RadioGroup.

Ante esto, estuve viendo y aparentemente es lo mismo. Si mi Form no tiene botones la única forma de seleccionar es haciendo doble click en un Item del RadioGroup (para esto ya tengo definido mi OnDblClick para cada caso). Ahora surge la duda, como detecto si la validación la realicè desde el teclad?, más especificamente con la tecla SPACE?

Yo puedo navegar por los Items del RadioGroup con las teclas direccionales (UP, DOWN, LEFT, RIGHT), al encontrame en la que quiero validar presiono SPACE y, ¿qué evento es llamado en este caso?... Se me ocurre que OnKeyPress y si me funciona muy bien, pero si en este evento le coloco algo como: if key=SPACE OR key=ENTER then... Funciona de maravilla (puedo validar con ENTER y con SPACE), pero el efectito de validación sólo lo consigo cuando se presiona SPACE y no ENTER (para este caso). ¿Cómo consigo el efecto de validación, ya sea presionando ENTER o SPACE?

- GaaK -


La franja horaria es GMT +2. Ahora son las 12:26:15.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi