有一菜单,我已经把他作成树型,但我要把菜单的时间付给树性,该如何做呢?
是不是要先找到点机接点的TEXT,在和菜单中所有的CAPTION做比较呢?for i:=0 to mainmenu1.Items.Count -1 do
begin
if treeview1.Selected.Text =mainmenu1.Items [i].Caption then
begin
mainmenu1.Items[i].Click ;//这里应该怎么写??
end;
是不是要先找到点机接点的TEXT,在和菜单中所有的CAPTION做比较呢?for i:=0 to mainmenu1.Items.Count -1 do
begin
if treeview1.Selected.Text =mainmenu1.Items [i].Caption then
begin
mainmenu1.Items[i].Click ;//这里应该怎么写??
end;
for i:=0 to mainmenu1.Items.Count -1 do
treeview1.addchildobject(nil,mainmenu1.items[i].caption,mainmenu1.items[i]);
在treeview的onchange事件中
TMenuItem(Node.Data).click;
var
vNodeText: string; function pScanMenuItem(mMenuItem: TMenuItem): Boolean;
var
J: Integer;
begin
Result := SameText(StripHotkey(mMenuItem.Caption), vNodeText);
if Result then
mMenuItem.Click
else for J := 0 to mMenuItem.Count - 1 do
if pScanMenuItem(mMenuItem[J]) then Break;
end;var
I: Integer;
begin
if not Assigned(TTreeView(Sender).Selected) then Exit;
vNodeText := TTreeView(Sender).Selected.Text;
for I := 0 to MainMenu1.Items.Count - 1 do
if pScanMenuItem(MainMenu1.Items[I]) then Break;
end;
mainmenu1.Items[i].Click
好象没有触发到相应的事件呢?
mTreeView: TTreeView; mTreeNode: TTreeNode): Boolean;
var
I : Integer;
vTreeNode : TTreeNode;
NodeEx : TTreeNodeEx;
begin
Result := False;
if (not Assigned(mTreeView)) or (not Assigned(mMenuItem)) then
Exit;
try
for I := 0 to Pred(mMenuItem.Count) do
if mMenuItem[I].Visible then
begin
if StripHotkey(mMenuItem[I].Caption) <> '-' then
begin
NodeEx := TTreeNodeEx.Create;
NodeEx.Name := mMenuItem[i].Name;
NodeEx.Text := StripHotkey(mMenuItem[I].Caption);
vTreeNode := mTreeView.Items.AddChildObject(mTreeNode,
StripHotkey(mMenuItem[I].Caption), NodeEx);
vTreeNode.ImageIndex := mMenuItem[I].ImageIndex;
vTreeNode.SelectedIndex := mMenuItem[I].ImageIndex;
MenuItemToTreeNode(mMenuItem[I], mTreeView, vTreeNode);
end;
end;
except
Exit;
end;
Result := True;
end;
TTreeNodeEx = class
public
Name, Text: string;
end;ListItemOnClick(Frm_Main.MainMenu1.Items, mName);function tfrm_Desktop.ListItemOnClick(mMenuItem: TMenuItem; mName: string):
Boolean;
var
I : Integer;
begin
Result := False; if (not Assigned(mMenuItem)) then
Exit;
try
for I := 0 to Pred(mMenuItem.Count) do
if mMenuItem[I].Visible then
if mMenuItem[I].Caption <> '-' then
begin
if mMenuItem[I].Name = mName then
begin
mMenuItem[I].Click;
break;
end
else
ListItemOnClick(mMenuItem[I], mName);
end;
except
Exit;
end;
Result := True;
end;