Pirambu! Postado Agosto 18, 2007 Denunciar Share Postado Agosto 18, 2007 Alguém sabe como eu poderia fazer para Criar um DiagramaEx.: diagrama de um determinado produto "A" que é formado por outros produtos A1 e A2 e são composto por A1.1 E A2.1 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --Jonas -- Postado Agosto 18, 2007 Denunciar Share Postado Agosto 18, 2007 Alguém sabe como eu poderia fazer para Criar um DiagramaEx.: diagrama de um determinado produto "A" que é formado por outros produtos A1 e A2 e são composto por A1.1 E A2.1Amigo... não deu pra entender ... diagrama ou matriz ? diagrama eu entendo por desenho é isso ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Agosto 19, 2007 Denunciar Share Postado Agosto 19, 2007 diagrama eu entendo por desenho é isso ?Pirambú!, se enveredar por estas bandas, este componente (free) pode ser útil - TSimpleGraph (download do componente e demo estão no final da página)Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Pirambu! Postado Agosto 19, 2007 Autor Denunciar Share Postado Agosto 19, 2007 QUOTE(--Jonas -- @ 18/08/2007 - 17:38) diagrama eu entendo por desenho é isso ?Pirambú!, se enveredar por estas bandas, este componente (free) pode ser útil - TSimpleGraph (download do componente e demo estão no final da página)Abraçosé isso que estou procurando, vou tentar, depois post o resultado. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Pirambu! Postado Agosto 20, 2007 Autor Denunciar Share Postado Agosto 20, 2007 Micheus, é para adicionar uma nova paleta no delphi?como posso usar? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Agosto 21, 2007 Denunciar Share Postado Agosto 21, 2007 Micheus, é para adicionar uma nova paleta no delphi?como posso usar?Você tem que instalar ele.Após o download, digamos que você extraia os arquivos em uma pasta chamada c:\Delphi\Source\SimpleGraph. Para instalar o componente, você acessa o menu Component -> Install component..., na janela que aparece, você pode escolher instalar em um pacote já existente (guia: Into existing package) ou em um novo (guia: Into new package). Em Unit file name você selecionar o arquivo fonte do componente, seguindo o exemplo seria "c:\Delphi\Source\SimpleGraph\SimpleGraph.pas".Conforme opção (pacote existente ou novo), você deverá preencher as outras informações.Quando clicar em OK, a próxima etapa será utilizar a opção Install para instalar o componente.Pelo que está no código fonte do mesmo, será criada uma paleta chamada "Delphi Area" com o componente nela. Caso você queira colocá-la em outra paleta (uma já existente), basta que você edite o código fonte antes de instalar o componente. Procure pelo procedimento Register e troque o texto "Delphi Area" na chamada:RegisterComponents('Delphi Area', [TSimpleGraph]);para o nome da paleta desejada.Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Pirambu! Postado Agosto 21, 2007 Autor Denunciar Share Postado Agosto 21, 2007 Micheus, conseguir instalar, agora vem as dúvidas, eu consigo vincular a uma tabela? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Agosto 21, 2007 Denunciar Share Postado Agosto 21, 2007 Micheus, conseguir instalar, agora vem as dúvidas, eu consigo vincular a uma tabela?acredito que não, porque ele não é um componente data-aware (e não conheço outro que seja). Voce terá que gerenciar a integração dos dados da tabela como ele.Apenas o conheço, utilizei o demo que vem com ele, mas não fiz nada de útil...Eu poderia até tentar ajudá-lo, mas precisaria entender o que você está fazendo, as estruturas de tabelas (registreos) envolvidos...Voce vai ter que avançar aos poucos, falou?! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Pirambu! Postado Agosto 22, 2007 Autor Denunciar Share Postado Agosto 22, 2007 acredito que não, porque ele não é um componente data-aware (e não conheço outro que seja). Voce terá que gerenciar a integração dos dados da tabela como ele.tudo em. Eu poderia até tentar ajudá-lo, mas precisaria entender o que você está fazendo, as estruturas de tabelas (registreos) envolvidos...Na verdade o que eu estou tentando fazer é montar uma árvore de hierarquia de liderança. talvés você conheça outra forma de representar o que eu estou querendo fazer.Se realmente não tiver jeito, possa até tentar representar usando trueview, mas não como Relacionar a tabela talvés você possa me ajudar. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Agosto 22, 2007 Denunciar Share Postado Agosto 22, 2007 Eu poderia até tentar ajudá-lo, mas precisaria entender o que você está fazendo, as estruturas de tabelas (registreos) envolvidos...Na verdade o que eu estou tentando fazer é montar uma árvore de hierarquia de liderança. talvés você conheça outra forma de representar o que eu estou querendo fazer.acho que a utilização do tal componente seria mesmo interessante.mas não como Relacionar a tabela talvés você possa me ajudar.você quiz dizer que "não sabe como relacionar a tabela", é isso?Talvez se você explicar como a "coisa" deveria funcionar, eu ou outro colega possamos lhe ajudar. O que eu imagino ser necessário, pode não estar de acordo com as informações que você tem que que o seu usuário necessita. Tente exemplificar, desenha se for o caso...Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Pirambu! Postado Agosto 22, 2007 Autor Denunciar Share Postado Agosto 22, 2007 Tente exemplificar, desenha se for o caso...Ok.o objetivo como falei e montar uma "árvore de hierarquia de liderança" como exemplo eu tenho um diretor "1" de uma empresa, que tem como subordinado dois gerente: gerente "1" e gerente "2", para o gerente "1" tenho os supervisores 1.1.1 , 1.1.2 e 1.1.3 e para gerente "2" tenho os supervisores 1.2.1, 1.2.2 e 1.2.3, e para cada supervisor tenhos 5 encarregado de produção, 1.1.1.1, 1.1.1.2 e ... e mesmo para o gerente "2".Resumo.Eu quero mostrar que na empresa tenho diretor e como subordinado a ele tem dois gerentes e subordinado a cada gerente tenho dois supervidores e subordinado a cada supervisor tenho 5 encarregado.eu imaginei isso em um diagrama, ficaria ótimoou talvés usando um trueview na tabela ficaria como mostrado acima 1.1.1.1 - o primeiro 1 seria o "Diretor", segundo seria "Gerência", o terceiro seria o "Supervisor" o quarto seria o "Encarregado de produção". mas não sei como relacionar uma tabela ao trueview. Espero ter facilitado a juda. :rolleyes: Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Agosto 22, 2007 Denunciar Share Postado Agosto 22, 2007 o objetivo como falei e montar uma "árvore de hierarquia de liderança" como exemplo eu tenho um diretor "1" de uma empresa, que tem como subordinado dois gerente: gerente "1" e gerente "2", para o gerente "1" tenho os supervisores 1.1.1 , 1.1.2 e 1.1.3 e para gerente "2" tenho os supervisores 1.2.1, 1.2.2 e 1.2.3, e para cada supervisor tenhos 5 encarregado de produção, 1.1.1.1, 1.1.1.2 e ... e mesmo para o gerente "2".Resumo.Eu quero mostrar que na empresa tenho diretor e como subordinado a ele tem dois gerentes e subordinado a cada gerente tenho dois supervidores e subordinado a cada supervisor tenho 5 encarregado.eu imaginei isso em um diagrama, ficaria ótimoficará legal sim. Posso verificar isso com aquele componente apenas amanhã (estou sem tempo hoje)ou talvés usando um trueview na tabela ficaria como mostrado acima 1.1.1.1 - o primeiro 1 seria o "Diretor", segundo seria "Gerência", o terceiro seria o "Supervisor" o quarto seria o "Encarregado de produção". mas não sei como relacionar uma tabela ao trueview.esta é a opção mais simples (mas visualmente não é aquilo tudo).se você tem realmente o campo da tabela formatado do jeito que mostrou, não tem erro:- faze uma consulta na tabela (via query), ordenando pelo campo em questão. Deve ficar algo assim:1 (diretor)1.1 (gerente 1)1.1.1 (supervisor 1)1.1.1.1 (encarregado de produção 1)1.1.1.2 (encarregado de produção 2)...1.1.1.5 (encarregado de produção 2)1.1.2 (supervisor 2) 1.1.3 (supervisor 3)1.2 (gerente 2)1.2.1 (supervisor 1)1.2.2 (supervisor 2)1.2.3 (supervisor 3)Percebeu, vai ficar direto na seqüência, daí é só implementar um loop para inserir no nível correto.Vai pensando aí. Se optar por utilizar o componente de diagrama, então não gaste tempo com isso que coloquei.Não esqueça de informar o nome das tabelas e campos envolvidos - facilita a exemplificação.Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Pirambu! Postado Agosto 22, 2007 Autor Denunciar Share Postado Agosto 22, 2007 Valeu Micheus pela força. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Pirambu! Postado Agosto 27, 2007 Autor Denunciar Share Postado Agosto 27, 2007 Micheus como poderia fazer para usar um trueview, criar a query eu sei, mas como lincar ao trueview? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Agosto 28, 2007 Denunciar Share Postado Agosto 28, 2007 Micheus como poderia fazer para usar um trueview, criar a query eu sei, mas como lincar ao trueview?Pirambu!, utilizando um arquivo temporário e, é claro, aquela estrutura já citada (ordenação pelo campo em questão) daria para fazer isto de forma simples:procedure TForm1.Button1Click(Sender: TObject); var SLTree :TStringList; IdxPoint :Integer; StrAux, StrNivel :string; TmpFileName :array[0..256] of char; begin ... QryHierarquia.Open; GetTempFileName('.', 'tre', 0, TmpFileName); // obter nome p/ arquivo temporário SLTree := TStringList.Create; try StrAux := ''; while not QryHierarquia.EOF do begin StrNivel := ''; // armazena os TAB equivalente a níveis StrAux := QryHierarquiaNOM_NIVEL.AsString; // aqui vai o campo que contém 1;1.1;1.2;... IdxPoint := Pos('.', StrAux); // localiza marcador de nível if IdxPoint > 0 then repeat Delete(StrAux, 1, IdxPoint +1); StrNivel := StrNivel +#9; IdxPoint := Pos('.', StrAux); until IdxPoint = 0; SLTree.Add(StrNivel +QryHierarquiaNOM_NIVEL.AsString); QryHierarquia.Next; end; SLTree.SaveToFile(TmpFileName); // grava no arquivo temporário Treeview1.LoadFromFile(TmpFileName); // carrega árvore do arquico Treeview1.FullExpand; // mostra arvore expandida DeleteFile(TmpFileName); // elimina arquivo temporário finally SLTree.Free; end; QryHierarquia.Close; end;Veja se você consegue compreender e implementar. Veja se o resultado é o esperado.Se for utilizar um algorítmo para inclusão em níveis, então fica um pouco mais complexo, mas tem como. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Pirambu! Postado Agosto 29, 2007 Autor Denunciar Share Postado Agosto 29, 2007 Micheus,não deu certo pois tentei fazer desta forma, eu pensei em fazer 4 níveis de herarquias usando 4 tabelas, colocando vínculos nas tabelas Tb1-> Tb2->Tb3->Tb4. então usei uma query para fazer a lista e com 4 campos sendo que cada numero estar em um campo ( 1.1.2.1 ). é desta forma mesmo? ou teria outra maneira usando apenas uma tabela ( Paradox)? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Agosto 29, 2007 Denunciar Share Postado Agosto 29, 2007 Micheus,não deu certo pois tentei fazer desta forma, eu pensei em fazer 4 níveis de herarquias usando 4 tabelas, colocando vínculos nas tabelas Tb1-> Tb2->Tb3->Tb4. então usei uma query para fazer a lista e com 4 campos sendo que cada numero estar em um campo ( 1.1.2.1 ). é desta forma mesmo? ou teria outra maneira usando apenas uma tabela ( Paradox)?Pirambu!, qual é a estrutura e nome da tabela em questão? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Pirambu! Postado Agosto 30, 2007 Autor Denunciar Share Postado Agosto 30, 2007 QUOTE(Pirambu! @ 29/08/2007 - 13:03) Micheus,não deu certo pois tentei fazer desta forma, eu pensei em fazer 4 níveis de herarquias usando 4 tabelas, colocando vínculos nas tabelas Tb1-> Tb2->Tb3->Tb4. então usei uma query para fazer a lista e com 4 campos sendo que cada numero estar em um campo ( 1.1.2.1 ). é desta forma mesmo? ou teria outra maneira usando apenas uma tabela ( Paradox)?Pirambu!, qual é a estrutura e nome da tabela em questão?A estrutura seria na tabela 1 teria os campos Her1ID, + , * Nome2 , A, 30 na tabela 2Her1ID, I, *Her2ID, + , *Nome2, A, 30a tabela 2 estaria relacionada com a tabela 1 pelo "Her1ID"na tabela 3teria os campos Her2ID, I, *Her3ID, + , *Nome3, A, 30a tabela 3 estaria relacionada com a tabela 2 pelo "Her2ID"na tabela 4Her3ID, I, *Her4ID, + , *Nome4, A, 30a tabela 4 estaria relacionada com a tabela 3 pelo "Her3ID"Então usei uma query1 para fazer a consultawith query do begin Close; sql.clear; sql.add('select * from ((tabela1 left join tabela2 on tabela1.her1ID = tabela2.her1ID) left join tabela3 on Tabela2.Her2ID = Tabela3.Her2ID) left join tabela4 on Tabela4.Her3ID = Tabela4.Her3ID'); open; end; foi desta forma que tentei.Micheus, seria assim:vou usar nome no lugar de cargo+ Raimundo (Diretor) + Pedro (Gerente) + Francisco(supervisor) - Soares(Encarregado) - Antonio(Encarregado)Usando Banco de dados do paradox. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Setembro 4, 2007 Denunciar Share Postado Setembro 4, 2007 Pirambu!, desculpe a demora.Eu não achei um meio de lhe explicar como fazer, então implementei a rotina. Não sei se é a melhor ou se é 100% infalível (tem que testar), mas funciona de acordo com o "figurino".O fato de você utilizar uma estrutura diferente daquela inicialmente comentada, dificultou um pouco as coisas.Quanto a consulta SQL, utilizando as 4 tabelas, a que você apresentou não retorna o resultado adequadamente. Pelo menos com a base que montei e os testes que fiz. Ela ficou assim:select T1.Her1ID, T2.Her2ID, T3.Her3ID, T4.Her4ID, Nome1, Nome2, Nome3, Nome4 from Tabela4 T4 left join Tabela3 T3 on (T4.Her3ID = T3.Her3ID) left join Tabela2 T2 on (T3.Her2ID = T2.Her2ID) left join Tabela1 T1 on (T2.Her1ID = T1.Her1ID) order by T1.Her1ID, T2.Her2ID, T3.Her3ID, T4.Her4ID Com os dados que coloquei nas tabelas, este é o resultado:1|1|1|1|Raimundo (Diretor) |Pedro (Gerente) |Francisco (Supervisor) |Soares (Encarregado) | 1|1|1|2|Raimundo (Diretor) |Pedro (Gerente) |Francisco (Supervisor) |Antônio (Encarregado) | 1|1|3|4|Raimundo (Diretor) |Pedro (Gerente) |Jacinto (Supervisor) |Dionísio (Encarregado)| 2|2|2|3|Tonico (Diretor) |Mário (Gerente) |Tonico (Supervisor) |Josefina (Encarregada)| O código está logo abaixo. Eu utilizei uma função com recursividade para fazer a navegação entre os "ramos da árvore". Veja se com os comentários no código, você consegue entender o funcionamento. procedure TForm1.Button1Click(Sender: TObject); // a função "InsertNode" retorna o nó recém inserido function InsertNode(NodeLevel :Integer; // indica o nível a ser avaliado ParentNode :TTreeNode; // nó pai NodeName :string) :TTreeNode; // nome do nó var LocalNode :TTreeNode; begin // utilizamos uma variável local para não // manipularmos o parâmetro passado LocalNode := ParentNode; if LocalNode <> nil then begin // se o nível do nó é inferior ao desejado if LocalNode.Level < NodeLevel then begin // verificamos se o próximo nível ainda não existe if LocalNode.GetFirstChild = nil then // não existindo, inserimos o novo nó Result := TreeView1.Items.AddChild(ParentNode, NodeName) else // existinhdo, chamamos recursivamente o procedimento // passando o primeiro nó do próximo nível Result := InsertNode(NodeLevel, LocalNode.GetFirstChild, NodeName); end else begin // salvamos em result o conteúdo do nó antes // de buscarmos o próximo Result := LocalNode; // buscamos os próximo nó "irmão" (no mesmo nível) LocalNode := LocalNode.GetNextSibling; if (LocalNode <> nil) and (LocalNode.Text = NodeName) then begin // há um nó com o texto encerramos a procura e saímos Result := LocalNode; Break; end; end; // se não há nó com o nome, adiciona ele if (LocalNode = nil) and (Result.Text <> NodeName) then Result := TreeView1.Items.Add(Result, NodeName); end; end else if NodeLevel = 0 then // adiciona o nó pai na raiz Result := TreeView1.Items.Add(nil, NodeName); end; var NodeAnt :TTreeNode; begin NodeAnt := nil; TreeView1.Items.Clear; TreeView1.Items.BeginUpdate; QryHierarquia.Open; while not QryHierarquia.EOF do begin // começamos sempre pela raiz -> GetFirstNode NodeAnt := InsertNode(0, TreeView1.Items.GetFirstNode, QryHierarquiaNome1.Value); // após inserido o nó no 1º nível, inserimos o 2º a partir deste -> NodeAnt NodeAnt := InsertNode(1, NodeAnt, QryHierarquiaNome2.Value); // após inserido o nó no 2º nível, inserimos o 3º a partir deste -> NodeAnt NodeAnt := InsertNode(2, NodeAnt, QryHierarquiaNome3.Value); // após inserido o nó no 3º nível, inserimos o 4º a partir deste -> NodeAnt InsertNode(3, NodeAnt, QryHierarquiaNome4.Value); // avançamos para a próxima linha no resultado QryHierarquia.Next; end; QryHierarquia.Close; TreeView1.FullExpand; TreeView1.Items.EndUpdate; end;Espero que funcione corretamente para o que você quer fazer. Fica aqui anexo as tabelas teste e o código fonte.AbraçosProject1.zip Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Pirambu! Postado Setembro 12, 2007 Autor Denunciar Share Postado Setembro 12, 2007 Micheus, ficou ótimo, só mais uma coisa, coloquei em "pagecontrol" como eu faço para mostrar a árvore sem clicar no botão, apenas ao entrar no TabSheet2 onde estar o treeview? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Setembro 12, 2007 Denunciar Share Postado Setembro 12, 2007 Micheus, ficou ótimo, só mais uma coisa, coloquei em "pagecontrol" como eu faço para mostrar a árvore sem clicar no botão, apenas ao entrar no TabSheet2 onde estar o treeview?Pirambu!, acredito que você possa utizar no evento OnShow do TabSheet.Se você ainda vai manter o botão então, no evento OnShow você coloca:Button1.Click;Se não vai mais utilizar o botão, então coloca todo o código neste evento.Como eu disse lá no outro post, o procedimento não deve estar 100% a prova de falhas, mas se você manter o critério da ordenação e sequências das chamadas a InsertNode, tudo deve funcionar perfeitamente.Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Pirambu! Postado Setembro 17, 2007 Autor Denunciar Share Postado Setembro 17, 2007 é isso mesmo, valeu Micheus.Abraço. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Pirambu!
Alguém sabe como eu poderia fazer para Criar um Diagrama
Ex.: diagrama de um determinado produto "A" que é formado por outros produtos A1 e A2 e são composto por A1.1 E A2.1
Link para o comentário
Compartilhar em outros sites
21 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.