Fórum Ativando form já criado #282114
18/05/2005
0
olá pessoal
estou com um probleminha na ativação de forms que estou criando.
tenho uma formPrincipal que é um MDIChild:
nele eu tenho do lado direito um panel que contém:
BtnClientes : cria o form de clientes TFrmClientes
No TFrmClientes eu tenho na parte superior os dados cadastrais do cliente e abaixo tenho um grid que possui os pedidos deste cliente.
no centro deste formPrincipal eu tenho um panelPrincipal onde são criados os forms acima indicados, conforme o usuarios selecionar.
segue o codigo utilizado
do lado esquerdo tb tenho um treeview que vai recebendo os clientes.
qdo eu navego no treeview o frmClientes deste cliente é trazido para a frente com o seguinte código:
Abaixo do treeview no frmprincipal também tenho um GridPedidos que está ligado a DataSourcePedidos e este ligado ao QueryPedidos.
Esta querypedidos é executada no OnChange do Treeview listando somente os pedidos do cliente selecionado.
então no Onchange do treeview eu ativo o frmcli e executo a query do cliente selecionado.
no evento AfterScroll da QueryPedidos eu executo o seguite código:
Independente do codigo do bloco indicado acima, o código não está sendo executado para o frmcli que foi chamado pelo BringToFront.
Ele executa sempre para o ultimo frmcli que foi criado e não para o ativo.
tentei utlizar um active, mas não funcionou.
Então o que preciso além de trazer o form do cliente para a frente com o BringToFront é ativá-lo.
alguem pode me ajudar?
valeu
Diogo.
estou com um probleminha na ativação de forms que estou criando.
tenho uma formPrincipal que é um MDIChild:
nele eu tenho do lado direito um panel que contém:
BtnClientes : cria o form de clientes TFrmClientes
No TFrmClientes eu tenho na parte superior os dados cadastrais do cliente e abaixo tenho um grid que possui os pedidos deste cliente.
no centro deste formPrincipal eu tenho um panelPrincipal onde são criados os forms acima indicados, conforme o usuarios selecionar.
segue o codigo utilizado
... var FrmPrincipal : TFrmPrincipal; frmCli : TFrmClientes; implementation ... // chamada igual para todos os forms, só muda o tipo.. esse é dos clientes. procedure TFrmPrincipalF.BtnClientesClick(Sender: TObject); begin if Application.FindComponent(´frmcli´+IntToStr(TblClientes.FieldByName(´CD_CLIENTE´).Value)) = nil then begin frmcli := TFrmClientes.Create(Application); frmcli.Name := ´frmcli´+IntToStr(TblClientes.FieldByName(´CD_CLIENTE´).Value); frmcli.Parent := FrmPrincipal.PnlPrincipal; frmcli.BorderStyle := bsNone; frmcli.Visible := True; Adiciona_Cliente; // é uma procedure que adiciona o cliente que foi selecionado ao treeview do FrmPrincipal. end else TForm(Application.FindComponent(´frmcli´+IntToStr(TblClientes.FieldByName(´CD_CLIENTE´).Value))).BringToFront; end; ...
do lado esquerdo tb tenho um treeview que vai recebendo os clientes.
qdo eu navego no treeview o frmClientes deste cliente é trazido para a frente com o seguinte código:
procedure TFrmPrincipalF.TreeviewClientesChange(Sender: TObject; Node: TTreeNode); begin Localiza_Cliente; // esta procedure tem o código que localiza o cliente do node selecionado na TblClientes. if Application.FindComponent(´frmcli´+IntToStr(TblClientes.FieldByName(´CD_CLIENTE´).Value)) <> nil then begin TForm(Application.FindComponent(´frmcli´+IntToStr(TblClientes.FieldByName(´CD_CLIENTE´).Value))).BringToFront; Pedidos_Cliente; // executa a QueryPedidos. end else // senão encontrar vai executar a rotina do BtnClientes para criar o frmcliente para este cliente. end; ...
Esta querypedidos é executada no OnChange do Treeview listando somente os pedidos do cliente selecionado.
então no Onchange do treeview eu ativo o frmcli e executo a query do cliente selecionado.
no evento AfterScroll da QueryPedidos eu executo o seguite código:
... procedure TFrmPrincipal.QueryPedidosAfterScroll(DataSet: TDataSet); begin if(Application.FindComponent(´frmcli´+IntToStr(QueryAtendCD_CLIENTE.Value)) <> nil)then begin // o que esta nesse bloco é problema if frm510.TblClientes.State = dsBrowse then begin frm510.EdtPesquisa.Text := IntToStr(QueryAtendCD_CLIENTE.Value); frm510.BtnPesquisa.Onclick(self); end; end; end; ...
Ele executa sempre para o ultimo frmcli que foi criado e não para o ativo.
tentei utlizar um active, mas não funcionou.
Então o que preciso além de trazer o form do cliente para a frente com o BringToFront é ativá-lo.
alguem pode me ajudar?
valeu
Diogo.
Diogoalles
Curtir tópico
+ 0
Responder
Posts
18/05/2005
Diogoalles
olá galera
acabei conseguindo fazer com que funcione com o código abaixo.
Só gostaria que alguém me dissesse qual a diferença entre os comandos e se estaria correto como fiz.
abraço
Diogo
acabei conseguindo fazer com que funcione com o código abaixo.
Só gostaria que alguém me dissesse qual a diferença entre os comandos e se estaria correto como fiz.
... TForm(Application.FindComponent(´frmcli´+IntToStr(TblClientes.FieldByName(´CD_CLIENTE´).Value))).BringToFront; SetForegroundWindow(TForm(Application.FindComponent(´frmcli´+IntToStr(TblClientes.FieldByName(´CD_CLIENTE´).Value))).Handle); ...
abraço
Diogo
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)