CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

一百五十分!!!从DBGrid拖动项目到ListView/TreeView,能否实现?

楼主bisc_sunny(总是当时携手处,游遍芳丛)2001-06-17 09:37:00 在 Delphi / VCL组件开发及应用 提问

rt  
   
  一百五十分!!! 问题点数:150、回复次数:12Top

1 楼bisc_sunny(总是当时携手处,游遍芳丛)回复于 2001-06-17 09:39:00 得分 0

一定要可用的例子才成哦Top

2 楼bisc_sunny(总是当时携手处,游遍芳丛)回复于 2001-06-18 09:29:00 得分 0

大家帮忙Top

3 楼Muf(沐枫)回复于 2001-06-18 11:12:00 得分 20

(1)   DBGrid   在Mouse按下时,会选中当前记录,因此实现OnMouseDown如下:  
  procedure   TCmpList.ListGridMouseDown(Sender:   TObject;   Button:   TMouseButton;  
      Shift:   TShiftState;   X,   Y:   Integer);  
  begin  
      if   not(ssDouble   in   Shift)   then  
      begin  
          ListGrid.BeginDrag(false,5);  
      end;  
  end;  
  ListGrid为TDBGrid类型的实体。  
   
  (2)实现TTreeView/TListView的OnDragOver事件,以指定是否接受拖过来的值。  
  procedure   TMchForm.FDTDragOver(Sender,   Source:   TObject;   X,   Y:   Integer;  
      State:   TDragState;   var   Accept:   Boolean);  
  begin  
      if   Source   is   TDBGrid   then     //您可以再加入其它条件  
              Accept   :=   true;  
  end;  
   
  (3)   最重要的,是要实现TTreeView/TListView的OnDragDrop事件。  
   
  procedure   TMchForm.FDTDragDrop(Sender,   Source:   TObject;   X,   Y:   Integer);  
  var  
      s:   String;  
      ListItem:   TListItem;  
      i,j:   Integer;  
   
  begin  
          with   Source   as   TDBGrid   do  
          begin  
   
              if   SelectedRows.Count>0   then  
              with   DataSource.DataSet   do  
                  for   i:=0   to   DBGrid1.SelectedRows.Count-1   do  
                  begin  
                      GotoBookmark(pointer(DBGrid1.SelectedRows.Items[i]));  
                      for   j   :=   0   to   FieldCount-1   do  
                      begin  
   
                          if   (j>0)   then   s:=s+',   ';  
                          s:=s+Fields[j].AsString;  
                      end;  
                      with   ListView1   do  
                      begin  
                          ListItem   :=   Items.Add;  
                          ListItem.Caption   :=   s;  
                      end;  
                      s:=   '';  
                  end;  
              end;  
   
  end;  
   
  Top

4 楼bisc_sunny(总是当时携手处,游遍芳丛)回复于 2001-06-18 12:54:00 得分 0

谢谢Muf,程序思路很清楚,但我为什么拉DbGrid不动?Top

5 楼bisc_sunny(总是当时携手处,游遍芳丛)回复于 2001-06-18 12:58:00 得分 0

一旦把DragMode设作   Auto,就没法拖动了~为什么为什么?Top

6 楼bisc_sunny(总是当时携手处,游遍芳丛)回复于 2001-06-18 13:17:00 得分 0

真要命,Muf兄,各位高手,帮忙阿!  
   
  UP!UP!Top

7 楼bisc_sunny(总是当时携手处,游遍芳丛)回复于 2001-06-18 13:27:00 得分 0

upTop

8 楼bisc_sunny(总是当时携手处,游遍芳丛)回复于 2001-06-18 14:16:00 得分 0

upTop

9 楼martix(微尘)回复于 2001-06-18 14:41:00 得分 0

我也帮你UP一下!Top

10 楼bisc_sunny(总是当时携手处,游遍芳丛)回复于 2001-06-18 20:16:00 得分 0

up   againTop

11 楼weenyboy(也许是偶老婆)回复于 2001-06-18 20:50:00 得分 130

procedure   TForm1.TreeView1DragOver(Sender,   Source:   TObject;   X,   Y:   Integer;  
      State:   TDragState;   var   Accept:   Boolean);  
  begin  
      Accept   :=   Source   is   TDBGrid;  
  end;  
   
  procedure   TForm1.TreeView1DragDrop(Sender,   Source:   TObject;   X,   Y:   Integer);  
  var  
      Node:   TTreeNode;  
  begin  
      Node   :=   TreeView1.GetNodeAt(X,   Y);  
      TreeView1.Items.AddChild(Node,ADOTable1.Fields[0].AsString);  
      if   Assigned(Node)   then  
          Node.Expand(True);  
  end;  
   
  procedure   TForm1.DBGrid1DragOver(Sender,   Source:   TObject;   X,   Y:   Integer;  
      State:   TDragState;   var   Accept:   Boolean);  
  begin  
      Accept   :=   Source   is   TDBGrid;  
  end;  
   
  procedure   TForm1.DBGrid1MouseMove(Sender:   TObject;   Shift:   TShiftState;   X,  
      Y:   Integer);  
  begin  
      if   ssLeft   in   Shift   then  
          DBGrid1.BeginDrag(True);  
  end;  
  Top

12 楼bisc_sunny(总是当时携手处,游遍芳丛)回复于 2001-06-27 20:38:21 得分 0

给分给分,一分不少!Top

相关问题

  • TreeView拖动问题
  • ListView条目拖动
  • 如何实现从LISTVIEW中一次拖动多个ITEM到TREEVIEW中来???(内空)
  • 急急急!!!高手帮忙----怎样使TreeView,ListView控件的大小能拖动
  • 如何在目标控件中(listview或treeview)获知拖动多个listItem的text?
  • 如何使用listview列表项目或treeview节点的OLE拖动?
  • 简单:ListView 的拖动?????
  • TreeView的拖动问题。
  • TreeView 节点拖动问题
  • 如何拖动TreeView节点

关键词

  • source
  • dbgrid
  • treeview
  • tdragstate
  • tdbgrid
  • tobject
  • selectedrows
  • 实现
  • accept
  • begin

得分解答快速导航

  • 帖主:bisc_sunny
  • Muf
  • weenyboy

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo