2010-07-03 64 views
1

我的delphi應用程序與本機鍵盤不兼容。我該怎麼辦? 爲了這些圖片進一步解釋,首先要看:我的delphi應用程序與本機鍵盤不兼容。我該怎麼辦?

以下是對意大利的鍵盤看起來像一個形象: http://en.wikipedia.org/wiki/Keyboard_layout#Italian

您可以在同一頁面的正常的(美國鍵盤)。

如果我們按下Shift + 2(或Shift +號碼)與正常鍵盤@必須寫,但如果我們與意大利鍵盤做一個必須寫,但在我的應用程序,這兩個鍵盤,它把每一個鍵盤作爲一個普通的鍵盤! 例如,當我按下意大利鍵盤內的Shift + 2,它類型@而不是「

我使用的是德爾福7.你可以測試我的應用程序here:en.apadanasoftware.com/forums

Thnx預先

回答

5

發送到您的Delphi應用程序的字符由Windows控制,而不是Delphi控制,唯一可能的例外是如果您截取Windows消息並執行自定義密鑰處理。

如果您將兩個鍵盤連接到同一臺PC,則可能是因爲加載了錯誤鍵盤佈局的窗口造成的。

在Windows中轉到「控制面板/區域和語言選項」,然後在語言選項卡下,按下「文本服務和輸入語言」組框中的詳細信息按鈕,您應該能夠看到您的鍵盤佈局已經加載並加載新的,如果需要的話。

How to change your keyboard layout from Microsoft

0

你在哪裏收到你的應用程序中的鍵盤事件?

如果您使用的OnKeyPress一個事件,像

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); 

您將收到密鑰「@」:即轉換是由Windows來完成。

如果您使用的onkeydown事件,像

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); 

您會收到虛擬鍵碼,即原始密鑰代碼,你就必須使用Shift值,將其轉換。

關於虛擬密鑰,請參閱http://msdn.microsoft.com/en-us/library/dd375731(VS.85).aspx

我想你在應用程序中使用OnKeyDown而不是OnKeyPress。

0

首先,我幾乎被冒犯了,你爲什麼會認爲組合狀態鍵盤是「正常」的?它沒有我需要每天使用的任何重音字母!開玩笑(也是,在我的美國格式鍵盤上輸入),你問的是錯誤的和不相關的。原因如下:

  • 打印在鍵盤按鈕上的文本與用戶按下按鈕時發生的情況幾乎沒有相似之處。鍵盤會根據所選的鍵盤格式生成一個由Windows解釋的「掃描碼」。我可以在我的計算機上點擊LeftALT + SHIFT將美國的鍵盤格式轉換爲羅馬尼亞語。在我的家用電腦上也有法國人在輪換。當然,我的美國鍵盤上沒有任何重音字母(如按鈕上的印刷文字),但請放心,這完全沒有關係,因爲我在輸入任何方式時都沒有看到按鍵:)
  • 事實上,"字符不在同一個按鈕2應該不關心你。這是最終用戶的選擇,並且最終用戶確切知道要按什麼鍵來獲取任何符號。因爲這就是美式鍵盤上的含義,你不會因爲將Shift +「2」解釋爲"而爲他服務。他會問,爲什麼他在你的應用程序上輸入"並得到[

我想說的是,你的應用程序不可能與本機鍵盤不兼容。它工作得很好,你只是不知道要按什麼按鈕 - 但最終用戶知道,因爲他擁有電腦和鍵盤。