在IntraWeb中加载“bpl”

时间:2009-09-29 11:59:53

标签: delphi intraweb

我在IntraWeb,Delphi2010中设置了一个“bpl”加载模块,我发现了以下问题:
我没有创建一个实例应用程序,以免这是一个内部形式 。

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;

端;

1 个答案:

答案 0 :(得分:1)

你的问题 - 或者实际上确切的问题/错误 - 对我来说有点不清楚。通过FindComponent定位表单有点不常见。至少你不应该调用FindComponent而不是nessecary,因为它可能很慢。

如果您创建一个以WebApplication为所有者的表单,则会将其添加到WebApplication.Forms Web Application.FormCount是表单的数量(UserSession是此上下文中的表单)。 WebApplication.ActiveForm是当前显示的表单。