DBGRID + Monétaire + Ado

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

1 réponse

Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
10 janv. 2008 à 16:13
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;


@+
3
Rejoignez-nous