我想实现:在TTreeView中右键单击某一节点,弹出快捷菜单,对节点进行操作,可是这时节点并未被选中,因此不知道哪一个TTreeNode被单击。
如何实现?能否实现?
如何实现?能否实现?
解决方案 »
- 如果数据库有数据更新,在dbgrid里如何即时的看到数据的更新?高手指点一下。
- 我想把输入的小写变为大写,这样为什么不行?
- 请教 1stClass fcTreeCombo1 ,如何指定显示它的第几例??
- 满分求助"鼠标.键盘锁定问题"!!!
- 求助Delphi API函数
- ====== 文件传输数据包的问题 ======
- 我想找一个人事档案管理软件?
- 为什么有那么多的公司选择Delphi而不用PowerBuilder开发数据库管理系统,其优势在哪里?
- 如何引入flash动画????
- 怎样复制一个数据库的记录到另一个数据库?
- ★★★★★美国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(小枫) 兄的更簡單。