Qué botón de radio está seleccionado en una TRadioGroup?
-
22-09-2019 - |
Pregunta
Como se puede ver en mi historial de preguntas, estoy desarrollando un gestor de libros electrónicos, que será de código abierto y permite que se abra en unos 10 días, pero tengo una TRadioGroup
, como se puede ver:
TRadioGroup Usado en mi formulario http://img85.imageshack.us/img85/1830/radiogroup. png
Y quiero almacenar tantos en una variable (que debe ser un Integer
) que será "ligado" con este TRadioGroup
.
Necesito hacer una función if
como esto:
título de la TRadioButton -> Número que tendrá que ser almacenado en la variable
Ajustar 2xWidth - por defecto -> 0
Ajuste 2xHeight -> 1 | Ajustar ancho -> 2
Ajustar altura -> 3
Pero yo sólo utiliza un TRadioGroup
y un tiempo TRadioButton
uno, diferente que en C # que he utilizado más de 20 veces. Entonces me gustaría saber lo que necesito para poner en el caso de la función, porque lo que hará que ya sé cómo hacerlo:
var
num: Integer;
begin
if(TRadioButton1 checked?)
begin
num := 0;
end;
end.
Lo que necesito para poner dentro de los corchetes de la función if
?
PS:. Voy a poner los créditos en el programa para las personas que me ayudaron en este pequeño proyecto
Solución
A TRadioButton tiene la característica sea comprobada. Pero un TRadioGroup tiene la propiedad ItemIndex.
Los elementos de una TRadioGroup se almacenan utilizando un TStrings. Así se puede asociar un objeto para cada opción y puede convertir un entero a una TObject para ser almacenados.
Ejemplo:
// fill the radiogroup
radiogroup.Items.AddObject('Fit 2xWidth', TObject(0));
radiogroup.Items.AddObject('Fit 2xHeight', TObject(1));
radiogroup.Items.AddObject('Fit Width', TObject(2));
radiogroup.Items.AddObject('Fit Height', TObject(3));
radiogroup.ItemIndex := 0;
Para leer el ajuste actual:
value := radiogroup.ItemIndex;
O para obtener el entero asociado:
index := radiogroup.ItemIndex;
Assert(index>=0); // Sanity check
value := Integer(radiogroup.Items.Objects[index]);
En su caso, los valores oscilan entre 0 y 3, de modo que puede utilizar el ItemIndex.
Como nota, si no es una función. Una función es una pieza de código que devuelve un valor basado en los parámetros de entrada. Si es una declaración, que es un comando que se puede ejecutar. La sentencia if es especial, ya que le permite ejecutar una instrucción diferente en función de si la condición.
Otros consejos
Sólo un pequeño consejo:. Configuración .ItemIndex
no envía el foco del teclado al elemento de radio, sé cómo solucionarlo, lectura anticipada
En lugar de seleccionar un código de radio en un RadioGroup estableciendo .ItemIndex
es mucho mejor hacerlo mediante el envío de foco al elemento de radio; sólo para ser muy claro:. me refiero envío de enfoque sólo para el elemento de radio, no todo el grupo de radio
En lugar de: radiogroup.itemindex:=TheIndex;
lo hacen como esto: TRadioButton(radiogroup.Controls[TheIndex]).SetFocus;
Esto hará que el elemento de radio para ser seleccionado y enviar el foco del teclado a ella , por lo que mostrará el rectángulo de puntos arroud ella, como si el usuario hubiera hecho clic en él.
Nota 1:. Para verlo en las teclas del cursor del teclado utilización de acción y comparar behavor de sólo la creación y el envío de .ItemIndex
enfoque al tema de radio
Nota 2:. Si utiliza TRadioButton(radiogroup.Controls[TheIndex]).SetFocus;
entonces no hay ninguna necesidad de .ItemIndex
conjunto en absoluto, sino que también se llevará a cabo
Espero que ayude a alguien con el mismo problema que yo, cuando necesita ser establecido por el código, por ejemplo para evitar circular behavor teclado, por ejemplo, para hacer que se quede en el último elemento de radio cuando se selecciona último elemento de la radio y la derecha del teclado cursor se presiona, lo mismo para primero.