总的思路是在ONMOUSEDOWN中处理右键点击事件。
以下是我写的一些代码,可参考procedure TForm.TreeView1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
AnItem: TTreeNode;
HT: THitTests;
MouseDownX,MouseDownY: Integer;
ClickedOK:Boolean;
NewString:String;
begin
if Button=mbRight then
Begin
if TreeView1.Selected = nil then Exit;
HT := stTreeView.GetHitTestInfoAt(X, Y);
if (HT - [htOnItem, htOnIcon, htNowhere, htOnIndent] <> HT) then
Begin
AnItem := TreeView1.GetNodeAt(X, Y);
if AnItem<>nil then
Begin
AnItem.Selected:=True;
end;
end;
end;
end;
以下是我写的一些代码,可参考procedure TForm.TreeView1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
AnItem: TTreeNode;
HT: THitTests;
MouseDownX,MouseDownY: Integer;
ClickedOK:Boolean;
NewString:String;
begin
if Button=mbRight then
Begin
if TreeView1.Selected = nil then Exit;
HT := stTreeView.GetHitTestInfoAt(X, Y);
if (HT - [htOnItem, htOnIcon, htNowhere, htOnIndent] <> HT) then
Begin
AnItem := TreeView1.GetNodeAt(X, Y);
if AnItem<>nil then
Begin
AnItem.Selected:=True;
end;
end;
end;
end;
解决方案 »
- 求思路,图像比较【有效果图品】
- Delphi DbGridEh 和 RzDbGrid 冲突
- 关于Panel问题
- 如何计算当前日期一个月前的日期是多少?急
- DisplayRect(drLabel)的问题
- 谁有关于运行期动态创建水晶报表的例子给我一份吧.
- 如果公司老板找理由不给发11月到现在的工资,有什么好办法对付吗?实在是头大。
- 请问一个关于枚举的问题?
- 分布式数据库开发时,怎样才能实现对客户端的数据进行排序?
- 有哪位大侠用过HTML help Workshop
- 难道安装了DELPHI6.0+SP1+SP2后,ADO就会出问题吗?
- 我这样做软件,能有前途吗?刚到公司一个月,天天过3点回家!苦啊!
procedure TForm.TreeView1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
AnItem: TTreeNode;
HT: THitTests;
MouseDownX,MouseDownY: Integer;
ClickedOK:Boolean;
NewString:String;
begin
if Button=mbRight then
Begin
if TreeView1.Selected = nil then Exit;
HT := stTreeView.GetHitTestInfoAt(X, Y);
if (HT - [htOnItem, htOnIcon, htNowhere, htOnIndent] <> HT) then
Begin
AnItem := TreeView1.GetNodeAt(X, Y);
if AnItem<>nil then
Begin
AnItem.Selected:=True;
end;
end;
end;
end;