MenuToTree

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Cevapla
mavsar

MenuToTree

Mesaj gönderen mavsar »

Aşağıdaki kod bir TMainmenu nesnesinin içeriğini Treeview içerisine oluşturur. Bana gerekli olduğundan böyle bir şey yaptım isteyen kullanabilir.

{ Mehmet Avşar 2003 İstanbul }

Kod: Tümünü seç

procedure MenuToTree(Var Menu: TMainMenu; Var Tree: TTreeview; RootCaption:String);
var
  i1 : Integer;
  MyRootTreeNode: TTreeNode;

  function VeSil(Str1:String):String;
  var
    u1:integer;
  begin
    Result:='';
    for u1:=1 to length(Str1) do if Str1[u1]<>'&' then Result:=Result+Str1[u1];
  end;

  procedure AltMenuleriEkle(Root: TTreeNode; Menu: TMenuItem);
  var
    i2: Integer;
    MyTreeNode : TTreeNode;
  begin
    if Menu.IsLine then Exit;
    if not Menu.Enabled then Exit;
    if not Menu.Visible then Exit;
    MyTreeNode:=Tree.Items.AddChild(Root, VeSil(Menu.Caption));
    MyTreeNode.Data:=Menu;
    if Menu.ImageIndex>0 then
    begin
      MyTreeNode.ImageIndex:=Menu.ImageIndex;
      MyTreeNode.SelectedIndex:=Menu.ImageIndex;
    end else begin
      MyTreeNode.ImageIndex:=0;
      MyTreeNode.SelectedIndex:=0;
    end;
    For i2:=0 to Menu.Count-1 do AltMenuleriEkle(MyTreeNode, Menu.Items[i2])
  end;

begin
  Tree.Items.Clear; 
  Tree.Images:=Menu.Images;
  MyRootTreeNode := Tree.Items.Add(nil, RootCaption); 
  for i1:=0 to Menu.Items.Count-1 do AltMenuleriEkle(MyRootTreeNode, Menu.Items[i1]);
  MyRootTreeNode.Expanded:=True;
end;
{Kullanımı}

Kod: Tümünü seç

MenuToTree(FinansMMenu,TreeView1,'Finans');
Treeview DblClik lendiğinde ilgili menu item'ın çalışmasını sağlamak için :

Kod: Tümünü seç

procedure TForm1.TreeView1DblClick(Sender: TObject);
var
  MyMenuItem: TMenuItem;
  MyNotifyEvent: TNotifyEvent;
begin
  inherited;
  if TV.Selected.Data<>nil then
  begin
    MyMenuItem:=TV.Selected.Data;
    if Addr(MyMenuItem.Onclick)<>nil then
    begin
      MyNotifyEvent:=MyMenuItem.OnClick;
      MyNotifyEvent(MyMenuItem);
    end;
  end;
end;
Cevapla