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

mdmomo 8 Messages postés vendredi 5 décembre 2003Date d'inscription 25 septembre 2006 Dernière intervention - 1 déc. 2004 à 13:13 - Dernière réponse : JulioDelphi 2354 Messages postés dimanche 5 octobre 2003Date d'inscription 18 novembre 2010 Dernière intervention
- 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
JulioDelphi 2354 Messages postés dimanche 5 octobre 2003Date d'inscription 18 novembre 2010 Dernière intervention - 1 déc. 2004 à 21:51
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 !

Merci JulioDelphi 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de JulioDelphi
florenth 1105 Messages postés dimanche 1 août 2004Date d'inscription 17 août 2008 Dernière intervention - 1 déc. 2004 à 14:10
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
mdmomo 8 Messages postés vendredi 5 décembre 2003Date d'inscription 25 septembre 2006 Dernière intervention - 1 déc. 2004 à 14:21
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
mdmomo 8 Messages postés vendredi 5 décembre 2003Date d'inscription 25 septembre 2006 Dernière intervention - 1 déc. 2004 à 16:05
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
florenth 1105 Messages postés dimanche 1 août 2004Date d'inscription 17 août 2008 Dernière intervention - 1 déc. 2004 à 16:46
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
cs_Kenavo 759 Messages postés vendredi 21 mars 2003Date d'inscription 1 octobre 2009 Dernière intervention - 1 déc. 2004 à 17:11
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
mdmomo 8 Messages postés vendredi 5 décembre 2003Date d'inscription 25 septembre 2006 Dernière intervention - 1 déc. 2004 à 19:09
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.