全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2145
推到 Plurk!
推到 Facebook!

有關TTreeView

 
Q_User
一般會員


發表:1
回覆:1
積分:0
註冊:2002-04-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-04-24 16:41:22 IP:211.74.xxx.xxx 未訂閱
==原因== 在TTreeView裡要拖曳TTreeNode,(資料區超過畫面而出現ScrollBar) 但當我拖至最上方或最下方時,sCrollBar卻動也不動, 使得拖曳動作只能受限於畫面,而無法概括整個資料區    ==問題== 當物件拖至邊界時,該如何讓畫面捲動呢?    == Try and Error == 我試著在DragOver的Event中寫:    if Y<=0 then        //移到畫面上邊界    VertScrollBar.Position :=VertScrollBar.Position -10; else if Y >= tTreeView1.ClientHeight then   //移到畫面下邊界           VertScrollBar.Position :=VertScrollBar.Position +10;    但發現VertScrollBar是屬於TForm繼承TScrollingWinControl的Property, 所以根本不是控制出現在TTreeView中的ScrollBar, 而且TTreeView也不繼承TScrollingWinControl的Property,    So....我該如何控制出現在TTreeView中的ScrollBar,或其他方法使畫面自動捲動呢?
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-04-25 17:46:21 IP:203.217.xxx.xxx 未訂閱
引言: ==原因== 在TTreeView裡要拖曳TTreeNode,(資料區超過畫面而出現ScrollBar) 但當我拖至最上方或最下方時,sCrollBar卻動也不動, 使得拖曳動作只能受限於畫面,而無法概括整個資料區 ==問題== 當物件拖至邊界時,該如何讓畫面捲動呢? == Try and Error == 我試著在DragOver的Event中寫: if Y<=0 then //移到畫面上邊界 VertScrollBar.Position :=VertScrollBar.Position -10; else if Y >= tTreeView1.ClientHeight then //移到畫面下邊界 VertScrollBar.Position :=VertScrollBar.Position 10; 但發現VertScrollBar是屬於TForm繼承TScrollingWinControl的Property, 所以根本不是控制出現在TTreeView中的ScrollBar, 而且TTreeView也不繼承TScrollingWinControl的Property, So....我該如何控制出現在TTreeView中的ScrollBar,或其他方法使畫面自動捲動呢?
在DragOver的Event中寫 var ht : THitTests; begin ht := TreeView1.GetHitTestInfoAt(X,Y); if htAbove in ht then TreeView1.TopItem:=Treeview1.topitem.GetPrev else if htBelow in ht then TreeView1.TopItem:=Treeview1.topitem.Getnext;
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-04-25 18:52:55 IP:61.219.xxx.xxx 未訂閱
引言: 在DragOver的Event中寫 var ht : THitTests; begin ht := TreeView1.GetHitTestInfoAt(X,Y); if htAbove in ht then TreeView1.TopItem:=Treeview1.topitem.GetPrev else if htBelow in ht then TreeView1.TopItem:=Treeview1.topitem.Getnext;
非常感謝ccchen兄的回覆,我將他改為如下,效果好像更好喔!
procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;  State: TDragState; var Accept: Boolean);
var ht : THitTests;
begin
  if y<=10 then TreeView1.TopItem:=Treeview1.topitem.GetPrev
  else if y>=TreeView1.ClientHeight-10 then
  TreeView1.TopItem:=Treeview1.topitem.Getnext;
end;
~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
Q_User
一般會員


發表:1
回覆:1
積分:0
註冊:2002-04-24

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-04-26 12:40:38 IP:211.74.xxx.xxx 未訂閱
非常感謝ccchen與站長的回應, 我還以為沒有人會理我,一定沒救了.... 你們快速的回應,給我這個剛接觸Delphi不到一年的菜鳥,有很大的幫助. 由衷的感謝你們熱心的回應.... Thanks a lot.
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-04-26 17:32:47 IP:61.219.xxx.xxx 未訂閱
引言: 非常感謝ccchen與站長的回應, 我還以為沒有人會理我,一定沒救了.... 你們快速的回應,給我這個剛接觸Delphi不到一年的菜鳥,有很大的幫助. 由衷的感謝你們熱心的回應.... Thanks a lot.
這都要感謝ccchen兄,本來站長在當天也幫您試了一下,找不到VertScrollBar的繼承關係,原來用topitem的屬性就可解決! ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
系統時間:2017-10-18 20:52:24
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!