programın bölge ve dil ayarları uyum sorunu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
tayipk
Üye
Mesajlar: 284
Kayıt: 27 Kas 2013 11:32

programın bölge ve dil ayarları uyum sorunu

Mesaj gönderen tayipk »

herkese merhaba arkadaşlar. benim için ciddi siz üstadlar için belki hafif bir soru olabilir ama benim için çok ehemmiyeti var. arkadaşlar yaptığım program da cxdbcurrencyedit kullandım. sorunum şu programı açtığım zaman ki parasal noktalama değerleri sürekli değişiyor. örneğin 10,60 yazıyorum otomatik olarak bu rakam 1.060.00 oluyor denetim masasından bölge ve dil ayarlarını sıfırlayınca tekrar yazdığımda bu sefer gerçek değer olan 10,60 olarak yazabiliyorum bu sorunu nasıl aşabilirim arkadaşlar. yardımlarınız için şimdiden teşekkürler.
Soru Sorarken yazmaya Üşenmeyen Parmaklar Sorunun Çözüldükten Sonra Teşekkür etmeye de Üşenmesin.
xxxjedixxx
Üye
Mesajlar: 216
Kayıt: 10 Ara 2013 03:50

Re: programın bölge ve dil ayarları uyum sorunu

Mesaj gönderen xxxjedixxx »

Merhaba,

Bir zamanlar benzer bir sorunu Delphi 7'de aşağıdaki gibi çözmüştüm. Fakat yeni sürümlerde nokta virgül tanımlarını FormatSettings içine taşımışlar. Her ikisini de paylaşıyorum. Kullandığın component bu ayarları kullanmıyorsa sorunun çözülecektir.

Delphi 7

Kod: Tümünü seç

procedure TForm1.FormCreate(Sender: TObject);
begin
  SysUtils.DecimalSeparator := ','; 
  SysUtils.ThousandSeparator := '.';
end;
XE sürümleri

Kod: Tümünü seç

procedure TForm1.FormCreate(Sender: TObject);
begin
  FormatSettings.DecimalSeparator := ',';
  FormatSettings.ThousandSeparator := '.';
end;
Kodları uygulamanın başlangıcında veya anafomun oncreate'inde bir kez çalıştırman yeterli olacaktır. Fakat program çalıştıktan sonra bölgesel ayarlar değiştirilirse yine sorun olacağı için WM_SETTINGCHANGE olayına bağlaman daha mantıklı olur ki ben öyle yapmıştım. Windows mesajlarını yakalama konusunda bilgin olmayabilir diye onu da yazayım.

Yukarıdakine ilave olarak Anaform'unun koduna şu kodları da ekle.

Kod: Tümünü seç

  TForm1 = class(TForm)
  ...
  private
    procedure WMSettingChange(var Message: TMessage); message WM_SETTINGCHANGE;
  ...

procedure TForm1.WMSettingChange(var Message: TMessage);
begin
  // yukarıda  verdiğim delphi sürümüne uygun olan nokta virgül tanımlarını yaz.
  ... DecimalSeparator := ','; 
  ... ThousandSeparator := '.';
end;

tayipk
Üye
Mesajlar: 284
Kayıt: 27 Kas 2013 11:32

Re: programın bölge ve dil ayarları uyum sorunu

Mesaj gönderen tayipk »

hocam verdiğin cevap ziyadesiyle işimi görmüştür çok teşekkürederim.
Soru Sorarken yazmaya Üşenmeyen Parmaklar Sorunun Çözüldükten Sonra Teşekkür etmeye de Üşenmesin.
Hornist
Üye
Mesajlar: 1
Kayıt: 22 Ağu 2004 09:29
Konum: İSTANBUL

Re: programın bölge ve dil ayarları uyum sorunu

Mesaj gönderen Hornist »

Cevabınızdan yeni faydalandım, yardımlarınız için teşekkür ederim. :bravo:
God makes some people horn players - others are not so fortunate....
Cevapla