Classe é do tipo TPersistentClass, mas pode colocar direto

Application.CreateForm(TComponentClass(GetClass(v_ClasseForm)), TForm(Sender));

Eu usei classe só pra debugar e esqueci de tirar.

Nielsen

On Thu, 2 Dec 2004 15:47:58 -0200, [EMAIL PROTECTED]
<[EMAIL PROTECTED]> wrote:
> 
> 
> e essa variável "Classe" é de que tipo ????
> 
>                    Nielsen
>                    Cassiano             Para:   [EMAIL PROTECTED]
>                    Simões               cc:
>                    <[EMAIL PROTECTED]       Assunto:     Re: [delphi-br] 
> Ajuda em Procedure
>                    .com>
> 
>                    02/12/2004
>                    15:18
>                    Favor
>                    responder a
>                    delphi-br
> 
> Eu estava sem o Delphi, agora já testei e deu certo. O código abaixo
> tem algumas alterações que funcionárão. A princípio, percebi que vc
> tem que registrar (o que pode ser feito em uma única linha, todas as
> classes que vc vai utilizar antes de chamar GetClass. Eis o código:
> 
> v_ClasseForm := 'T'+ v_NomeForm;
> 
> if ((Sender as TForm) = NIL) then
> begin
>   if True then
>   begin
>     RegisterClasses([TForm2]);
>     Classe := GetClass(v_ClasseForm);
>     Application.CreateForm(TComponentClass(Classe), TForm(Sender));
>     TForm(Sender).ShowModal;
>   end else
>   begin
>     MessageDlg('Usuário Sem Acesso A Esse
> Módulo!',mtInformation,[mbOk],0);
>   end;
> end;
> 
> Onde TForm2 é apenas um exemplo que testei pra ver se funcionava. O
> array pode conter todas as classes que vc precisa. E se chamar 2 vezes
> não dá pau.
> 
>  Nielsen
> 
> On Thu, 2 Dec 2004 14:34:40 -0200, [EMAIL PROTECTED]
> <[EMAIL PROTECTED]> wrote:
> >
> >
> > Nielsen, tentei da forma que vc me mandou e o erro aparece nas seguintes
> > linhas:
> >
> > Application.CreateForm(TFormClass(Sender), TForm(Sender));
> > TForm(Sender).ShowModal;
> >
> > O erro é esse: EAccessViolation with message 'Acess violation at adress
> > 004530D0 in module 'MExpress.exe'. Read of adress FFFFFFF4'
> >
> > Tentei usar o GetClass como vc sugeriu e apareceu a seguinte mensagem:
> > Incompatible Types 'TComponentClass' an 'TPersistentClass'
> >
> > Richard
> >
> >                    Nielsen
> >                    Cassiano             Para:
> [EMAIL PROTECTED]
> >                    Simões               cc:
> >                    <[EMAIL PROTECTED]       Assunto:     Re: [delphi-br]
> Ajuda em Procedure
> >                    .com>
> >
> >                    02/12/2004
> >                    13:49
> >                    Favor
> >                    responder a
> >                    delphi-br
> >
> >
> >
> >
> > O negrito não apareceu pra mim...
> >
> > Tente fazer o seguinte:
> >
> > procedure ShowForm(Sender: TObject; v_NomeForm : String);
> > var
> >  v_ClasseForm: String;
> > begin
> >  v_ClasseForm := 'T'+ v_NomeForm;
> >
> >  if ((Sender as TForm) = NIL) then
> >  begin
> >    if DM_FDM2.Q_Permissoes.Locate('DSC_ID',
> > v_NomeForm,[loCaseInsensitive]) then
> >    begin
> >      Application.CreateForm(GetClass(v_ClasseForm), TForm(Sender));
> >      TForm(Sender).ShowModal;
> >    end else
> >    begin
> >      MessageDlg('Usuário Sem Acesso A Esse
> > Módulo!',mtInformation,[mbOk],0);
> >    end;
> >  end;
> >
> >  Espero que ajude.
> >
> >  Nielsen
> >  [EMAIL PROTECTED]
> >
> > On Thu, 2 Dec 2004 10:27:34 -0200, [EMAIL PROTECTED]
> > <[EMAIL PROTECTED]> wrote:
> > >
> > > Oi Pessoal, estou tentando fazer uma Procedure que abra os fomulários
> > > (assim em cada botão eu só coloco a chamada pra Procedure) mas, não
> está
> > > dando certo...o erro aparece nas duas linhas em negrito....
> > > Alguém pode dar uma ajudinha....o código que eu fiz foi esse:
> > > Uso Delphi 5...
> > >
> > > procedure ShowForm(Sender: TObject; v_NomeForm : String);
> > > var
> > >  v_ClasseForm: String;
> > > begin
> > >  v_ClasseForm := 'T'+ v_NomeForm;
> > >
> > >  if TForm(Sender) = NIL then
> > >  begin
> > >    if DM_FDM2.Q_Permissoes.Locate('DSC_ID',
> > > v_NomeForm,[loCaseInsensitive]) then
> > >    begin
> > >      Application.CreateForm(TFormClass(Sender), TForm(Sender));
> > >      TForm(Sender).ShowModal;
> > >    end
> > >    else
> > >    begin
> > >      MessageDlg('Usuário Sem Acesso A Esse
> > > Módulo!',mtInformation,[mbOk],0);
> > >    end;
> > >  end;
> > >
> > > Richard Wagner
> > > [EMAIL PROTECTED]
> > > [EMAIL PROTECTED]
> > > ICQ: 171647537
> > >
> > > " ...E se a música parar, só restará o som da chuva,
> > > toda a esperança e glória, todo o sacrifício em vão.
> > > E se o amor remanescer, mesmo tudo estando perdido,
> > > nós pagaremos o preço e não contaremos o custo..."
> > >
> > > Neil Peart
> > >
> 
> --
> <<<<< 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
> 
> --
> <<<<< 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
> 
> 
> 
> 
>


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

 



Responder a