Fórum Criando forms dinamicamente #276856
12/04/2005
0
Olá pessoal
Não tenho muito conceito de objetos, classes.etc.. talvez por isso estou fazendo errado ou não estou conseguindo..
Por isso qq sugestão , ideia e/ou critica sera bem vinda.
Na parte inferior está o link de um exemplo que montei para deixar mais clara as minhas duvidas e ver se alguem poderia me ajudar.
No meu sistema eu tenho um FrmMenu(Mdiform) que numa das opções do Menu chama um FrmPrincipal (MdiChild).
Neste FrmPrincipal eu tenho do lado direito dois botões ´Clientes e Pedidos´ que criam seus respectivos forms Frmclientes e FrmPedidos, formstyle = Normal.
Antes de criar os forms eu tenho que selecionar um cliente numa tela de pesquisa FrmClinetesPesquisa e adiciona-o a um treeview na esquerda do Frmprincipal.
Com o Cliente selecionado eu posso clicar nos botões Clientes e Pedidos que tem as seguintes chamadas:
No FrmPrincipal eu tenho 3 painés, um na esquerda outro na direita e o panelPrincipal onde eu crio os frmCliente e FrmPedidos dentro, setando a propriedade: [color=green:a7e1b0c2f0]frmPed.Parent := FrmPrincipal.PnlPrincipal[/color:a7e1b0c2f0];
o [b:a7e1b0c2f0]Primeiro Problema[/b:a7e1b0c2f0] é que se já existir os forms FrmCliente e FrmPedidos criados, o sistema não deve criar novamente para o cliente selecionado no treeview, mas sim somente ativá-los (trazer para a frente).
no treeview que fica no panel da esquerda tenho a seguinte rotina:
no FrmPrincipal eu tenho um tabela Cliente (TblCliente) que sempre deve estar com o registro do cliente dos forms ativos, só que este é o [b:a7e1b0c2f0]Segundo Problema[/b:a7e1b0c2f0] e tb ñ consegui.
O [b:a7e1b0c2f0]Terceiro problema[/b:a7e1b0c2f0] é que eu preciso fechar os FrmCliente e FrmPedidos de um cliente se eles estiverem criados.
O [b:a7e1b0c2f0]quarto problema[/b:a7e1b0c2f0] é a opção para fechar todos os FrmCliente e FrmPedidos independente do cliente.
Sempre que não existirem nem FrmCliente nem FrmPedidos para um cliente, o cliente deve ser removido do treeview, eis aqui o [b:a7e1b0c2f0]quinto problema[/b:a7e1b0c2f0].
Acho que não prolongar mais... no exemplo tem tudo bem especificado e varios itens funcionando.. se alguem puder ajudar fico agradecido
download exemplo:
[b:a7e1b0c2f0][url]http://www.sulsys.com.br/Exemplo/Exemplo_Frms.zip[/url][/b:a7e1b0c2f0]
se precisar:
email: diogo.alles@gmail.com
msn: diogoalles@hotmail.com
abraço
Diogo
Não tenho muito conceito de objetos, classes.etc.. talvez por isso estou fazendo errado ou não estou conseguindo..
Por isso qq sugestão , ideia e/ou critica sera bem vinda.
Na parte inferior está o link de um exemplo que montei para deixar mais clara as minhas duvidas e ver se alguem poderia me ajudar.
No meu sistema eu tenho um FrmMenu(Mdiform) que numa das opções do Menu chama um FrmPrincipal (MdiChild).
Neste FrmPrincipal eu tenho do lado direito dois botões ´Clientes e Pedidos´ que criam seus respectivos forms Frmclientes e FrmPedidos, formstyle = Normal.
Antes de criar os forms eu tenho que selecionar um cliente numa tela de pesquisa FrmClinetesPesquisa e adiciona-o a um treeview na esquerda do Frmprincipal.
Com o Cliente selecionado eu posso clicar nos botões Clientes e Pedidos que tem as seguintes chamadas:
... var FrmPrincipal: TFrmPrincipal; frmCli : TFrmClientes; frmPed : TFrmPedidos; ... //Form de Clientes: procedure TFrmPrincipal.BtnClientesClick(Sender: TObject); begin frmCli := TFrmClientes.Create(Application); frmCli.Parent := FrmPrincipal.PnlPrincipal; frmCli.Table1.Open; frmCli.Table1.FindKey([TblCliente.FieldByName(´Codigo´).Value]); TreeView1.Items.AddChild(nil, frmCli.Table1.FieldByName(´Nome´).Value).Data := frmCli; end; //Form de Pedidos procedure TFrmPrincipal.BtnPedidosClick(Sender: TObject); begin frmPed := TFrmPedidos.Create(Application); frmPed.Parent := FrmPrincipal.PnlPrincipal; frmPed.TblClientes.Open; frmPed.TblClientes.FindKey([TblCliente.FieldByName(´Codigo´).Value]); end;
No FrmPrincipal eu tenho 3 painés, um na esquerda outro na direita e o panelPrincipal onde eu crio os frmCliente e FrmPedidos dentro, setando a propriedade: [color=green:a7e1b0c2f0]frmPed.Parent := FrmPrincipal.PnlPrincipal[/color:a7e1b0c2f0];
o [b:a7e1b0c2f0]Primeiro Problema[/b:a7e1b0c2f0] é que se já existir os forms FrmCliente e FrmPedidos criados, o sistema não deve criar novamente para o cliente selecionado no treeview, mas sim somente ativá-los (trazer para a frente).
no treeview que fica no panel da esquerda tenho a seguinte rotina:
procedure TFrmPrincipal.TreeView1Change(Sender: TObject; Node: TTreeNode); begin TForm(Node.Data).BringToFront; TblCliente.FindKey([frmCli.Table1.FieldByName(´Codigo´).Value]); end;
no FrmPrincipal eu tenho um tabela Cliente (TblCliente) que sempre deve estar com o registro do cliente dos forms ativos, só que este é o [b:a7e1b0c2f0]Segundo Problema[/b:a7e1b0c2f0] e tb ñ consegui.
O [b:a7e1b0c2f0]Terceiro problema[/b:a7e1b0c2f0] é que eu preciso fechar os FrmCliente e FrmPedidos de um cliente se eles estiverem criados.
O [b:a7e1b0c2f0]quarto problema[/b:a7e1b0c2f0] é a opção para fechar todos os FrmCliente e FrmPedidos independente do cliente.
Sempre que não existirem nem FrmCliente nem FrmPedidos para um cliente, o cliente deve ser removido do treeview, eis aqui o [b:a7e1b0c2f0]quinto problema[/b:a7e1b0c2f0].
Acho que não prolongar mais... no exemplo tem tudo bem especificado e varios itens funcionando.. se alguem puder ajudar fico agradecido
download exemplo:
[b:a7e1b0c2f0][url]http://www.sulsys.com.br/Exemplo/Exemplo_Frms.zip[/url][/b:a7e1b0c2f0]
se precisar:
email: diogo.alles@gmail.com
msn: diogoalles@hotmail.com
abraço
Diogo
Diogoalles
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)