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

laksdjfhljka 1 Messages postés samedi 12 juillet 2003Date d'inscription 10 janvier 2008 Dernière intervention - 10 janv. 2008 à 01:10 - Dernière réponse : Caribensila 2684 Messages postés jeudi 15 janvier 2004Date d'inscription 26 juillet 2018 Dernière intervention
- 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
Caribensila 2684 Messages postés jeudi 15 janvier 2004Date d'inscription 26 juillet 2018 Dernière intervention - 10 janv. 2008 à 16:13
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;


@+

Merci Caribensila 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 100 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.