Question

Comme vous pouvez le voir dans l'histoire de ma question, je développe un gestionnaire de livre électronique, qui sera open source et je libérer dans environ 10 jours, mais j'ai un TRadioGroup, comme vous pouvez le voir:
TRadioGroup utilisé sur mon formulaire http://img85.imageshack.us/img85/1830/radiogroup. PNG

Et je veux stocker somethings dans une variable (qui doit être un Integer) qui sera « lié » à cette TRadioGroup.

Je dois faire une fonction if comme ceci:

  

Légende de la TRadioButton -> Nombre qui devront être stockés dans la variable

     

Fit 2xWidth - Par défaut -> 0
  Fit 2xHeight -> 1
  Ajuster à la largeur -> 2
  Ajuster à la hauteur -> 3

Mais je viens d'utiliser un TRadioGroup et un TRadioButton une fois, différent de celui en C # que je l'ai utilisé plus de 20 fois. Ensuite, je veux savoir ce que je dois mettre sur la fonction si, parce que ce qu'il va faire, je sais déjà comment faire:

var
  num: Integer;

begin
  if(TRadioButton1 checked?)
  begin
    num := 0;
  end;
end.

Qu'est-ce que je dois mettre à l'intérieur des crochets de la fonction if?

PS: Je vais mettre les crédits au programme pour le peuple qui m'a aidé dans ce petit projet

.
Était-ce utile?

La solution

A TRadioButton a la propriété vérifié. Mais un TRadioGroup a la propriété ItemIndex.

Les éléments d'un TRadioGroup sont stockées en utilisant un TStrings. Ainsi, vous pouvez associer un objet à chaque option et vous pouvez jeter un entier à un TObject à stocker.

Exemple:

// 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;

Pour lire le réglage actuel:

value := radiogroup.ItemIndex;

Ou pour obtenir le nombre entier associé:

index := radiogroup.ItemIndex;
Assert(index>=0); // Sanity check
value := Integer(radiogroup.Items.Objects[index]);

Dans votre cas, les valeurs sont de 0 à 3, vous pouvez utiliser le ItemIndex.

Comme une note, si ce n'est pas une fonction. Une fonction est un morceau de code qui renvoie une valeur sur la base des paramètres d'entrée. Si est une déclaration, qui est une commande qui peut être exécutée. L'instruction if est particulière, car elle vous permet d'exécuter une instruction différente en fonction de la condition if.

Autres conseils

Juste une petite astuce:. Réglage .ItemIndex n'envoie pas le focus du clavier à l'élément de la radio, je sais comment le résoudre, continuez la lecture

Au lieu de sélectionner par code radio dans un RadioGroup en mettant en .ItemIndex il est préférable de le faire en envoyant l'accent sur l'élément radio; juste pour être très clair. Je veux dire l'envoi de se concentrer uniquement sur l'élément radio, et non l'ensemble du groupe radio

Au lieu de: radiogroup.itemindex:=TheIndex;

Faites comme ceci: TRadioButton(radiogroup.Controls[TheIndex]).SetFocus;

Il fera l'objet de la radio à sélectionner et envoyer le focus du clavier à lui , il affiche le rectangle en pointillé arroud, tout comme si l'utilisateur avait cliqué dessus.

Remarque 1: Pour voir dans les touches de curseur du clavier d'utilisation d'action et de comparer behavor de mettre juste .ItemIndex et l'envoi de mise au point au point radio

.

Note2. Si vous utilisez TRadioButton(radiogroup.Controls[TheIndex]).SetFocus; alors il n'y a pas inutile de définir .ItemIndex du tout, il sera également fait

L'espoir qui aide une personne ayant le même problème que moi, quand le besoin de le fixer par code, par exemple pour éviter behavor du clavier circulaire, par exemple pour le rendre à rester sur le dernier élément de la radio lorsque dernier élément radio est sélectionné et à droite du clavier le curseur est enfoncé, même pour le premier.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top