Listbox Click 和 KeyDown 要怎麼配合使用? |
答題得分者是:sos_admin
|
cherry
一般會員 發表:16 回覆:26 積分:8 註冊:2002-06-28 發送簡訊給我 |
各位好 :) 我在Listbox Click 寫了一些功能
如果利用鍵盤上下鍵操作會一直觸發
所以利用 keydown 判斷
(裡面放個timer 判斷時間長短
如果超過半秒才觸發此事件) 現在的狀況是不到半秒就觸發了
不知道那裡出了問題
想請大家幫忙看一下, 謝謝~~ [動作]
ListBox1Click-> Timer1Timer(sender)->Action_RunExecute(Sender); procedure TForm1.ListBox1Click(Sender: TObject);
begin
Timer1Timer(sender);
end; procedure TForm1.Timer1Timer(Sender: TObject);
begin
Action_RunExecute(Sender);
Timer1.Enabled := False;
end; procedure TForm1.ListBox_TblKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (Key = VK_UP) or (Key = VK_Down) then
begin
Timer1.Enabled := True;
end
else
exit;
end; procedure TForm1.Timer1Timer(Sender: TObject);
begin
BitBtn2.Caption := Item 'now';
BitBtn1.Caption := 'trigger';
end; procedure TForm1.Action_RunExecute(Sender: TObject);
begin
Frame_Table.Panel_Top.Height := 25;
Frame_Table.Panel_Top.Caption := Item;
Frame_Table.Btn.Visible := false;
Frame_Table.ConnectDB(Item, sConnection);
end;
|
sos_admin
版主 發表:121 回覆:697 積分:768 註冊:2003-07-23 發送簡訊給我 |
|
syntax
尊榮會員 發表:26 回覆:1139 積分:1258 註冊:2002-04-23 發送簡訊給我 |
建議你不要這樣做
用 Timer 來管理是否執行並不恰當 [動作]
ListBox1Click->if dBActive = False then set dBActive = true -> Action_RunExecute(Sender);
else do nothing
after connect closed or, whenever u want, put the "dbActive := False" to make accessible to Action_RunExecute()
var dBAcvive: Boolean;//** u do not need a TTimer , u only need is a Boolean variable and this make u shorter code then use TTimer ... ... ... ... procedure TForm1.ListBox_TblKeyDown(Sender: TObject; var Key: Word;Shift: TShiftState); begin if (not dBActive) and ((Key = VK_UP) or (Key = VK_Down)) then begin dBActvie := True; BitBtn2.Caption := Item 'now'; BitBtn1.Caption := 'trigger'; Action_RunExecute(Sender); dBActive := False;//** put this to connect colsed or wherever u want end else brgin //** 做本來鍵盤應該做的事 end; end; procedure TForm1.Action_RunExecute(Sender: TObject); begin Frame_Table.Panel_Top.Height := 25; Frame_Table.Panel_Top.Caption := Item; Frame_Table.Btn.Visible := false; Frame_Table.ConnectDB(Item, sConnection); end; |
cherry
一般會員 發表:16 回覆:26 積分:8 註冊:2002-06-28 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |