如何好好控制TAB鍵.... |
尚未結案
|
sprewell
一般會員 發表:13 回覆:21 積分:6 註冊:2003-11-10 發送簡訊給我 |
各位大大: Keyreview屬性攔截不到子元件的TAB鍵, 若我想控制整個FORM的TAB事件,讓他依照我的判斷來決定ACTIVECONTROL為何, 該如何處理? 而且我發現TDBGRID在KEYDOWN事件又好像可以攔到TAB鍵, 其他元件如TEDIT等卻不行?? 另外好像只要設定了tabstop = true後, 不管我在KEYDOWN事件把ACTIVECONTROL給誰...還是會被tab order搶走...跳到下一個tab order的元件..>< 之前有大大提到可以利用TAPPLICATIONEVENTS處理,可以在說明一下嘛?? procedure TCounterFrm.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (key = VK_TAB) then begin
key := 0;
ControlTab;
end;
end; procedure TCounterFrm.ControlTab;
begin
if (CounterDM.OrderDetailTable.IsEmpty) then begin
if (ActiveControl = CustTel) then begin
OrderDetailDBGrid.SelectedIndex := 0;
end
else begin
ActiveControl := CustTel;
end;
end
else begin
if (ActiveControl = DBGetDate) then begin
ActiveControl := OrderDeposit;
end
else if (ActiveControl = OrderDeposit) then begin
OrderDetailDBGrid.SelectedIndex := 0;
ActiveControl := OrderDetailDBGrid;
end
else begin
ActiveControl := DBGetDate;
end;
end;
end; 感謝...!! Delphi....我真的是摸不透你阿!!
|
pedro
尊榮會員 發表:152 回覆:1187 積分:892 註冊:2002-06-12 發送簡訊給我 |
sprewell您好
直接處理ApplicationEvents.OnMessages
參考看看
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean); begin case Msg.message of wm_keydown: begin Memo1.Lines.Add(IntToStr(msg.wParam)); if msg.wParam=vk_tab then showMessage('tab key press'); end; end; end; |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |