2009-09-29 4 views
0

Je suis en train de configurer un module de chargement "bpl" dans IntraWeb, Delphi2010, et j'ai trouvé le problème suivant:
Je ne parviens pas à créer une instance l'application pour ne pas être cette est comme une forme interne.
."bpl" charger dans IntraWeb

procedure CargaDoSubModulo; 
type 
    TIWFormClass = class of TIWForm; 

var 
    Integra : IIntegracaoIW; 
    Formulario : TIWForm; 
    intClas : Integer; 
    strForm : String; 

begin 
    strForm := srtPacotes + '_' + Copy (IntToStr (Rtn_Alternativa) + 10000), 2, 4); 

// Descrição do formulário 
    strDescricaoTela := Des_Tela; 
// Nome da classe do formulário 
    vrtClasseModulo := 'p_' + strForm + '.dll'; 

// Nome da rotina interna a ser carregada 
    strForm := 'iwfrm_' + strForm; 
// Nome da classe do formulário 
    vrtNomeFormulario := 'T' + strForm; 
// Verificação se a rotina e compativel com o sistema iwfrm_hrb_0010 
    intClas := -1; 

    if WebApplication.FindComponent(strForm) = nil then 
    begin 
    Formulario := TIWFormClass(FindClass(vrtNomeFormulario)).Create(WebApplication); 

    if not Supports (Formulario, IIntegracaoIW) then 
    begin 
     WebApplication.ShowMessage(CargaTexto(msnRotIncompIntgra), smAlert); 
     Exit; 
    end; 

    Integra := Formulario as IIntegracaoIW; 
    with Integra do 
    begin 
     SetServidor(ParServidor1.Servidor);        // 1 
     SetAreaTrabalho(ParServidor1.AreaTrabalho);      // 2 
     SetIdUsuario(intUsuario);          // 3 
     SetNomeUsuario(iwlStUsuario.Caption);       // 11 
     SetAcesso(intAcesso);           // 4 
     SetEmpresa(ParServidor1.Empresa);        // 5 
     SetFilial(ParServidor1.Filial);         // 6 
     SetIdClasse(intClas);           // 8 
     SetVersao(strVersaoInterna);         // 10 
     SetDescricao(Des_Tela);  // 7 
     SetEnderecoIP(strIdentificacaoPorta);       // 13 
     SetDataTrabalho(DateToStr(dtDataTrabalho));      // 14 
     SetIdentificacaoSistema(iwlIdentificacao.Caption);    // 12 
     SetModuloCarga(Rtn_Busca); // 9 
    end; 
    end; 
    TIWAppForm(WebApplication.FindComponent(strForm)).Show; 

end;

+0

J'ai essayé d'améliorer la mise en forme de votre code, mais je ne comprends toujours pas votre question. Pourriez-vous l'éditer pour clarifier ce que vous essayez de faire et inclure les messages d'erreur que vous obtenez? Falo português só um pouquinho. – Argalatyr

+0

Puits ... Je configure un sélecteur de modules ... Le module principal est une DLL et les modules secondaires sont Bpl, chargés depuis l'intérieur du sélecteur (Dll), ou être: 1ère installation le nom du module dans vrtClasseModulo; 2ème configurer le nom de la forme du module dans vrtNomeFormulario, c'est-à-dire la classe; 3e vérifier si elle existe; et 4ème à initialiser et je présente pour former. C'est ce que je veux faire .... Ça valait le coup d'aider ... et je parle un peu anglais .... très peu .... – Amir

Répondre

1

Votre question - ou en fait le problème exact/erreur - est un peu flou pour moi. Localiser un formulaire via FindComponent est un peu rare. Au moins, vous ne devriez pas appeler FindComponent plus que nessecary, car il est potentiellement lent.

Si vous créez un formulaire avec WebApplication en tant que propriétaire, il sera ajouté à WebApplication.Forms Web Application.FormCount est le nombre de formulaires (UserSession est un formulaire dans ce contexte). WebApplication.ActiveForm est le formulaire actuellement affiché.

Questions connexes