2007 ve XE arasındaki Key Down Sorunu (Çözüldü)

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
adelphiforumz
Üye
Mesajlar: 602
Kayıt: 01 Nis 2008 05:38
Konum: İstanbul

2007 ve XE arasındaki Key Down Sorunu (Çözüldü)

Mesaj gönderen adelphiforumz »

S.A.

Projeyi delphi 2007 den XE'ye geçirdikten sonra keydown altındaki key değerleri türkçe karakterlerde sorun yaratıyor
bunu nasıl çözebilirim bilen varmıdır

Teşekkürler
En son adelphiforumz tarafından 12 Eki 2015 11:09 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Kullanıcı avatarı
adelphiforumz
Üye
Mesajlar: 602
Kayıt: 01 Nis 2008 05:38
Konum: İstanbul

Re: 2007 ve XE arasındaki Key Down Sorunu

Mesaj gönderen adelphiforumz »

S.A.

"ş" harfi için Bir formun Keydown altında yazdığım koda aşağıdaki farklılıklar oluşuyor bunu nasıl çözebilirim.

Kod: Tümünü seç

    // ş harfinin karşılığında caption üzerinde farklı bir karakter çıkıyor
    // Key down içerisinde ş harfini key:Word tipinden nasıl elde edebilirim
    // AnsiChar da çalışmıyor
    Caption := Char(Key);
Eğer aynı işlemi KeyPress altında yaparsam sonuç farklı oluyor

Kod: Tümünü seç

    // Sonuş olarak ş harfi görünüyor
    Caption := Key;
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Kullanıcı avatarı
adelphiforumz
Üye
Mesajlar: 602
Kayıt: 01 Nis 2008 05:38
Konum: İstanbul

Re: 2007 ve XE arasındaki Key Down Sorunu

Mesaj gönderen adelphiforumz »

S.A.
Gelen datayı aşağıdaki fonksiyona gönderdiğinizde gelen data dönüşmüş oluyor

Kod: Tümünü seç

function TUsefulFunctions.GetCharFromVirtualKeyToWideString(Key : Word) : WideString;
var
 WBuff         : array [0..255] of WideChar;
 KeyboardState : TKeyboardState;
 UResult       : Integer;
begin
 Result := '';
 GetKeyBoardState (KeyboardState);
 ZeroMemory(@WBuff[0], SizeOf(WBuff));
 UResult := ToUnicode(key, MapVirtualKey(key, 0), KeyboardState, WBuff, Length(WBuff), 0);
 if UResult > 0 then
  SetString(Result, WBuff, UResult)
 else if UResult = -1 then
  Result := WBuff;
end;
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Cevapla