Thiago Filiano (America Soft) wrote:
> Valeu João Funcionou direitinho!!!
> 
> pessoal segue o código que estou utilizando para chamar forms, sem 
> declarar sua unit na uses do meu form principal.
> 
> 
> function AbreForm(AForm: String; ADono: TComponent; AEstilo: 
> TBorderStyle = bsSingle;
>   AShow: Boolean = True): Boolean;
> var
>   Pc: TPersistentClass;
>   nome: TForm;
>   i: Integer;
> begin
>   Pc := GetClass('t' + AForm);
>   if (Pc <> nil) then
>   begin
>     nome := nil;
>     i := 0;
> 
>     while I < Screen.FormCount do

Altere seu while para este aqui:

while not Assigned(Nome) and (I < Screen.FormCount) do

--
João Morais


>     begin
>       if Screen.Forms[I] is Pc then
>         Nome := Screen.Forms[I];
>       Inc(I);
>     end;
> 
>     if nome = nil then
>       TFormClass(Pc).Create(ADono).Show
>     else
>       nome.Show;
>   end;
> end;
> 
> antes do "end." da unit do form a ser chamar deve conter as seguintes 
> linhas:
> 
> initialization
>   RegisterClass(TMeuForm)
> 
> finalization
>   UnRegisterClass(TMeuForm)
> 
> end.
> 
> 
> Abraços!
> 
> 
> Thiago Filiano
> 11-8288-4402
> msn: [EMAIL PROTECTED]
> 
> 
> 
> Joao Morais escreveu:
>> Adriano Santos wrote:
>>
>>> Ai galera, o Thiago trabalha comigo aqui.
>>> O que precisamos é o seguinte:
>>>
>>> Nesta função abaixo nós criamos o form passando para a função o nome
>>> dele, porém precisamos saber se o mesmo já foi criado e então apenas 
>> dar
>>> um Show no mesmo. Não estamos conseguindo montar corretamente a função.
>>>
>>> Teria que ser mais ou menos isso:
>>>
>>> function AbreForm(AForm: String; AEstilo: TBorderStyle = bsSingle;
>>> AShow: Boolean = True): Boolean;
>>> var
>>> Pc: TPersistentClass;
>>> nome: TForm;
>>> begin
>>> Pc := GetClass('t' + AForm);
>>> if (Pc <> nil) then
>>> {aqui teria que ter uma verificação}
>>> if not Form_Já_Criado_E_Registrado then
>> Nome := nil;
>> I := 0
>> while I < Screen.FormCount do
>> begin
>> if Screen.Forms[I] is Pc then
>> Nome := Screen.Forms[I];
>> Inc(I);
>> end;
>>
>>> begin
>>> with TFormClass(Pc).Create(frmPrincipal) do
>>> try
>>> Show;
>>> finally
>>> Free;
>>> end;
>> Show seguido de Free irá destruir o form logo depois de apresentá-lo.
>> Use ShowModal ou destrua o form só quando ele for fechado (Action :=
>> caFree).
>>
>>> end
>>> else
>>> Show;
>>> end;
>> --
>> João Morais
>>
>>> -------- Mensagem original --------
>>> De: "Thiago Filiano (America Soft)" <[EMAIL PROTECTED] 
>> <mailto:thiago%40americasoft.com.br>>
>>> Para: delphi-br@yahoogrupos.com.br 
>> <mailto:delphi-br%40yahoogrupos.com.br>
>>> Assunto: [lista-delphi] Como saber se a Classe está ou não registrada?
>>> Data: 14-02-2007 13:44
>>>> Pessoal,
>>>>
>>>> Bom dia!!
>>>>
>>>> Tenho a seguinte função para chamar os forms:
>>>>
>>>> function AbreForm(AForm: String; AEstilo: TBorderStyle = bsSingle;
>>>> AShow: Boolean = True): Boolean;
>>>> var
>>>> Pc: TPersistentClass;
>>>> nome: TForm;
>>>> begin
>>>> Pc := GetClass('t' + AForm);
>>>> if (Pc <> nil) then
>>>> with TFormClass(Pc)
>>>>
>>>> .Create(frmPrincipal) do
>>>> try
>>>> Show;
>>>> Update;
>>>> finally
>>>> Free;
>>>> end;
>>>> end;
>>>>
>>>>
>>  
> 
> 

Responder a