请问如何能够实现将一个DBGrid中所显示的某一条纪录通过拖放将它加到另一个DBGrid中?

magicsnake 2001-07-14 11:30:53
加精
我的数据库采用的是MS SQL,用ADOQuery控件和DataSource组件进行表的连接。
现在我无法解决:怎样才能判断我的鼠标在DBGrid框中选中的记录是那一条?也就是拖放开始的源我不能确定,以至于不能在另一个表中进行纪录添加。
我是一位初学者,请各位高手们赐教,谢谢!
...全文
122 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
magicsnake 2001-07-17
  • 打赏
  • 举报
回复
谢谢,在大家的帮助下问题得到了解决
magicsnake 2001-07-14
  • 打赏
  • 举报
回复
请问这个DBGrid指针怎么用??如何在DBGrid1MouseDown事件中判断是否选中了这条指针纪录?
DBGrid指针中包括有BeginDrag这个方法么?因为我的DragMode采用的是dmManual模式,需要判断拖动是否开始,原来我在DBGrid1MouseDown事件中是这样用的:
if (Button==mbLeft)
{
TDBGrid *DBGrid1=(TDBGrid *)Sender;
DBGrid1->BeginDrag(false,2);
}
可是这样只能判断选中了这个控件,无法确定选中的是哪条纪录,这样到后面就无法写数据了。
请指教。
Chxis 2001-07-14
  • 打赏
  • 举报
回复
有必要确定吗?

不是mouse点了那个,dbgrid的指针就指向那条记录吗?
Wingsun 2001-07-14
  • 打赏
  • 举报
回复
下午给你代码。
FANGAO 2001-07-14
  • 打赏
  • 举报
回复
强烈关注
gqxs 2001-07-14
  • 打赏
  • 举报
回复
up
Wingsun 2001-07-14
  • 打赏
  • 举报
回复
下面是一段Delphi的代码,你看一看,改一改就可以了。

dbgList、dbgList1分别是连个DBGrid

procedure TForm1.dbgListDragDrop(Sender, Source: TObject; X, Y: Integer);
var i,j:Integer;
begin
if Source = dbgList1 then begin
dbgList.DataSource.DataSet.DisableControls;
dbgList1.DataSource.DataSet.DisableControls;
dbgList.SaveBookmark;
if dbgList1.Selection.SelectionType = gstRecordBookmarks then
for i := 0 to dbgList1.SelectedRows.Count-1 do
begin
dbgList1.DataSource.DataSet.Bookmark := dbgList1.SelectedRows[I];
dbgList.DataSource.DataSet.Append;
dbgList.DataSource.DataSet.Edit;
for j := 0 to dbgList.DataSource.DataSet.FieldCount-1 do
dbgList.DataSource.DataSet.Fields[j].Value := dbgList1.DataSource.DataSet.Fields[j].Value;
dbgList.DataSource.DataSet.Post;
end
else if dbgList1.Selection.SelectionType = gstAll then begin
dbgList1.DataSource.DataSet.First;
while dbgList1.DataSource.DataSet.EOF = False do begin
dbgList.DataSource.DataSet.Append;
dbgList.DataSource.DataSet.Edit;
for j := 0 to dbgList.DataSource.DataSet.FieldCount-1 do
dbgList.DataSource.DataSet.Fields[j].Value := dbgList1.DataSource.DataSet.Fields[j].Value;
dbgList.DataSource.DataSet.Post;
dbgList1.DataSource.DataSet.Delete;
end;
dbgList1.Selection.Clear;
end;
dbgList.RestoreBookmark;
dbgList1.SelectedRows.Delete;
dbgList1.DataSource.DataSet.Refresh;
dbgList1.DataSource.DataSet.EnableControls;
dbgList.DataSource.DataSet.EnableControls;
end;
end;
sjz9521 2001-07-14
  • 打赏
  • 举报
回复
应该是可以的吧,你选中一条记录的话,可以找到这条记录中具有唯一性字段的值啊比如是
第一个字段为唯一的话,可以取出值

ADOQuery->Fields->Fields[0]->AsString;

13,874

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧