GARANTIR DESCONTO

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:

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

Diogoalles

Responder

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

Aceitar