Wolfgang Chien's Homepage | Delphi學習筆記 - 問答篇 |
Hi 各位網友
小弟有一個問題 一直無法解決 希望能得到網友的幫忙
我在一個TDBedit中想協助user輸入住址 例如user用鍵盤輸入民權後 只要按f1程式自動加入 路; 按f2程式自動加入 街
我的作法是: 在DBEdit1的onKeyDown中:
procedure TForm2.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key=112 then {f1的key值為112} edit1.text:=edit1.text+'路'; end;
如些雖可作到 但遇到游標跑到最前面去了, 如何能控制游標 使它能跑到最後面呢? 是不是要用windowsAPI 呢?
有沒類以按下end鍵讓游標移到最後面的方法呢?
可以不用 WinAPI, 元件本身的功能已經可以達到您要的效果.
昨天, 小弟提出的 TOvrMemo, TOvrDbMemo 元件, 是透過改變 SelLength 的值來完成輸入時覆寫的目的, 可能張兄您太忙還沒有讀.
以我來想這個題目, 最偷懶的方式也是用 SelLength, 但是這次改成將SelLength 設為零, 然後將 SelText 的內容設為要插入的文字, 利用元件現有的功能來完成想要的目的, 沒有介入原元件的內部運作.
例如下面這段 EditBox 的 OnKeyDown 事件:
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin case Key of VK_F2: begin Edit1.SelLength := 0; Edit1.SelText := '路'; end; VK_F3: begin Edit1.SelLength := 0; Edit1.SelText := '街'; end; { ... } end; end;
彫 sellength 設為零,
將 SelStart 改成, EditBox 內容的字串長度, 游標移到最後.
Edit1.SelLength := 0; Edit1.SelStart := Length(Edit1.Text);
以上的實作方式, 因為小弟功力還不夠, 沒有介入太多的元件內部運作, 只有透過元件提供的界面去變化出想要的功能, 呃, 坦白說, 的確蠻取巧的. :p
首頁 | 學習筆記 | 主題公園 | 軟體下載 | 關於本站 | 討論信群 | 相約下次 |