TreeView的拖曳 |
尚未結案
|
kaiming
一般會員 發表:6 回覆:11 積分:8 註冊:2004-03-01 發送簡訊給我 |
請問各位大大:
要怎麼在TreeView中,做出拖曳節點的效果呢?!
就是可以將A節點以及他底下的所有子節點全部用拖曳的拉到B節點下! 還有~
我有看到一段關於TreeView的拖曳,但是是用Delphi寫的...
但在紅色的部份我看不大懂...
有哪位高手可以幫我將它翻成BCB的語法呢? procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
AnItem: TTreeNode;
AttachMode: TNodeAttachMode;
HT: THitTests;
begin
if TreeView1.Selected = nil then
Exit; HT := TreeView1.GetHitTestInfoAt(X, Y);
AnItem := TreeView1.GetNodeAt(X, Y); if AnItem = nil then
Exit;
if (HT - [htOnItem, htOnRight, htOnIcon, htNowhere, htOnIndent] <> HT) then
begin
AttachMode := naInsert;
if (htOnItem in HT)
or (htOnRight in HT)
or (htOnIcon in HT) then AttachMode := naAddChild
else if htNowhere in HT then AttachMode := naAdd
else if htOnIndent in HT then AttachMode := naInsert;
TreeView1.Selected.MoveTo(AnItem, AttachMode);
end;
end; 發表人 - kaiming 於 2005/07/07 22:33:04
|
bass15
高階會員 發表:24 回覆:171 積分:119 註冊:2003-10-27 發送簡訊給我 |
關於移動節點到其他節點下, 請參考下列程式:
void __fastcall TForm1::TreeView1DragOver(TObject *Sender, TObject *Source, int X, int Y, TDragState State, bool &Accept) { // if(Source!= TreeView1 || !TreeView1->Selected) Accept =false; else { TTreeNode* tn = TreeView1->DropTarget; if(tn && !tn->HasAsParent(TreeView1->Selected)) Accept =true; else Accept =false; } } //--------------------------------------------------------------------------- void __fastcall TForm1::TreeView1DragDrop(TObject *Sender, TObject *Source, int X, int Y) { if(Source!= TreeView1 || !TreeView1->Selected) return; TTreeNode* tn = TreeView1->DropTarget; if(tn && !tn->HasAsParent(TreeView1->Selected)) TreeView1->Selected->MoveTo(tn,naAddChild); }另外...HT的問題...他是判斷你拖曳的位置是否在點上,來判斷說要移到跟點同一層還是他下一層還是最頂層..相關程式請參閱BCB Help..如下: void __fastcall TForm1::TreeView1DragDrop(TObject *Sender, TObject *Source, int X, int Y) { if (Source != (TObject *)TreeView1 || TreeView1->Selected == NULL) return; THitTests HT = TreeView1->GetHitTestInfoAt(X, Y); TNodeAttachMode AttachMode; TTreeNode *pItem = TreeView1->GetNodeAt(X, Y); if (HT.Contains(htOnItem) || HT.Contains(htOnIcon)) AttachMode = naAddChild; else if (HT.Contains(htNowhere)) AttachMode = naAdd; else if (HT.Contains(htOnIndent)) AttachMode = naInsert; else return; TreeView1->Selected->MoveTo(pItem, AttachMode); } |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |