VCL

2012-03-18 12 views
5

'da DbGrids.pas'ta klavye düzeninin otomatik olarak değiştirilmesini devre dışı bırakıyorum Delphi XE2'yi kullanarak Farsça klavye düzenini yüklemek için ActivateKeyboardLayout(HKL_NEXT, KLF_ACTIVATE); kullanın, ancak bazen TextBox veya DbGrid denetimini tıklatıyorum, klavye otomatik olarak İngilizce düzenine dönüştürülür.VCL

Klavye düzeninin otomatik olarak değiştirilmesini nasıl devre dışı bırakabilirim?

cevap

4

Aynı sorunlarımız var. Bu hata, D2006'dan D2010'a yükseltildikten sonra ortaya çıktı.

Sayı DBGrids.pas içinde:

procedure TCustomDBGrid.WMKillFocus(var Message: TMessage); 
begin 
    ImeName := Screen.DefaultIme; 
    ImeMode := imDontCare; 
    inherited; 
    if not ((InplaceEditor <> nil) and 
    (HWND(Message.WParam) = InplaceEditor.Handle)) then 
    ActivateKeyboardLayout(Screen.DefaultKbLayout, KLF_ACTIVATE); 
end; 

hiçbir fikrim yok Borland/Embarcadero ekledi neden "eğer blok" miras sonra. Değişiklik, klavye düzenini değiştirmeyi varsayılana döndürür. DBGrids'i projelerimize kopyalamamız ve "blok ise" kaldırmamız gerekiyordu.

İlgili konular