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

Delphi 中LPtpDP,DPtoLP的用法

楼主hardnut()2000-03-26 12:08:00 在 Delphi / VCL组件开发及应用 提问

我有一个Form1,在Form1上有一个TreeView1,我想在用户右击我的TreeView1的某一个结点时时能弹出一个菜单,对这个结点进行相关的操作。  
  1。开始时我把TTreeView的RightClickSelect设为True,可是在我右击了一个结点之后TTreeView的Selected属性并指向这个结点。  
   
  2.后来我想用TTreeView的OnMouseDown实现,在OnMouseDown中我用如下代码  
  var  
      par:array[0..1]   of   TPoint;  
  begin  
  ...  
  pa[0].x:=x;pa[0].y:=y;  
  if   LPtoDP(TreeView1.Canvas.Handle,pa,1)   then  
      popupmenu1.Pop(pa[0].x,pa[0].y);  
  end;  
  怪就怪在调用了LPtoDP(TreeView1.Canvas.Handle,pa,1)之后,pa[0]这个point  
  的值没有任何变化。这是为何。    
  问题点数:50、回复次数:5Top

1 楼E()回复于 2000-03-26 13:19:00 得分 25

最好的方法是不用   ?pto?p!   ^-^  
  试试ClientToScreen/ScreenToClient  
  或干脆:  
  popupmenu1.Pop(mouse.x,mouse.y);  
  Top

2 楼Lin(林)回复于 2000-03-26 19:00:00 得分 5

LPtoDP?你知道它用来干嘛的?犯不着用它啊?完全同意SoftCrazy。Top

3 楼yangfan()回复于 2000-03-26 23:08:00 得分 20

在可变比例MM_ISOTROPIC   或   MM_ANISOTROPIC映射模式下LPtoDP或DPToLP才有意义  
  用法是在用Canvas画图之前进行映射模式和各项参数的设置,如:  
      SetMapMode(Canvas.handle,MM_ANISOTROPIC);  
      SetWindowExtEx(Canvas.handle,WinExtx,WinExty,nil);  
      SetViewPortExtEx(Canvas.handle,VieExtx,VieExty,nil);  
   
  所以你的pa[0]的值没有变化!  
  如果你想在用户右击你的TreeView1的某一个结点时时能弹出一个菜单,对这个结点进行相关的操作,你应该去研究一下Delphi的原代码,看他是如何处理让结点展开的,也许在那里你能找到问题的答案!  
  Top

4 楼hardnut()回复于 2000-03-28 10:22:00 得分 0

 
  SoftCrazy   直截了当解决问题,大洋25  
  Lin                 墨水费  
  yangfan         指出了why,但还未验证,在我的记忆中vc下没有MM_ISOTROPIC   或   MM_ANISOTROPIC映射模式的限制。Top

5 楼mhuang(蚂蟥)回复于 2000-03-29 01:18:00 得分 0

你可以参照以下的源码  
  procedure   TFUserdes.UserAndDepartmentMouseDown(Sender:   TObject;  
      Button:   TMouseButton;   Shift:   TShiftState;   X,   Y:   Integer);  
  var  
        DownXY:TPoint;  
  begin  
        if   Button=mbRight   then  
        begin  
              DownXY.x:=x;  
              DownXY.y:=y;  
              GetCursorpos(DownXY);  
              UserPopupMenu.Popup(DownXY.x   ,DownXY.y);  
        end;  
  end;  
   
  Top

相关问题

  • delphi语法---stored的用法
  • delphi语法---class of AClass用法
  • 关于Delphi 5中Excel Server的用法
  • Delphi中有象SQL的in用法吗?
  • delphi代码移植,VarArrayCreate的用法
  • 关于Delphi中FlatSB单元的用法。。。。。。
  • 有关DELPHI中CASE语句的用法。
  • delphi 中 while语句的用法,
  • Delphi中關於MessageBox()函數得用法
  • 我刚学Delphi,不太清楚popmenu的用法~~~

关键词

  • 结点
  • 映射
  • 模式
  • downxy
  • lptodp
  • pa
  • anisotropic
  • ttreeview
  • canvas
  • treeview

得分解答快速导航

  • 帖主:hardnut
  • E
  • Lin
  • yangfan

相关链接

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

广告也精彩

反馈

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