DBGRID + Monétaire + Ado [Résolu]

Messages postés
1
Date d'inscription
samedi 12 juillet 2003
Dernière intervention
10 janvier 2008
- - Dernière réponse : Caribensila
Messages postés
2684
Date d'inscription
jeudi 15 janvier 2004
Dernière intervention
26 juillet 2018
- 10 janv. 2008 à 16:13
Bonjour et merci en avance pour votre aide!

Voici mon problème:

J'ai un dbgrid qui affiche le résultat d'une requête sql sur une base de données access..
Mes champs monétaire s'affiche comme suit: 
1
1,1
1,11
j'aimerais qu'ils s'affichent comme suit:
1,00$
1,10$
1,11$

Deplus, je n'ai rien trouver pour entrer une valeur monétaire?!
Un Edit qui filterais les touche clavier ou un maskedit?!
que me conseillez-vous?

Réal...
Afficher la suite 

Votre réponse

1 réponse

Meilleure réponse
Messages postés
2684
Date d'inscription
jeudi 15 janvier 2004
Dernière intervention
26 juillet 2018
3
Merci
Salut,

Un exemple :

Const CurrencyUnit :  String = ' $';



procedure TForm1.FormCreate(Sender: TObject);
  begin
  Edit1.Text := CurrencyUnit;
  Edit2.Text := CurrencyUnit;
end;



procedure TForm1.ControlEnter(Sender: TObject);
  {Dans l'Inspecteur d'objet: à mettre dans l'évènement OnEnter et OnClick de chaque Edit.}
  begin
  {On place le caret juste avant le symbole monétaire.}
  (Sender as TEdit).SelStart := Length((Sender as TEdit).Text)-(Length(CurrencyUnit));
end;



procedure TForm1.ControlKeyPress(Sender: TObject; var Key: Char);
  {Dans l'Inspecteur d'objet: à mettre dans l'évènement OnKeyPress de chaque Edit.}
  begin
  {On filtre les saisies.}
  if not(Key in ['0'..'9',#8 ,#46]) then Key := #0;
end;




procedure TForm1.ControlExit(Sender: TObject);
  {Dans l'Inspecteur d'objet: à mettre dans l'évènement OnExit de chaque Edit.}
  var
       V     : Extended;
      Code : Integer;
      S      : String;
  begin
  {On élimine le symbole monétaire.}
  S := Copy((Sender as TEdit).Text,0,Length((Sender as TEdit).Text)-Length(CurrencyUnit));
  {On évalue la chaîne restante en flottant.}
  val(S,V,Code);
  if Code=0 then //Si ça réussit..
    (Sender as TEdit).Text := formatfloat('0.00' + CurrencyUnit,V)
  else ShowMessage('caractère ' + IntToStr(Code) + ' erroné');
end;


@+

Dire « Merci » 3

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

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de Caribensila

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.