2008-12-12 7 views
1

Je remplace plusieurs composants d'un de mes formulaires par des versions avec données, et ce fut un peu surprenant que mon nouveau TDBRadioGroup ne soit pas lié au champ numérique auquel il était assigné. Il s'avère qu'au lieu de passer par la propriété ItemIndex, la "valeur" de TDBRadioGroup est stockée dans un TStrings que vous devez remplir manuellement. Je peux comprendre que ce serait utile dans certains cas, mais quand il est juste lié à un champ numérique, avoir à faire quelque chose comme ceci:Existe-t-il un composant de groupe radio activé par les données associé à ItemIndex?

for i := 0 to myRadioGroup.Items.Count - 1 do 
     myRadioGroup.Values.Add(intToStr(i)); 

est un peu exagéré. Est-ce que quelqu'un sait d'un composant de groupe de radio activé par les données qui utilisera ItemIndex pour son paramètre de valeur?

+0

Je pensais que vous écriviez les vôtres de toute façon? –

+0

Non, c'est une zone de liste déroulante. : P –

Répondre

1

Vous pouvez spécialiser un TDBRadioGroup et ajouter des valeurs Par Index, je vous suggère de remplacer l'événement procédure Loaded; passer outre;

procedure TMyDBRadioGroup.Loaded; override; 

var 
    I: Integer; 

begin 
    inherited; 
    Values.Clear; 
    for i := 0 toItems.Count - 1 do 
    Values.Add(intToStr(i)); 
end; 
+0

Le problème est, qui a toujours le même problème. Ça passe par IntToStr, et ensuite il faut convertir ces chaînes en ints, et ça me semble être un hack. –

+0

Vous ne pouvez pas changer le fait que Items ist stringlist, vous devriez réécrire plus de parties de TDBRadioGroup si vous êtes contre les convertions. –

+0

TStrings est comme ça, vous pouvez aussi refaire TDBRadioGroup en copiant sa source dans un nouveau fichier avec un nouveau nom comme TDBNumericRadioGroup, alors vous pouvez faire ce que vous voulez. –

Questions connexes