【问题标题】:"bpl" load in IntraWebIntraWeb 中的“bpl”加载
【发布时间】:2009-09-29 11:59:52
【问题描述】:

我在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;

结束;

【问题讨论】:

  • 我已经尝试改进您的代码格式,但我仍然不明白您的问题。您能否对其进行编辑以使其更清楚您要做什么,并包括您收到的任何错误消息? Falo português so um pouquinho.
  • 嗯...我正在设置一个模块选择器...主模块是一个 Dll,辅助模块是 Bpl,它们是从选择器 (Dll) 内部加载的,或者是: 1st在vrtClasseModulo中设置模块的名称; 2、在vrtNomeFormulario中设置模块的形式名,即Class;第三次验证她是否存在;第 4 次进行初始化,然后我呈现给表单。这就是我想要做的......值得帮助......而且我会说一些英语......很少......

标签: delphi intraweb


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2017-10-04
    • 1970-01-01
    • 1970-01-01
    • 2016-10-03
    • 1970-01-01
    • 2011-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多