TWinControl 的 ImeName 屬性的問題? |
答題得分者是:Chance36
|
skurama
中階會員 發表:88 回覆:127 積分:73 註冊:2002-07-22 發送簡訊給我 |
目前小弟的程式中,不知道在何種情況下,
有 ImeName 屬性都被設定為預設的輸入法。
導致客戶端使用者換回英文輸入法時,
Focus 到另一個元件後,又變回預設的輸入法。
因為數量太多,想說在Form Create 後用取得元件屬性的方法,
將 ImeName 清掉,程式如下: 程式來自:http://delphi.ktop.com.tw/topic.php?TOPIC_ID=25407 uses
...., TypInfo; procedure TForm1.FormCreate(Sender: TObject);
var
i: integer;
begin
for i := 0 to ComponentCount-1 do
if Assigned(GetPropInfo(Components[i],'ImeName')) then
(Components[i] as TWinControl).ImeName := '';
end; 問題來了,TWinControl 雖然有 ImeName 的屬性,
但是宣告在 protect ,導致不能直接使用,
但是因為使用類別太多,不可能一個一個判斷,
ex : as Tedit, as TDBEdit, as DBGrid 等... 請問:
因為已在上一行判斷該元件是否有ImeName的屬性了,
有沒有方法可以類似騙過 Delphi 說,
Components[i] 是有 ImeName 而不需透過 as 為另一個 Class 的方法,
即 Components[i].ImeName := '' 的方法。 ----------------
昂首千丘遠,
嘯傲風間,
堪尋敵手共論劍,
高處不甚寒!
----------------
------
---------------- 初出芧房程設師, 左鍵右鼠寫程式, 日扣夜寫眼框溼, 望能早成系分師。 ---------------- |
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
|
skurama
中階會員 發表:88 回覆:127 積分:73 註冊:2002-07-22 發送簡訊給我 |
感謝 Chance36 目前改為
var
i: integer;
begin
for i := 0 to ComponentCount-1 do
if Assigned(GetPropInfo(Components[i],'ImeName')) then
SetPropValue(Components[i], 'ImeName', ''); 即可~~~ ----------------
昂首千丘遠,
嘯傲風間,
堪尋敵手共論劍,
高處不甚寒!
----------------
------
---------------- 初出芧房程設師, 左鍵右鼠寫程式, 日扣夜寫眼框溼, 望能早成系分師。 ---------------- |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |