这个关于 ListView 的问题有点难!100分送你! (100分)

  • 主题发起人 主题发起人 qby
  • 开始时间 开始时间
Q

qby

Unregistered / Unconfirmed
GUEST, unregistred user!
ListView的StateImages属性已设置为ImageList1,我现在想:当点击
ListView中某一项(Item)的StateImage小图标时,就弹出对话框,而在点
击这一项别的部分时,不作动作。咋整?谢谢!!!
 
if listview1.selected<>nil then
 
如果要非常精确控制位置的话:

ListView_GetItemRect等Commctrl单元的ListView_xxxxx的API会用的上!
 
procedure TForm1.ListView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
htOnStateIcon in ListView1.GetHitTestInfoAt(X,Y) then
ShowMessage('You Click StateIcon');
end;
 
不好意思,写掉了:)
procedure TForm1.ListView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if htOnStateIcon in ListView1.GetHitTestInfoAt(X,Y) then
ShowMessage('sss');
end;
 
應該比較簡單,說明白點
 
你的意思是不是???

==========================
图片1 我的苏维埃
图片2 我的共青团
图片3 我的老黄牛
...
==========================
如上点图片1或图片2或图片3就弹
?????????
是不是这个意思???
 
呆四少, 的做法 是 标准 的 做法。
 
接着里我也问个问题如果对于TREEVIEW怎么办呢
点项目时弹出POP菜单,点TREEVIEW的空白区域弹出另一个POP菜单
用SELECTED<>NIL是不行的,因为在空白区点,TREEVIEW仍然处于
有选择的状态.那么就必须判断这一点,到底点在项目还是非项目上
怎么办呢?
 
to 火龙真人:
TreeView用GetNodeAt(),ListView用GetItemAt()
 
TO 火龙真人(给你一个例子)
procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
tmpNode:TTreeNode;
begin
tmpNode:=TreeView1.GetNodeAt(X,Y);
if tmpNode=nil then
ShowMessage('你点击了空白区')
else ShowMessage(tmpNode.Text);
end;
 
真是高手高手高高手,让我怎么说好呢
都没给你们钱真不好意思。呵呵
 

Similar threads

后退
顶部