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

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top