Problème d'un débutant avec le ComboBox [Résolu]

Messages postés
8
Date d'inscription
vendredi 5 décembre 2003
Statut
Membre
Dernière intervention
25 septembre 2006
- - Dernière réponse : JulioDelphi
Messages postés
2354
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
- 1 déc. 2004 à 21:51
Bonjour a tous.

Je souhaiterais formater un nombre de type Double
A l'aide d'un événement ComboBox
J'ai rempli mon Combo avec des fonctions Format
je sais bien quelle est de type String dans mon Combo...
Donc je ne peut pas exécuter ma fonction ????? directement

Est ce qu'il y a quelqu'un qui peut m?aider son passer chaque fois a réécrire La bonne fonction et le numéro index de ma ComboBox ?
C'est a dire que mon Label ou mon Edit reçoit directement la commande de ma Combo.

Merci d'avance

Le code source :
unit UFormatFloat;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
ComboBox1: TComboBox;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);

private
{ Private declarations }

public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
Const Nbr = 1200034.567;
procedure TForm1.FormCreate(Sender: TObject);
var
ListeFormat : TStringList;
result : Double;
i : Integer;

begin

Edit1.Text := floatToStr(Nbr);
Label1.caption := floatToStr(Nbr);

ListeFormat :=TStringList.Create;
ListeFormat.Add('FormatFloat ( '',##.##'', Nbr )');
ListeFormat.Add('FormatFloat ( ''00000'', Nbr )');

for i:=0 to ListeFormat.Count-1 do
ComboBox1.Items.Add(ListeFormat[i]); //remplir le combobox
ComboBox1.ItemIndex:=0; //Affiche le premier index dans le combobox
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
Label1.caption := ComboBox1.Items[ComboBox1.ItemIndex];

Edit1.Text := (FormatFloat (',##.##', Nbr ));
end;

end.
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
2354
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
13
3
Merci
N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient ! ;)

-------------------------------------------
http://diabloporc.free.fr : mon site refait ! Delphi power !

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 104 internautes nous ont dit merci ce mois-ci

Commenter la réponse de JulioDelphi
Messages postés
1105
Date d'inscription
dimanche 1 août 2004
Statut
Membre
Dernière intervention
17 août 2008
1
0
Merci
J'avoue franchement que je n'ai rien compris à ce que tu veux faire ...

Par contre que signifie cela : ??
ListeFormat.Add('FormatFloat ( '',##.##'', Nbr )');
ListeFormat.Add('FormatFloat ( ''00000'', Nbr )');

Tu ajoute la chaine en rouge dans ta liste de chaines ??

Tu peux aussi remplacer
for i:=0 to ListeFormat.Count-1 do
ComboBox1.Items.Add(ListeFormat[i]); //remplir le combobox

par
ComboBox1.Items.Assign(ListeFormat);


Les parenthèses ici
Edit1.Text := (FormatFloat (',##.##', Nbr ));

ne sont pas necéssaires.

Tu a oublié de libérer le TStringList .... ( Free )
Nomme tes composants !!!!!!

Bon voila déjà cela. Cela n'arrange pas le probleme mais corrige quelques défauts.

Présise-nous donc un peu ton probleme et la .... la solution viendra.

@ ++ Florent

Si tu ne te plantes pas ......
tu ne poussera jamais
Commenter la réponse de florenth
Messages postés
8
Date d'inscription
vendredi 5 décembre 2003
Statut
Membre
Dernière intervention
25 septembre 2006
0
Merci
Bonjour!

FormatFloat ( '',##.##'', Nbr ) c'est une fonctionpour formater
un nombre.

exemple :

float := 1234.567;

ShowMessage('##### : '+FormatFloat('#####', float));

Résultat : ##### : 1235

donc c'est une fonction qui format un nbre.

merci!
Commenter la réponse de mdmomo
Messages postés
8
Date d'inscription
vendredi 5 décembre 2003
Statut
Membre
Dernière intervention
25 septembre 2006
0
Merci
J'affiche plusieurs styles de format dans un ComboBox.
Chaque fois que je sélectionne un format dans la liste ( ComboBox)
le nombre dans le Edit ou bien du Label Change de format.

J'aimerais bien savoir comment s'il y a une autre méthode sans passer ni par un IF.. else ou bien Case.
Ou bien comment je peux passer ma fonction ' (FormatFloat ('',##.##'', Nbr )) '
Sans les guillemets (FormatFloat ( ',##.##', Nbr )) à Edit1.text ou bien à Label1.caption

Merci !

unit UFormatFloat;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    ComboBox1: TComboBox;
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);

  private
    { Private declarations }

  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
 Const Nbr = 1200034.567;
procedure TForm1.FormCreate(Sender: TObject);
var
   ListeFormat : TStringList;
   result : Double;
   i : Integer;

begin

      Edit1.Text := floatToStr(Nbr);
      Label1.caption :=   floatToStr(Nbr);

      ListeFormat :=TStringList.Create;
      ListeFormat.Add('FormatFloat ('',##.##'', Nbr )');
      ListeFormat.Add('FormatFloat ( ''00000'', Nbr )');

        ComboBox1.Items.Assign(ListeFormat);
        ComboBox1.ItemIndex:=0;  //Affiche le premier index dans le combobox
        ListeFormat.free;

end;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
   Label1.caption := ComboBox1.Items[ComboBox1.ItemIndex];

   Edit1.Text := (FormatFloat (',##.##', Nbr ));
end;

end.
 

Commenter la réponse de mdmomo
Messages postés
1105
Date d'inscription
dimanche 1 août 2004
Statut
Membre
Dernière intervention
17 août 2008
1
0
Merci
Pour FormatFloat j'avais compris.
Donc dans ton Combobox il y a :
FormatFloat ('',##.##'', Nbr )
FormatFloat ( ''00000'', Nbr )

non ??

Dans ce cas, il suffit de recuperer le format dans l'item que tu as selectionné et de la passer en parametre.

C'est pour cela que j'ai besoin de savoir exactement ce qu'affiche ton Combobox car je pense que tu n'affiche pas ce que tu voudrais ...

Vu que je ne comprends pas ce qu tu y affiche je te soumet donc le code suivant :
Edit1.Text:=FormatFloat(Combobox1.Items.Strings[Combobox1.ItemIndex],Nbr);

En supposant que le combobox contient
,##.##
00000

et non pas
FormatFloat ('',##.##'', Nbr )
FormatFloat ( ''00000'', Nbr )


Indique donc si cela te convient et sinon indique PRESISEMENT ce qu'affiche ton Combobox.

@++ Florent

Si tu ne te plantes pas ......
tu ne poussera jamais
Commenter la réponse de florenth
Messages postés
759
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
1 octobre 2009
2
0
Merci
Et si, dans le ComboBox, tu ne mettais que la chaîne de formatage ! Vu que le premier paramètre de la fonction FormatFloat et une chaîne ......!

implementation

{$R *.dfm}
Const Nbr = 1200034.567;
procedure TForm1.FormCreate(Sender: TObject);
var
result : Double;
i : Integer;

begin
Edit1.Text := floatToStr(Nbr);
Label1.caption := floatToStr(Nbr);
ComboBox1.Items.Clear;
ComboBox1.Items.Add('##.##');
ComboBox1.Items.Add('00000');
ComboBox1.ItemIndex:=0; 
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
Label1.caption := 'FormatFloat (''' +ComboBox1.Text+''',Nbr)';
Edit1.Text := (FormatFloat (ComboBox1.Text, Nbr ));
end;

end.


Avec ça, Label1 affiche la syntaxe de la fonction, Edit1 affiche le résultat.

Ken@vo
____________________
Code, Code, Codec !
Commenter la réponse de cs_Kenavo
Messages postés
8
Date d'inscription
vendredi 5 décembre 2003
Statut
Membre
Dernière intervention
25 septembre 2006
0
Merci
Je vous remercie bcp.

C'est grâce a vos aides et vos suggestions que j'ai trouvé la solution.

Merci.
Commenter la réponse de mdmomo

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.