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

Signaler
Messages postés
1
Date d'inscription
samedi 12 juillet 2003
Statut
Membre
Dernière intervention
10 janvier 2008
-
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
-
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...

1 réponse

Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
16
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;


@+