2009-09-29 2 views
0

Я создаю модуль загрузки «bpl» в IntraWeb, Delphi2010, и я нашел следующую проблему:
Я не могу создать экземпляр приложения, чтобы оно не было является внутренней формой.
.«bpl» load in 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; 

конец;

+0

Я пытался улучшить форматирование кода, но я до сих пор не понимаю ваш вопрос. Не могли бы вы отредактировать его, чтобы сделать более понятным, что вы пытаетесь сделать, и включить любые сообщения об ошибках, которые вы получаете? Falo português só um pouquinho. – Argalatyr

+0

Ну ... Я настраиваю селектор модулей ... Основным модулем является Dll, а вторичные модули - Bpl, которые загружаются из селектора (Dll), или будут: 1-я настройка имя модуля в vrtClasseModulo; 2-ая настройка имени формы модуля в vrtNomeFormulario, то есть класса; Третья проверка, существует ли она; и 4-й, чтобы инициализировать и представить для формирования. Это то, что я хочу делать .... Это стоило помощи ... и я говорю по-английски .... очень мало .... – Amir

ответ

1

Ваш вопрос - или на самом деле точная проблема/ошибка - для меня немного неясен. Поиск формы через FindComponent является немного необычным. По крайней мере, вы не должны называть FindComponent более чем незаметным, поскольку он потенциально медленный.

Если вы создаете форму с WebApplication, являющейся ее владельцем, она будет добавлена ​​в WebApplication.Forms Web Application.FormCount - это количество форм (UserSession - это форма в этом контексте). WebApplication.ActiveForm - это форма, которая в настоящее время показана.

 Смежные вопросы

  • Нет связанных вопросов^_^