Chamar outro form no intraweb
oi, pessoal, eu estava programando com o intraweb ( o que raramente tenho feito) e me deparei com um problema: eu precisava chamar outro form, porem o comando form2.show nao funcionou, como chamo outro form pelo intraweb?
agora tive que dar uma parada no projeto por causa disso. pra variar o forum ficou uns 3 dias fora do ar. Ajudem, por favor, é para um artigo muito interessante que eu estou desenvolvendo.
brigadao...
agora tive que dar uma parada no projeto por causa disso. pra variar o forum ficou uns 3 dias fora do ar. Ajudem, por favor, é para um artigo muito interessante que eu estou desenvolvendo.
brigadao...
Davicdc
Curtidas 0
Respostas
Marcelo Carvalho
20/06/2003
Oi,
Tem várias formas.
1) Na primeira, você cria o formulário dinamicamente e o mostra, e depois destrói o formulário atual. Funciona como uma mudança de página em um site. Desta forma não é possível [b:0bb7ba7506]voltar[/b:0bb7ba7506]* (com Release) à página anterior, e seu conteúdo eventualmente alterado (ex: dados preenchidos em formulários) é perdido. Mas torna possível que uma aplicação IW tenha navegação livre, em qualquer seqüência de páginas, como em um site.
*Não pode-se ´voltar´, mas pode-se ´ir de novo´...
2) Uma alternativa semelhante à anterior, que permite que se configure alguma coisa na página a ser aberta antes de mostrá-la:
3) Noutro método, você não destrói a página atual. Funcionaria como um ´show modal´, mesmo que só usando ´show´. O usuário passa para a próxima janela, mas a anterior não é destruída. Ao se utilizar ´Release´ na nova janela, volta-se à anterior, que tem seus dados (ex: valores de formulários) mantidos:
4) Se preferir, ainda pode-se criar as páginas seguintes (do tipo modal) ao inicializar o programa (páginas persistentes), e chamá-las quando for utilizar. Fica parecido com o que uma aplicação típica Delphi faz, mas pode consumir mais recursos do servidor. Mas pode ser útil se você souber que essas páginas serão de qualquer forma utilizadas pelo seu usuário, e com bastante freqüência:
5) Meio maluca, esta opção permite se usar um formulário persistente, sem criá-lo no início. Será criado só na primeira vez que for utilizado, e ficará até o fim da sessão. Na verdade a idéia é tentar abrí-lo, e se der erro, criá-lo e tentar de novo. O risco é ficar provocando ´Access Violations´, ainda que de forma controlada...
Ah, não se esqueça de incluir as units dos formulários a serem chamados na cláusula Uses do formulário ´chamante´...
Tem várias formas.
1) Na primeira, você cria o formulário dinamicamente e o mostra, e depois destrói o formulário atual. Funciona como uma mudança de página em um site. Desta forma não é possível [b:0bb7ba7506]voltar[/b:0bb7ba7506]* (com Release) à página anterior, e seu conteúdo eventualmente alterado (ex: dados preenchidos em formulários) é perdido. Mas torna possível que uma aplicação IW tenha navegação livre, em qualquer seqüência de páginas, como em um site.
*Não pode-se ´voltar´, mas pode-se ´ir de novo´...
// Botão para abrir o formulário: procedure TIWForm1.IWButton2Click(Sender: TObject); begin // Forma simples - cria dinamicamente um "formulário" e já o mostra: TIWForm3.Create(WebApplication).Show; // Destrói o formulário atual: Release; end;
2) Uma alternativa semelhante à anterior, que permite que se configure alguma coisa na página a ser aberta antes de mostrá-la:
// Botão para abrir o formulário: procedure TIWForm1.IWButton1Click(Sender: TObject); begin // Assim posso criar dinamicamente o "formulário" a ser mostrado, // e ainda alterar alguma informação nele: with TIWForm2.Create(WebApplication) do begin IWLabel2.Caption:=´Blá bla bla´; Show; end; // Destrói o formulário atual: Release; end;
3) Noutro método, você não destrói a página atual. Funcionaria como um ´show modal´, mesmo que só usando ´show´. O usuário passa para a próxima janela, mas a anterior não é destruída. Ao se utilizar ´Release´ na nova janela, volta-se à anterior, que tem seus dados (ex: valores de formulários) mantidos:
// Botão para abrir o formulário: procedure TIWForm1.IWButton4Click(Sender: TObject); begin // Forma simples - cria dinamicamente um "formulário" e já o mostra: TIWForm4.Create(WebApplication).Show; // O formulário não é destruído, permitindo o retorno com Release. end;
4) Se preferir, ainda pode-se criar as páginas seguintes (do tipo modal) ao inicializar o programa (páginas persistentes), e chamá-las quando for utilizar. Fica parecido com o que uma aplicação típica Delphi faz, mas pode consumir mais recursos do servidor. Mas pode ser útil se você souber que essas páginas serão de qualquer forma utilizadas pelo seu usuário, e com bastante freqüência:
var // Páginas persistentes: (variáveis locais ao Form principal TIWForm1) F6: TIWForm6; procedure TIWForm1.IWAppFormCreate(Sender: TObject); begin // Outra opção seria criá-lo no OnCreate do Form1, e deixá-lo já criado. F6:=TIWForm6.Create(WebApplication); end; // Botão para abrir o formulário: procedure TIWForm1.IWButton6Click(Sender: TObject); begin // Mostra a página 6 pré-criada: F6.Show; // O formulário não é destruído, permitindo o retorno com Release. end;
5) Meio maluca, esta opção permite se usar um formulário persistente, sem criá-lo no início. Será criado só na primeira vez que for utilizado, e ficará até o fim da sessão. Na verdade a idéia é tentar abrí-lo, e se der erro, criá-lo e tentar de novo. O risco é ficar provocando ´Access Violations´, ainda que de forma controlada...
var // Páginas persistentes: (variáveis locais ao Form principal TIWForm1) F5: TIWForm5; // Botão para abrir o formulário: procedure TIWForm1.IWButton5Click(Sender: TObject); begin // Neste modo, tenta abrir o formulário, e se der erro o cria. try // TENTA mostrar o formulário. // Se não existir, gera um erro Access Violation (encapsulado) F5.Show; except // Cria o formulário F5:=TIWForm5.Create(WebApplication); F5.Show; end; // O formulário não é destruído, permitindo o retorno com Release. end;
Ah, não se esqueça de incluir as units dos formulários a serem chamados na cláusula Uses do formulário ´chamante´...
GOSTEI 0