Enter&Tab 問題 |
尚未結案
|
JamesLiang
初階會員 發表:54 回覆:78 積分:31 註冊:2003-02-13 發送簡訊給我 |
|
hahalin
版主 發表:295 回覆:1698 積分:823 註冊:2002-04-14 發送簡訊給我 |
引言: 請教先進..delphi在預設的狀態是使用tab來移動欄位的順序,但我看過使用enter鍵也有同樣的效果,請問是如何做的? 多謝在keypress判斷來源是否為enter鍵, 然後進行移動欄位的動作, 若目前focus control為dbgrid類型則移動到下一個cell 若目前focus control為memo或richedit類型則維持換行的動作, 美國的erp多如牛毛,哇,想必很是精采, 可否多推薦幾家呢,是否能附上網址. 發表人 - hahalin 於 2003/03/23 15:38:36 |
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
Form 的 Preview Key 設 True
確定所有 Button 的 Default 設 False 設好Form 的 OnKeyPress :
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = vk_Return then if (Form1.ActiveControl IS TCustomMemo) or (Form1.ActiveControl IS TCustomGrid) then exit else Form1.ActiveControl := Form1.FindNextControl(Form1.ActiveControl,true,true,true); end;你可能要因應你用的元件再作修改。 其實當初 Windows 95 開始取代 DOS 就一直引起不少爭論,究竟使用 DOS 用家習慣使用的 Enter 跳欄位好還是 使用 Window 新標準 Tab 好。但後來由於越來越多人使用 Windows 的其他不同軟件,使用 Enter 反而會令使用者慢慢覺得格格不入,所以現在已經很少人會用 Enter 了。 |
T.J.B
版主 發表:29 回覆:532 積分:497 註冊:2002-08-14 發送簡訊給我 |
假設dbgrid 有5個欄位
你可以在dbgrid的onkeypress事件寫
if (DBGrid1.SelectedIndex = 0) and (key = #13) then DBGrid1.SelectedIndex := 1 else if (DBGrid1.SelectedIndex = 1) and (key = #13) then DBGrid1.SelectedIndex := 2 else if (DBGrid1.SelectedIndex = 2) and (Key = #13) then DBGrid1.SelectedIndex := 3 else if (DBGrid1.SelectedIndex = 3) and (Key = #13) then DBGrid1.SelectedIndex := 4 <--最後一欄 else if (DBGrid1.SelectedIndex = 4) and (Key = #13) then begin query1.next; <---跳下一筆 DBGrid1.SelectedIndex := 0 ; <-- 跳第一欄 if query1.Eof then <--如果是最後一筆 begin query1.first; <---跳回第一筆 DBGrid1.SelectedIndex := 0;<-- 跳第一欄 end; end;天行健 君子當自強不息~~@.@
------
天行健 君子當自強不息~~@.@ |
joseph110
一般會員 發表:19 回覆:28 積分:9 註冊:2002-09-05 發送簡訊給我 |
|
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
|
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
|
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
提供另一個做法
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key <> #13 then exit;
if not (ActiveControl is TDBGrid) then
begin
Key := #0;
Perform(WM_NEXTDLGCTL, 0, 0);
exit;
end;
end;
TYR TRY SEE
引言: 請教先進..delphi在預設的狀態是使用tab來移動欄位的順序,但我看過使用enter鍵也有同樣的效果,請問是如何做的? 多謝 |
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
引言: 請教先進..delphi在預設的狀態是使用tab來移動欄位的順序,但我看過使用enter鍵也有同樣的效果,請問是如何做的? 多謝試試 : procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char); begin if (Key=#13) then begin Key := #0; // 吃掉 [Enter] TControl(Sender).perform(WM_KEYDOWN,9,0); TControl(Sender).perform(WM_KEYUP,9,0); end; end;吃掉 [Enter] 可能會造成操作介面不流暢喔. 也可以考慮不要Key := #0; 最好再搭配 DataSet.State 加以判斷. /* Free 和 Create 一樣重要 */ 發表人 - Mickey 於 2003/03/24 18:13:48 |
cmj
高階會員 發表:15 回覆:242 積分:226 註冊:2002-06-12 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |