我想实现:在TTreeView中右键单击某一节点,弹出快捷菜单,对节点进行操作,可是这时节点并未被选中,因此不知道哪一个TTreeNode被单击。
如何实现?能否实现?
如何实现?能否实现?
解决方案 »
- delphi2007使用问题
- 请问:在DELPHI中如何实现:用户在几个edit编辑框内输入任意几个数字,然后点击“计算”按钮后,将计算结果显示在Lable上。然后点击“保存”按钮,将计算结果保存在数据库中计算公式是固定的。请给我代码,谢谢
- 如何在FastReport里面判断是否到达最后一页
- 如何准确判断某个地址的SQL服务器是否运行中。
- 有谁知道delphi自带的winsight是做什么用的?怎么用?
- 郁闷,散分!
- 三点画圆的问题(急)
- 有谁教我DBComboBox1邦数据库的数据???
- 一个简单查询语句问题
- 我用NMSMTP组件发送邮件,可是有些不能发,错误提示:503 Need RCPT Before DATA,WHY?
- ★★★★★美国Borland公司各主要开发工具补丁的官方下载地址。★★★★★
- 如何使托盘中的图标显示为自己定义的图标?
Shift: TShiftState; X, Y: Integer);
var node: TTreeNode;
begin
if Button = mbRight then
begin
sendMessage(TreeView1.Handle,WM_LBUTTONDOWN,0,MakeLong(x,y));
end;
end;
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, Menus;type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
file1: TMenuItem;
select1: TMenuItem;
showroot1: TMenuItem;
showbtn1: TMenuItem;
showline1: TMenuItem;
close1: TMenuItem;
TreeView1: TTreeView;
procedure showroot1Click(Sender: TObject);
procedure showbtn1Click(Sender: TObject);
procedure showline1Click(Sender: TObject);
procedure TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure close1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.showroot1Click(Sender: TObject);
begin
TreeView1.ShowRoot:=not TreeView1.ShowRoot;
showRoot1.Checked:=TreeView1.ShowRoot;
end;procedure TForm1.showbtn1Click(Sender: TObject);
begin
TreeView1.ShowButtons:=not TreeView1.ShowButtons;
ShowBtn1.Checked:=TreeView1.ShowButtons;
end;procedure TForm1.showline1Click(Sender: TObject);
begin
TreeView1.ShowLines:=not TreeView1.ShowLines;
showline1.Checked:=TreeView1.ShowLines;
end;procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
TreeView1.BeginDrag(False);
end;procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
var
TargetNode,SourceNode:TTreeNode;
begin
TargetNode:=TreeView1.GetNodeAt(X,Y);
if (Source=Sender) and (TargetNode<>nil) then
begin
Accept:=true;
SourceNode:=TreeView1.Selected;
while (TargetNode.Parent<>nil) and (TargetNode<>SourceNode) do
TargetNode:=TargetNode.Parent;
if TargetNode=SourceNode then
Accept:=False;
end
else
Accept:=False;
end;procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
TargetNode,SourceNode:TTreeNode;
begin
TargetNode:=TreeView1.GetNodeAt(X,Y);
if TargetNode<>nil then
begin
SourceNode:=TreeView1.Selected;
SourceNode.MoveTo(TargetNode,naAddChildFirst);
TargetNode.Expand(False);
TreeView1.Selected:=TargetNode;
end;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
TreeView1.LoadFromFile(ExtractFilePath(Application.ExeName)+'TreeText1.txt');
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
TreeView1.SaveToFile(ExtractFilePath(Application.ExeName)+'TreeText1.txt');
end;procedure TForm1.close1Click(Sender: TObject);
begin
close;
end;end.
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
CurrNode: TTreeNode;
begin
if Button = mbRight then
begin
CurrNode := TreeView1.GetNodeAt(X, Y);
if CurrNode <> nil then
TreeView1.Selected := CurrNode;
end;
end;看來, fengjn(小枫) 兄的更簡單。