?? treemenu.~pas
字號:
{*******************************************************}
{ }
{ TTreeMenu Stealth Component }
{ }
{ Pal Sitkei, sitkei@chello.hu }
{ }
{*******************************************************}
unit TreeMenu;
interface
uses Classes, ComCtrls, Controls, Menus;
type
tTreeMenu = class(tTreeView)
private
procedure AddItem(aNode: tTreeNode; aMenuItem: tMenuItem);
procedure MenuMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure SetMenu(Value: tMainMenu);
public
constructor CreateBy(aTree: tTreeView);
procedure Assign(Source: TPersistent); override;
property Menu: tMainMenu write SetMenu;
end;
implementation
{private}
procedure tTreeMenu.AddItem(aNode: tTreeNode; aMenuItem: tMenuItem);
var i: Integer;
Node: tTreeNode;
S1: String;
begin
if Length(aMenuItem.Caption)< 2 then Exit;
for i:= 1 to Length(aMenuItem.Caption) do
if aMenuItem.Caption[i]<>'&' then S1:= S1+ aMenuItem.Caption[i];
Node:= Items.AddChildObject(aNode, S1, aMenuItem);
if aMenuItem.ImageIndex > -1
then Node.ImageIndex:= aMenuItem.ImageIndex
else Node.ImageIndex:= -1;
Node.SelectedIndex:= Node.ImageIndex;
for i:= 0 to aMenuItem.Count- 1 do
AddItem(Node, aMenuItem.Items[i]);
end;
procedure tTreeMenu.MenuMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var Node: tTreeNode;
begin
Node:= GetNodeAt(X, Y);
if not Assigned(Node) then Exit;
if Assigned(tMenuItem(Node.Data).onClick) then tMenuItem(Node.Data).OnClick(Self);
end;
procedure tTreeMenu.SetMenu(Value: tMainMenu);
var i: Integer;
begin
Images:= Value.Images;
for i:= 0 to Value.Items.Count- 1 do
AddItem(nil, Value.Items[i]);
Value.Free;
end;
{public}
constructor tTreeMenu.CreateBy(aTree: tTreeView);
begin
inherited Create(aTree.Owner);
Assign(aTree);
onMouseDown:= MenuMouseDown;
aTree.Hide;
end;
procedure tTreeMenu.Assign(Source: TPersistent);
begin
Parent:= tTreeView(Source).Parent;
Align:= tTreeView(Source).Align;
Color:= tTreeView(Source).Color;
Height:= tTreeView(Source).Height;
Left:= tTreeView(Source).Left;
Top:= tTreeView(Source).Top;
Width:= tTreeView(Source).Width;
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -