線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1364
推到 Plurk!
推到 Facebook!

Listbox Click 和 KeyDown 要怎麼配合使用?

答題得分者是:sos_admin
cherry
一般會員


發表:16
回覆:26
積分:8
註冊:2002-06-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-10-16 11:41:52 IP:211.23.xxx.xxx 未訂閱
各位好 :) 我在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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-10-16 13:21:50 IP:61.155.xxx.xxx 未訂閱
procedure TForm1.ListBox1KeyDown(Sender: TObject; var Key: Word;   Shift: TShiftState); begin if (Key = VK_UP) or (Key = VK_Down) then  Timer1.Enabled := True; end;    procedure TForm1.Timer1Timer(Sender: TObject); begin //这句放在前面
syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-10-16 17:52:01 IP:203.222.xxx.xxx 未訂閱
建議你不要這樣做 用 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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-10-17 00:29:40 IP:61.64.xxx.xxx 未訂閱
感謝sos_admin和syntax提供的方法 ^^ 這兩個方法我都有試過~ 發現sos_admin的方法 比較合乎我的功能 所以分數就給sos_admin囉...
系統時間:2024-06-02 3:50:35
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!