Tchê, não vou responder a tua pergunta, mas ta ai uma dica de como criar (se preciso) os forms de forma otimizada:
if not assigned(frmCadCli) then frmCadCli := TfrmCadCli.Create(self); with frmCadCli do Begin Show; // Aqui vc pode colocar outras instruções // a serem executadas após a abertura do // form, tipo mudar a página de um PageControl end; Você poderia implementar assim: procedure TfrmPrincipal.criatela(TFormulario: TFormClass; Formulario: TForm); begin if not assigned(Formulario) then Formulario := TFormulario.Create(self); with Formulario do begin Show; BringToFront; end; end; Fica ai a dica. Abraço, José Luis ----- Original Message ----- From: Carlos To: delphi-br@yahoogrupos.com.br Sent: Sunday, December 26, 2004 7:16 PM Subject: [delphi-br] Problema com procedure Ola, pessoal. Minha situação é a seguinte: Para criar uma tela uso o seguinte: /procedure TfrmPrincipal.Funcionrios1Click(Sender: TObject); var found, i: Integer; begin found:= -1; for i:=0 to Screen.FormCount -1 do if Screen.Forms[i] is TfrmCadFuncionarios then found:= i; if found >= 0 then Screen.Forms[found].Show else begin frmCadFuncionarios:= TfrmCadFuncionarios.Create(Self); frmCadFuncionarios.Show; end; /Se a tela está aberta, coloco o foco nela, senão crio e abro. Criei a procedure abaixo para automatizar o processo: /procedure TfrmPrincipal.criatela(TFormulario: TFormClass; Formulario: TForm); var found, i: Integer; begin found:= -1; for i:=0 to Screen.FormCount -1 do if Screen.Forms[i] is TFormulario then found:= i; if found >= 0 then Screen.Forms[found].Show else begin Formulario:= TFormulario.Create(Self); Formulario.Show; end; end;/ Agora chamo desta maneira: /criatela(TfrmCadFuncionarios, frmCadFuncionarios); /Só que está acontecendo algo estranho: tenho um dm com os componentes sqldataset, datasetprovider e clientdataset. Quando vou criar um novo registro, dexei no frmcadfuncionários um currencyedit que deve ser 0 (zero): /procedure TDMATC.cds_cadfuncNewRecord(DataSet: TDataSet); begin frmcadfuncionarios.CurrencyEdit1.Value:= 0;/ Só que ele retorna dizendo que houve acces violation. To verificando e ele diz que/ //frmcadfuncionarios.CurrencyEdit1.Value:= 0; (//frmcadfuncionarios.CurrencyEdit1 inacessible value)./ O que pode estar errado? Declarei a criatela na seção public do form principal que chama as outras telas e os form criados são mdichild. ---------- No virus found in this outgoing message. Checked by AVG Anti-Virus. Version: 7.0.298 / Virus Database: 265.6.5 - Release Date: 26/12/2004 [As partes desta mensagem que não continham texto foram removidas] -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Yahoo! Grupos, um serviço oferecido por: ------------------------------------------------------------------------------ Links do Yahoo! Grupos a.. Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ b.. Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] c.. O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo!. [As partes desta mensagem que não continham texto foram removidas] -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html