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

ComboBox下拉時滑鼠移動該如何觸發事件?

缺席
adonis
高階會員


發表:140
回覆:258
積分:159
註冊:2002-04-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-27 16:31:32 IP:61.62.xxx.xxx 未訂閱
如何實作出ComboBox於下拉時滑鼠移動至下拉資訊中的任一項尚未點選時可以觸發事件?謝謝。
------
我也在努力學習中,若有錯謬請見諒。
jest0024
高階會員


發表:11
回覆:310
積分:224
註冊:2002-11-24

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-03-27 17:48:05 IP:210.66.xxx.xxx 未訂閱
引言: 如何實作出ComboBox於下拉時滑鼠移動至下拉資訊中的任一項尚未點選時可以觸發事件?謝謝。
OnDropDown
adonis
高階會員


發表:140
回覆:258
積分:159
註冊:2002-04-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-03-27 21:25:40 IP:61.62.xxx.xxx 未訂閱
jest0024, 您好    OnDropDown 由help中所提及 
Occurs when the user opens the drop-down list by clicking the arrow at the right of the control. 
應該是在該ComboBox裡頭有Item時當ComboBox被點選下拉時就立即被觸發了,並不是我所問當其下拉之後 滑鼠移動到其相關的下拉資訊時才觸發。所以好像並不能用來解決我所提問的問題。
------
我也在努力學習中,若有錯謬請見諒。
jest0024
高階會員


發表:11
回覆:310
積分:224
註冊:2002-11-24

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-03-27 22:31:04 IP:210.66.xxx.xxx 未訂閱
引言: jest0024, 您好 OnDropDown 由help中所提及
Occurs when the user opens the drop-down list by clicking the arrow at the right of the control. 
應該是在該ComboBox裡頭有Item時當ComboBox被點選下拉時就立即被觸發了,並不是我所問當其下拉之後 滑鼠移動到其相關的下拉資訊時才觸發。所以好像並不能用來解決我所提問的問題。
意思搞錯了!! 如果要攔劫在TcomboBox下拉方塊中 要從OnDrawItem不過首先要將Style設成自訂繪製模示. 但如果不想修改Style的話,就須攔劫WndProc來自訂事件了!
方法一:
 style:=csOwnerDrawFixed;
 procedure OnDrawItem(....
 begin
   if odFocused in State then begin
     //自訂事件
   end;
 end;
方法二:
type
  TComboBox = class(StdCtrls.TComboBox)
  public
    procedure WndProc(var Msg:TMessage);override;
  end;    procedure TComboBox.WndProc(var Msg:TMessage);
begin
  inherited;
  if Msg.Msg=WM_CTLCOLORLISTBOX then begin
    //自訂事件
  end;
end;    
adonis
高階會員


發表:140
回覆:258
積分:159
註冊:2002-04-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-03-28 12:36:24 IP:61.62.xxx.xxx 未訂閱
jest0024, 您好 我用了方法一去試,卻發現下拉出來的選單竟變成空的,不知該如何解決? 而且此時就算給定 ComboBox.Hint := 'Test' 於任何一選定的下拉資訊中也不會秀出提示,不知哪裡出了問題,煩請幫忙,謝謝。
------
我也在努力學習中,若有錯謬請見諒。
jest0024
高階會員


發表:11
回覆:310
積分:224
註冊:2002-11-24

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-03-28 20:41:30 IP:211.74.xxx.xxx 未訂閱
引言: jest0024, 您好 我用了方法一去試,卻發現下拉出來的選單竟變成空的,不知該如何解決? 而且此時就算給定 ComboBox.Hint := 'Test' 於任何一選定的下拉資訊中也不會秀出提示,不知哪裡出了問題,煩請幫忙,謝謝
指定OnDrawItem必須重繪,參考TComboBox做法..
ComboBox1.Canvas.FillRect(Rect);
if(Index>=0)then
  ComboBox1.Canvas.TextOut(Rect.Left   2, Rect.Top, ComboBox1.Items[Index]);
jest0024
高階會員


發表:11
回覆:310
積分:224
註冊:2002-11-24

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-03-28 20:46:33 IP:211.74.xxx.xxx 未訂閱
附註: ComboBox1.Hint:='TEST'; //^==是指向combobox才會顯示,並非指向combobox的List畫面
adonis
高階會員


發表:140
回覆:258
積分:159
註冊:2002-04-15

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-04-01 22:20:01 IP:61.64.xxx.xxx 未訂閱
如果要讓Hint出現在滑鼠移動到下拉的資訊上可能嗎?也就是說當滑鼠移至下拉資訊的任一項時能夠觸發Hint嗎? 如果不行,有其它變通或處理的方法嗎?
------
我也在努力學習中,若有錯謬請見諒。
jest0024
高階會員


發表:11
回覆:310
積分:224
註冊:2002-11-24

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-04-02 18:27:30 IP:211.74.xxx.xxx 未訂閱
引言: 如果要讓Hint出現在滑鼠移動到下拉的資訊上可能嗎?也就是說當滑鼠移至下拉資訊的任一項時能夠觸發Hint嗎? 如果不行,有其它變通或處理的方法嗎?
事件會造成combobox的list回捲!!
adonis
高階會員


發表:140
回覆:258
積分:159
註冊:2002-04-15

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-04-04 23:07:14 IP:61.62.xxx.xxx 未訂閱
引言:事件會造成combobox的list回捲!!
有其它方法可以克服嗎?
------
我也在努力學習中,若有錯謬請見諒。
jest0024
高階會員


發表:11
回覆:310
積分:224
註冊:2002-11-24

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-04-05 13:34:44 IP:211.74.xxx.xxx 未訂閱
引言:
引言:事件會造成combobox的list回捲!!
有其它方法可以克服嗎?
小弟才疏學淺,並不會捏,以下是小弟的概念尚未實作!
1.Combobox建立時會建立2個物件,一個是Edit另一個是ComboLBox
  顯示資料是在ComboLBox上,必須攔劫這個的事件,但因comboLbox是屬於系
  統標準元件,尚未攔劫過..~"~!!有沒有人教我捏?!
2.這是實作過的.建立Form表格來顯示hint,但是form表格會顯示在comboLbox
  底下,而且使用show顯示的話會造成回捲,必須先建立後,將width=1  
  height=0,將畫面放大,縮小,這樣combolbox不會回捲。
3.第2種方法比較好實作,但是顯示位置必須不能在combolbox底下,不然會擋住
  ,第1種...想辦法中!!
想買台TPC..TTAB-B12D
系統時間:2024-06-02 0:55:05
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!