Fórum Clicar no treeview e abrir um item relacionado no menu #228030
26/04/2004
0
Obrigado
Tchoninho
Curtir tópico
+ 0Posts
27/04/2004
Motta
AddObjects permite vincular o Node a um objeto, passe o Item de menu neste caso
No evento OnChanching do TreeView faça
TMeNuItem(Node.Data).Click(Nil);
Faça algo parecido, mas não chamo um form, não testei mas creio que funciona...
vide o help para mais detalhes
Gostei + 0
27/04/2004
Tchoninho
Tentei mas não deu certo, o código:
TMeNuItem(Node.Data).Click(Nil);
Se possível me passe parte do código fonte para que eu teste.
Obrigado.
Gostei + 0
27/04/2004
Motta
Gostei + 0
28/04/2004
Tchoninho
// z é uma variavel púlica z:pointer; procedure TForm1.AualizaTree(tv: TTreeView; fMenuPrinc: TMainMenu; fMenu: TMenu); var i,j,posic:integer; a,b: string; mI,mS: TMenuItem; n,tn: TTreeNode; begin tv.Items.Clear; tn := nil; tn := tv.Items.AddObjectFirst(tn,´Menus liberados´,z); for i := 0 to fMenuPrinc.Items.Count - 1 do begin mI := fMenu.Items[i]; a := mI.Caption; posic := pos(´&´,a); if posic > 0 then Delete(a,posic,1); n := tv.Items.AddObject(tn,a,z); for j := 0 to mI.Count - 1 do begin mS := mI.Items[j]; b := mS.Caption; posic := pos(´&´,b); if posic > 0 then Delete(b,posic,1); if b <> ´-´ then tv.Items.AddObject(n,b,z) end; end; end; procedure TForm1.Button1Click(Sender: TObject); begin AtualizaTree(treeview1,form1.mmenu1,form1.Menu); end; procedure TForm1.sobre1Click(Sender: TObject); begin showmessage(´teste treeview e mainmenu´); end; procedure TForm1.TreeView1Changing(Sender: TObject; Node: TTreeNode; var AllowChange: Boolean); begin z:=tmenuitem(node.Data); end; procedure TForm1.BitBtn1Click(Sender: TObject); begin Tmenuitem(z).Click; end;
Gostei + 0
29/04/2004
Motta
...
mI := fMenu.Items[i];
a := mI.Caption;
posic := pos(´&´,a);
if posic > 0 then
Delete(a,posic,1);
n := tv.Items.AddObject(tn,a,fMenu.Items[i]);
...
procedure TForm1.TreeView1Changing(Sender: TObject; Node: TTreeNode; var AllowChange: Boolean);
begin
if assigened(node.Data) then
tmenuitem(node.Data).OnClick;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
//
end;
Gostei + 0
29/04/2004
Tchoninho
[color=red:00bc0566f1]..if assigened(node.Data) then ..[/color:00bc0566f1]
O delphi não o reconhece.
procedure TForm1.TreeView1Changing(Sender: TObject; Node: TTreeNode; var AllowChange: Boolean); begin if assigened(node.Data) then tmenuitem(node.Data).OnClick; end;
Gostei + 0
29/04/2004
Motta
fazer as coisas no bloco di notas ....
Gostei + 0
29/04/2004
Tchoninho
O código esta abaixo:
[color=darkblue:763bb5ca9f]
procedure TForm1.AtualizaTree(tv: TTreeView; fMenuPrinc: TMainMenu; fMenu: TMenu); var i,j,posic:integer; a,b: string; mI,mS: TMenuItem; n,tn: TTreeNode; begin tv.Items.Clear; i:=0; tn := nil; // tn := tv.Items.AddChildObjectFirst(tn,´Menus liberados´,fMenu.Items[i]); for i := 0 to fMenuPrinc.Items.Count - 1 do begin mI := fMenu.Items[i]; a := mI.Caption; posic := pos(´&´,a); if posic > 0 then Delete(a,posic,1); n := tv.Items.AddChildObject(tn,a,fmenu.items[i]); for j := 0 to mI.Count - 1 do begin mS := mI.Items[j]; b := mS.Caption; posic := pos(´&´,b); if posic > 0 then Delete(b,posic,1); if b <> ´-´ then tv.Items.AddChildObject(n,b,fmenu.items[i]); end; end; end; procedure TForm1.Button1Click(Sender: TObject); begin AtualizaTree(treeview1,form1.mainmenu1,form1.Menu); end; procedure TForm1.TreeView1Changing(Sender: TObject; Node: TTreeNode; var AllowChange: Boolean); begin if assigned(node.Data) then tmenuitem(node.Data).Click; end; procedure TForm1.web1Click(Sender: TObject); begin showmessage(´vc clicou em web ´); end; procedure TForm1.Colar1Click(Sender: TObject); begin showmessage(´vc clicou em colar´); end; procedure TForm1.Abrir1Click(Sender: TObject); begin showmessage(´vc clicou em abrir´); end; procedure TForm1.Fechar1Click(Sender: TObject); begin showmessage(´vc clicou em fechar´); end; end.
Gostei + 0
30/04/2004
Motta
fMenu: TMenu);
var i,j,posic:integer;
a,b: string;
mI,mS: TMenuItem;
n,tn: TTreeNode;
begin
tv.Items.Clear;
i:=0;
tn := nil;
// tn := tv.Items.AddChildObjectFirst(tn,´Menus liberados´,fMenu.Items[i]);
for i := 0 to fMenuPrinc.Items.Count - 1 do begin
mI := fMenu.Items[i];
a := mI.Caption;
posic := pos(´&´,a);
if posic > 0 then
Delete(a,posic,1);
n := tv.Items.AddChildObject(tn,a,fmenu.items[i]);
for j := 0 to mI.Count - 1 do begin
mS := mI.Items[j];
b := mS.Caption;
posic := pos(´&´,b);
if posic > 0 then
Delete(b,posic,1);
if b <> ´-´ then
tv.Items.AddChildObject(n,b,mI.Items[j]); // <<== aqui vc guarda o objeto que tem a lógica
end;
end;
end;
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)