Fórum Criação de forms #276001
07/04/2005
0
Tenho um sistema MDIChild que cria um form do tipo Normal chamdo FrmPrincipal. Este form por sua vez tem alguns botoes que chamam outros forms do tipo normal setando a propriedade Parent do que está sendo criado como sendo o form Normal Principal (FrmPrincipal). Como exemplo vou usar o FrmClientes que é criado a partir do FrmPrincipal.
Eu crio os forms da seguinte maneira:
procedure TFrmPrincipal.Button1Click(Sender: TObject);
var
frm : TFrmClientes;
begin
frm := TFrmClientes.Create(Application);
frm.Parent := FrmPrincipal;
end;
Com isso eu consigo criar varios forms (FrmClientes no caso), onde em cada form eu poderia estar trabalhando com um registro.
Eu preciso ter um TreeView no FrmPrincipal que a cada FrmClientes que for criado o mesmo seja indicado dentro do tree, permitindo assim navegar de um FrmClientes para outro FrmClientes.
alguem poderia me ajudar ou dar alguma idéia?
abraço
Diogo
Diogoalles
Curtir tópico
+ 0Posts
07/04/2005
Diogoalles
vou tentar deixar mais clara minha necessidade.
nesse FrmPrincipal eu chamo um form de pesquisa de Cliente, onde seleciono um determinado cliente. Ao selecioná-lo eu crio o FrmCliente já com os dados do cliente selecionado. O frmclientes é criado dentro de um Panel doFrmPrincipal, por isso ao criar o FrmClientes eu seto a propriedade Parent como FrmPrincipal.Panel1.
Nesse FrmPrincipal tenho do lado direito alguns botões q chamam determinadas telas que são criadas dentro do Panel1 (Align=AlClient) e do lado esquerdo eu tenho um TreeView onde eu gostaria de ir adicionando o FrmCliente já Criado indicando o nome do Cliente que está selecionado em cada um dos forms.
Ao fazer essa criação de formClientes dentro do FrmPrincipal não estou conseguindo navegar entre os frmclientes criados.
espero ter deixado mais claro e agradeço a todos que puderem me ajudar.
abraço
Diogo
Gostei + 0
07/04/2005
Beppe
Logo após criar o form, faça
TreeView1.Items.AddChild(nil, frm.Caption).Data := frm;
No OnChange do TV, vc pega o form do ítem com TForm(Node.Data), e pode chamar .BringToFront nele.
Gostei + 0
07/04/2005
Diogoalles
Blz .. isso mesmo....
só mais uma questão, qual a melhor maneira pra limpar da memoria esses forms q são criados? destroy? free?
abraço
Diogo
Gostei + 0
07/04/2005
Beppe
Gostei + 0
07/04/2005
Diogoalles
Mais uma duvida,
Neste FrmPrincipal eu crio FrmClientes, FrmPedidos..etc...
Com que comando eu posso fazer um processo de repetição para que a cada form aberto que ele encontrar a função feche-o (close) ?
No caso para FrmClientes a variável é FrmC.. para os FrmPedidos a variável é FrmP..e assim por diante..
eu gostaria de fechar todos os clientes e em alguns casos todos o s pedidos também
obrigado
Diogo
Gostei + 0
07/04/2005
Diogoalles
estou com mais um problema que não to conseguindo resolver.
no FrmPrincipal eu tenho um DBText que tem a propriedade DataSource como: frm.DataSourceClientes ... onde frm é a variavel do form criado
só q no evento OnChange do treeview onde ue tenho:
TForm(Node.Data).BringToFront;
não estou conseguindo fazer com que o DBText receba o valor da tela selecionada qu veio a frente.. o dbtext fica sempre com o valor da ultima tela criada... como atualizo isso também?
obrigado
Diogo
Gostei + 0
08/04/2005
Diogoalles
Alguém teria uma dica pra me dar porque ainda não consegui resolver meus dois ultimos problemas..
abraço
Diogo
Gostei + 0
08/04/2005
Diogoalles
Eu gostaria de uma explicação um pouco melhor sobre as duas funções que utilizei para adicionar o valor no Treeview e a outra utilizada no Onchange.... como não utilizei o treeview ainda dei uma lida no help mas ñ consegui pegar bem o conceito.. pq talvez entedendo o funcionamento eu resolva o que tenho pendente.
função1
TreeView1.Items.AddChild(nil, frm.Caption).Data := frm;
função2
TForm(Node.Data).BringToFront;
obrigado
Diogo
Gostei + 0
08/04/2005
Diogoalles
alguém poderia dar alguma dica?
obrigado
Diogo.
Gostei + 0
08/04/2005
Edilcimar
If MDIChildCount >= 1 then
Begin
With Form1 do
For X := MDIChildCount -1 downto 0 do
MDIChildren[X].Close;
End;
você pode adaptar para o seu caso, quanto ao destruir o help do delphi aconselha a utilizar o release, o qual chama os métodos de destroy e free
Gostei + 0
08/04/2005
Diogoalles
O MDIChildCount não funciona por que crio forms do tipo Normal dentro de um MdiChild, sempre que crio um form Normal seto a propriedade Parent := FrmPrincipal(que é o MDIChild).PanelPrincipal.
Se alguém puder olhar eu posso enviar um exemplo do que eu fiz,
só enviem um mail para diogo.alles@gmail.com que envio o exemplo.
obrigado
Diogo
Gostei + 0
08/04/2005
Diogoalles
Segue abaixo link de um exemplo do que preciso..
Se alguem puder dar uma olhada e me ajudar
fico agradecido.. Valeuuu
[url]http://www.sulsys.com.br/Exemplo/Exemplo_Frms.zip[/url]
abraço
Diogo
Gostei + 0
11/04/2005
Diogoalles
vamos começar a semana bem e vamos ver se a galera pode me dar uma mãozinha!
[url]http://www.sulsys.com.br/Exemplo/Exemplo_Frms.zip[/url]
valeu
Gostei + 0
11/04/2005
Beppe
Este comando adiciona um ítem na treeview e associa com o formulário frm, que já deve estar criado.
Isto trás o form pra frente das outras janelas.
Gostei + 0
11/04/2005
Diogoalles
Será que poderia dar uma olhada no exemplo que montei?
Porque não estou conseguinde fazer algumas funcionalidades, como por exemplo fechar o Form ativo ou todos os forms.
Fazer com que um campo DB receba o valor do campo do form ativo no Onchange do tree.
No exemplo tenho tudo bem claro.. se puder dar uma olhada segue:
[url]http://www.sulsys.com.br/Exemplo/Exemplo_Frms.zip[/url]
compile o projeto e acesse o menu na opção Cadastro/Manutenção
do lado direito está a forma de operação e do lado esquerdo os problemas
obrigado
Diogo
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)