如何通过点击LISTVIEW的ITEM来让数据库定位在符合"listview.selected.caption"的记录上(50分)

  • 主题发起人 主题发起人 ipec
  • 开始时间 开始时间
I

ipec

Unregistered / Unconfirmed
GUEST, unregistred user!
请问如何通过点击LISTVIEW的ITEM来让数据库定位在符合"listview.selected.caption"的
的记录上呢?
另:
在LISTVIEW的ONCLICK事件中加入代码,但如果点击到空白处便会出错,如何解决?
 
似乎应当用OnMouseDown事件来取得LISTVIEW的SELECTEDITEM。
你可以看DELPHI的帮助,有一个函数:GetItemAt.
 
OnClick或OnSelectItem
 
判断一下有没有选中node不就行了,不是有个TCustomListView.Selected属性吗,直接判断
一下, if listview1.selected <>nil then 找记录
 
在LISTVIEW的ONCLICK事件中加入代码,但如果点击到空白处便会出错,如何解决?
if listview1.ItemFocused=nil then
begin
showmessage('请选择');
exit;
end
else
begin
//
end;
 
下面的程序用于treeview的拖放控制,应该能满足你的需要.

var
AnItem: TTreeNode;
AttachMode: TNodeAttachMode;
HT: THitTests;
{ 获取鼠标点击区域的信息
THitTest =(htAbove, //客户区域的上部
htBelow, //客户区域的下部
htNowhere, //非客户区域
htOnItem, //点击了项目的Item or Text or bitmap
htOnButton, //点击了项目的Button
htOnIcon, //点击了项目的Icon
htOnLabel, //点击了项目的Label
htOnRight, //点击了项目的Right
htOnIndent, //点击了客户区域的无效部位
htOnStateIcon, //点击了与项目关联的Icon or Bitmap
htToLeft, //项目的Left
htToRight); //项目的Right
}
begin
if TreeView1.Selected = nil then Exit;
{ 获取当前点击处的信息}
HT := TreeView1.GetHitTestInfoAt(X, Y);
{ 取当前获得焦点的Node }
AnItem := TreeView1.GetNodeAt(X, Y);

if (HT - [htOnItem, htOnIcon, htNowhere, htOnIndent] <> HT) then
begin
if (htOnItem in HT) or (htOnIcon in HT) then
begin
AttachMode := naAddChild; //当作子Node Mode
caption :='naAddChild';
end else if htNowhere in HT then
begin
AttachMode := naAdd; //新建Node Mode
Caption :='naAdd';
end else if htOnIndent in HT then
begin
AttachMode := naInsert; //插入Mode,即移动位置。
Caption :='naInsert';
end;
Treeview1.Selected.MoveTo(AnItem, AttachMode); //移动Selected Node to 获得焦点的位置

// if treeview1.Selected.Level>anitem.Level then
// treeview1.Selected.MoveTo(AnItem, AttachMode)
// else showmessage('not');
end;
end;
 
在LISTVIEW的ONCLICK事件中加入代码,但如果点击到空白处便会出错,如何解决?
if listview1.selcount>0 then
begin
showmessage('请选择');
exit;
end
else
begin
//
end;
 
if listview.selected<>nil then
begin
query.local(trim(listview.selected.caption),字段,[]);
end;
 
不需要太复杂,在你的ITEM中的DATA中绑上记录号,然后在使用时在数据库中作个定位即可,
可以适应多种数据类型,ITEM的DATA是一个Pointer类型
 
多人接受答案了。
 
后退
顶部