Salut,
voici un exemple complet qui utilise une autre manière:
{-------------------------------------------------------------------------} { Project : DSDemo.dpr } { Comment : Modification de DecimalSeparator } { au niveau Système } { } { Date : 25/10/2008 13:23:00 } { Author : Cirec } {-------------------------------------------------------------------------} { Last modified } { Date : 25/10/2008 17:32:06 } { Author : Cirec } {-------------------------------------------------------------------------} Unit UMain;
Interface
Uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
Type Tfrm_Main = Class(TForm) lbl_DSeparateur: TLabel; btn_SetDSeparator: TButton; Procedure btn_SetDSeparatorClick(Sender: TObject); Procedure FormCreate(Sender: TObject); Private Procedure UpdateLabel; { Déclarations privées } Public { Déclarations publiques } End;
Var frm_Main: Tfrm_Main;
Implementation
{$R *.dfm} Const {Séparateur décimale par défaut pour la France} DefaultDecimalSeparator = ',';
Var OldDecimalSeparator: Char;
{Mise à jour de la variable DecimalSeparator} Procedure GetDecimalSeparator; Begin DecimalSeparator := GetLocaleChar(GetThreadLocale, LOCALE_SDECIMAL, '.'); End;
{Change la valeur DecimalSeparator au niveau du système} Function SetDecimalSeparator(Const DecimalChar: Char = DefaultDecimalSeparator): Boolean; Var Buffer : Array[0..1] Of Char; Begin Buffer[0] := DecimalChar; Buffer[1] := #0; Result := SetLocaleInfo(GetThreadLocale, LOCALE_SDECIMAL, Buffer); {Force la mise à jour de la variable DecimalSeparator} GetDecimalSeparator; End;
Procedure Tfrm_Main.btn_SetDSeparatorClick(Sender: TObject); Begin If DecimalSeparator = DefaultDecimalSeparator Then SetDecimalSeparator('.') Else SetDecimalSeparator(DefaultDecimalSeparator); UpdateLabel; End;
Procedure Tfrm_Main.FormCreate(Sender: TObject); Begin UpdateLabel; End;
Procedure Tfrm_Main.UpdateLabel; Begin lbl_DSeparateur.Caption := DecimalSeparator + ' ' + IntToStr(Ord(DecimalSeparator)); End;
Initialization OldDecimalSeparator := DecimalSeparator; Finalization {Avant de quitter on remet la variable comme on l'a trouvé} SetDecimalSeparator(OldDecimalSeparator); End. @+ Cirec
|