我正在編寫一個應用程序,用戶將輸入不同語言的數據到TcxGrid中。爲了方便輸入不在普通鍵盤上的按鍵(á或¿),我決定添加用戶添加按鈕的功能,當按下按鈕時會直接發送一個字符到網格。發送密鑰到組件
基本上按鈕被按下,按鈕上的標題是發送到網格的字符。現在我唯一的方法是獲取活動網格單元格,在那裏複製文本,追加要添加的字符,然後將網格值設置爲新字符串。這似乎並不理想。
任何想法在乾淨的方式來做到這一點?
我正在編寫一個應用程序,用戶將輸入不同語言的數據到TcxGrid中。爲了方便輸入不在普通鍵盤上的按鍵(á或¿),我決定添加用戶添加按鈕的功能,當按下按鈕時會直接發送一個字符到網格。發送密鑰到組件
基本上按鈕被按下,按鈕上的標題是發送到網格的字符。現在我唯一的方法是獲取活動網格單元格,在那裏複製文本,追加要添加的字符,然後將網格值設置爲新字符串。這似乎並不理想。
任何想法在乾淨的方式來做到這一點?
如果您可以獲取控件的句柄,則可以將消息發佈到指示鍵入的控件。
PostMessage(Edit1.Handle, WM_CHAR, Ord('A'), 0);
我敢肯定有一個滑頭的方式來做到這一點,但我得到了你的人物在做這關使用「字符映射表」中:
const
testchar1 = 'Á';
testchar2 = '¿';
begin
PostMessage(Edit1.Handle, WM_CHAR, Ord(testchar1), 0);
PostMessage(Edit1.Handle, WM_CHAR, Ord(testchar2), 0);
end;
如果你需要虛擬掃描碼,使用WM_KEYDOWN和WM_KEYUP消息。
Windows已經有這方面的設施。爲什麼重新發明輪子? – 2013-05-02 22:48:38
如果用戶使用任何頻率鍵入的語言,則用戶將簡單地切換到操作系統中的該鍵盤佈局,並且「鍵」將是多餘的。如果它是用戶通常不會輸入的語言,那麼您提供的「鍵」可能也不會被使用;相反,用戶會去找到一個網站或文件與所需的文字,複製和粘貼。這是用戶實際上對您的產品要求的東西,還是您正在爲解決問題尋找解決方案? – 2013-05-02 23:11:28
在操作系統中切換鍵盤佈局會很快乏味。這個想法是讓用戶能夠用英文輸入一個短語,然後將同一短語翻譯成另一種語言。對於短語來說,複製和粘貼可能會有相當大的用處,但添加外來字符的快速簡單方法似乎對我來說是個好主意。 @DavidHeffernan:你的意思是虛擬屏幕鍵盤以外的東西嗎? – Sentient 2013-05-03 18:01:30