GARANTIR DESCONTO

Fórum Criação de forms #276001

07/04/2005

0

Pessoal,
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

Diogoalles

Responder

Posts

07/04/2005

Diogoalles

Pessoal,
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


Responder

Gostei + 0

07/04/2005

Beppe

Oi!

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.


Responder

Gostei + 0

07/04/2005

Diogoalles

Bha Beppe
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


Responder

Gostei + 0

07/04/2005

Beppe

O Free é preferível, porque ele chama Destroy em sequencia apenas se o form não form nil. No seu caso, acho que Destroy não causaria problemas, mas não é uma boa prática chamar o destructor diretamente(acho eu).


Responder

Gostei + 0

07/04/2005

Diogoalles

Beppe ou alguem q possa me ajudar... :lol:
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


Responder

Gostei + 0

07/04/2005

Diogoalles

Pessoal
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


Responder

Gostei + 0

08/04/2005

Diogoalles

bom dia galera
Alguém teria uma dica pra me dar porque ainda não consegui resolver meus dois ultimos problemas..

abraço
Diogo


Responder

Gostei + 0

08/04/2005

Diogoalles

Beppe ou alguem que possa ajudar
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


Responder

Gostei + 0

08/04/2005

Diogoalles

Ainda não consegui resolver..
alguém poderia dar alguma dica?
obrigado
Diogo.


Responder

Gostei + 0

08/04/2005

Edilcimar

para fechar forms em MDI eu utilizo
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


Responder

Gostei + 0

08/04/2005

Diogoalles

Olá
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


Responder

Gostei + 0

08/04/2005

Diogoalles

Pessoal,
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


Responder

Gostei + 0

11/04/2005

Diogoalles

bom dia galera
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


Responder

Gostei + 0

11/04/2005

Beppe

função1 TreeView1.Items.AddChild(nil, frm.Caption).Data := frm;

Este comando adiciona um ítem na treeview e associa com o formulário frm, que já deve estar criado.

função2 TForm(Node.Data).BringToFront;

Isto trás o form pra frente das outras janelas.


Responder

Gostei + 0

11/04/2005

Diogoalles

Certo..
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


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar