在TreeView的Onclick和OnDblClick事件中只有sender参数,这时候怎样获取鼠标位置和按键信息?就像mousedown一样
解决方案 »
- 怎么POST此格式的数据类型啊。
- 求助:delphi7下 按UTF-8编码将字符串转换成byte数组
- 关于进程的问题!请高手不吝赐教!谢谢!
- 在delphi中怎样调用windows中的可执行程序?
- 紧急求救!!!! !!关于Query的模糊查询的实现
- 请问哪位大哥有delphi中文帮助档,小弟急需,先谢了
- 在DELPHI中如何设置EDIT中内容随时间两小时改变一次?
- 如何在Midas的客户端使用前期绑定
- 我想用通過一組數據在TChart控件上表示出來﹐就象股票的波形圖一樣﹐請問如何實現﹖﹖
- 各位大侠,create(nil), create(application),create(self),create(tfrom)是什么,恳请讲解
- 请大家提供下相关网址
- 请教,关于dbimage
首先,用GetCursorPos获取鼠标位置
然后,用Windows.ScreenToClient将鼠标位置转换成TreeView的客户区位置就OK了
var APoint: TPoint;
...
GetCursorPos(APoint);
Windows.ScreenToClient(TreeView.Handle, APoint);
var
newid,oldid,jg_mc:string;
idno:real;
MyTreeNode1, MyTreeNode2: TTreeNode;
begin //添加[到站油库名称]到树型目录框
TreeView1.Items.Clear;
with datamodule22.adoquery3 do
begin
close;
sql.clear;
sql.add('select * from inoilstation order by jgno');
open;
first;
idno:=0;
if recordcount >0 then
begin
newid:=FieldValues['jgno'];
oldid:='';
// MyTreeNode1 := TreeView1.Items.Add(nil, newid);
while not eof do
begin
with datamodule22.adoquery2 do //根据NEWID查出表machinery中的机构名称给jg_mc变量
begin
close;
sql.clear;
sql.add('select * from machinery where jgno=:j');
Parameters.ParamByName('j').Value:=newid;
open;
if recordcount >0 then jg_mc:=FieldValues['jgmc']
else
begin
showmessage('机构名称读不到!');
exit;
end;
end;
if newid=oldid then
begin
TreeView1.Items.AddChild(MyTreeNode1,FieldValues['dzmc']);
idno:=idno;
end
else
begin
idno:=idno+1;
MyTreeNode1 := TreeView1.Items.Add(nil, jg_mc);
// MyTreeNode1 := TreeView1.Items.Add(nil, newid);
TreeView1.Items.AddChild(MyTreeNode1,FieldValues['dzmc']);
end;
datamodule22.adoquery3.Next;
oldid:=newid;
newid:=FieldValues['jgno'];
end;
end;
end;
end;
用TreeView1.ScreenToClient转换为TreeView1的坐标。
按键信息,可以通过API函数GetKeyState来得到。比如:GetKeyState(VK_LBUTTON) < 0 表
示鼠标左键按下了,GetKeyState(VK_RBUTTON) < 0 表示鼠标右键按下了,GetKeyState(
VK_MENU) < 0表示Alt键按下了,GetKeyState(VK_CONTROL) < 0表示Ctrl键按下了,......
不过 solonet老大,您的例程好像是把一个表中的数据导入到treeview中,不是获取鼠标信息的。另外请教一下,我现在是要处理对treeview的节点的左键、右键、左键双击和非节点区域的右键事件,而且各种情况的处理不同,现在我处理的就是mousedown事件,可是这种方法不能处理双击,所以我希望在双击事件中也进行处理,可是双击事件的参数只有sender,所以就产生了上面的问题,这种情况是不是处理treeview的onclick和ondblclick事件比较好呢?