Leader2000
Messages postés184Date d'inscriptionmercredi 24 mai 2006StatutMembreDernière intervention28 août 2015
-
1 févr. 2008 à 15:07
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 2022
-
1 févr. 2008 à 23:16
Bonjour!
Ma question est pratique.
Ce premier module de codes me permet aisement d'avoir dans mon "edit3" un resultat ayant un nombre decimal par exemple de .00
Procedure...
var leader : double;
begin
leader := combobox1.ItemIndex * combobox2.itemIndex;
edit3.text:= FloatToStrF(ffFixed,15,2);
end;
Bref, l'opération de multiplication entre les deux "combobox" marche bien et donne leur résultat dans l'"edit3".
Quel est mon problème?
Je n'arrive pas à faire cette même opération quand il s'agit des Tedits. Que faut-il mettre là ou se colorer en rouge s'il vous plait.
Procedure...
var leader : double;
begin
leader := edit1.??? * edit2.???;
edit3.text:= FloatToStrF(ffFixed,15,2);
end;
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 1 févr. 2008 à 15:20
ItemIndex renvois l'index de l'item selectionné dans un objet liste (listbox, combobox)
TEdit ne fonctionnant pas avec des items, il est normal qu'il n'y ai pas de propriété ItemIndex.
j'en deduis (vive la divination dans l'interpretation des symboles nuageux) que tes combobox contienent des chiffres de 0 a n
et que la multiplication des index permet d'eviter une convertion texte > numerique.
donc si dans tes TEdit tu mets egalement des chiffres tu peu faire :
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 1 févr. 2008 à 15:22
ps :
l'opération que tu effectues avec les ComboBox "combobox1.ItemIndex * combobox2.itemIndex" ne porte pas sur les valeurs contenues dans les ComboBox mais sur les Index des Items
autrement dit si : ComboBox1 contient : 5; 8 ;10 (Index 0 5; Index 1 8; Index 2 = 10)
et
ComboBox2 contient : 2; 4; 6;
et en admettant que combobox1.ItemIndex = 1
et en admettant que combobox2.ItemIndex = 2
combobox1.ItemIndex * combobox2.itemIndex
est égale à : 1 * 2 et non 8 * 6 ce qui devrait être le résultat attendu !
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 1 févr. 2008 à 15:44
on s'auto-grill depuis tout a l'heure mon jeune ami :)
il faut rajouter egalement que ItemIndex est une valeur entiere,
donc entier * entier = entier
jamais un flottant.
pour multiplier les valeur contenus dans les combobox :
A := StrToFloatDef( ComboBox1.Items[ComboBox1.ItemIndex], 0);
B := StrToFloatDef( ComboBox2.Items[ComboBox2.ItemIndex], 0);
Edit3.Text := Format('%.2f',[A * B]);
une difference entre Format et xxxToStr :
Moi je n'utilise que format, bien mal on en dise, car elle permet de changer le type de resultat plus facilement que de passer de IntToStr a FloatToStr en permanance, de plus elle permet beaucoup de choses que ces derniers ne permettent pas.
exemple :
Edit3.Text := format('A=%d // B=%d // A*B=%d // A/B=%f // A div B= %d // A mod B= %d',[A, B, A*B, A/B, A div B, A mod B]);
ce qui est bien pendant la conception pour afficher les valeurs alentours au calcul pour verifier qu'il n'y a pas d'erreur dans notre code ou un algorithme.
au final, quand tout vas bien, on peu remplacer Format par une fonction correspondante.