Fórum Clonar form em tempo de execução #324215
26/06/2006
0
Caros amigos;
Criei um único formulário para fazer consultas (Consulta de clientes, fornecedores, cidades, etc...). Quero saber se existe a possibilidade de fazer um clone desse formulário em tempo de execução. Pois em alguns casos o usuário terá que abrir a procura de clientes e ao mesmo tempo a procura de cidades.
Abraço!
Criei um único formulário para fazer consultas (Consulta de clientes, fornecedores, cidades, etc...). Quero saber se existe a possibilidade de fazer um clone desse formulário em tempo de execução. Pois em alguns casos o usuário terá que abrir a procura de clientes e ao mesmo tempo a procura de cidades.
Abraço!
Vispo
Curtir tópico
+ 0
Responder
Posts
26/06/2006
Micheus
[b:ba203cbb54]vispo[/b:ba203cbb54], vc utiliza data-module ou colocou os componentes no form junto ao DBGrid?
Se a resposta for a segunda opção e considerando que vc mostre seu form de consulta utilizando ShowModal bastaria fazer algo assim:
Como vc utiliza a variável local (FormConsulta definida no procedimento onclick), não averá problemas, visto que vc abandonaria o uso da variável global definida no código de seu form de consulta.
Se vc utilizar apenas Show, acho que deve ser considerada a possibilidade de definir as variaveis no form principal (tipo: FrmConsultaCliente, FrmConsultaFornecedor :TFormConsulta), criá-las e mostrá-las conforme a situação.
Se vc utilizar Data-module, talvez tenham que ser considerados outros detalhes.
Utilizando ShowModal, eu costumo fazer algo assim:
- no form de consulta, crio funções da seguinte forma:
- daí no código do programa que chama este form, seguindo o que está mais acima, coloco:
Se a resposta for a segunda opção e considerando que vc mostre seu form de consulta utilizando ShowModal bastaria fazer algo assim:
procedure TForm1.Button1Click(sender :TObject); var FormConsulta :TFormConsulta; // aqui é a classe do seu form de consulta begin FormConsulta := TFormConsulta.Create(Self); try // algum procedimento para inicializar a consulta adequada // a seguir mostrar o form FormConsulta.ShowModal; finally FormConsulta.Free; end; end;
Se vc utilizar apenas Show, acho que deve ser considerada a possibilidade de definir as variaveis no form principal (tipo: FrmConsultaCliente, FrmConsultaFornecedor :TFormConsulta), criá-las e mostrá-las conforme a situação.
Se vc utilizar Data-module, talvez tenham que ser considerados outros detalhes.
Utilizando ShowModal, eu costumo fazer algo assim:
- no form de consulta, crio funções da seguinte forma:
TFrmConsulta = class(TForm) ... // para este campo movo o valor da chave quando de //um duplo-click no DBGrid CodSelecionado :Variant; function CnsCliente :TModalResult; ... function CnsCidade :TModalResult; end; function TFrmConsulta.CnsCliente :TModalResult; begin Qry.SQL.Text := ´select codCli, nomCli from clientes order by nomCli´; Qry.Open; try Result := ShowModal; finally Qry.Close; end; end; ...
FrmConsulta := TFrmConsulta.Create(Self); try if FrmConsulta.CnsCliente = mrOk then TbVendasCodCliente.value := FrmConsulta.CodSelecionado; finally FrmConsulta.Free end;
Responder
Gostei + 0
27/06/2006
Vispo
Valeu pela resposta [b:7e4841345e]micheus[/b:7e4841345e], não estou usando data module, coloquei todos os componentes direto no form padrão. Eu uso um procedimento parecido com o seu, passo uma série de parâmetros para o formulário e monto a tela de procura de acordo com o desejado. Usei a dica das variáveis que vc deu para criar os clones dae ficou 100¬.
Abração!
Abração!
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)