Página 1 de 1

TableMaker

Enviado: 12 Nov 2012 23:10
por Pablo César
Disponibilizei um aplicativo para auxiliar na confecção do Table utilizado aqui entre tags, na seção de Downloads em: Aqui

É definido o numero de coluna e de linhas e após preenchido é gerado, visualizado e disponibilizado na área de transferência, pronto para ser colado no tópico aqui no fórum.

Mas estou com um probleminha, que ainda não consegui resolver. Após gera, visualizar e fechar a janela de visualização, se eu quiser continuar outra tabela, dá um erro grave:
Tela66.PNG
Alguém saberia me dizer o que pode estar acontecendo com o ActiveX ? Talvez não esteja fechando adequadamente ? Ou faltando algum comando para encerrar direito a sessão ? Agradeço qualquer dica.

TableMaker

Enviado: 14 Nov 2012 12:54
por rochinha
Amiguinho,

Estou a disposição para debater sobre o assunto, Activex e HTML muito me interessam.

TableMaker

Enviado: 14 Nov 2012 13:03
por Pablo César
Oi Rochinha. Pois é, tive problemas com a primeira versão do TableMaker, pois após a primeira visualização do arquivo html que o fazia sem problemas (um pouco lento só), mas quando quando clicava para gerar pela segunda vez, dava esse erro que mostrei na minha mensagem anterior. Parece que o arquivo html, não era liberado, mesmo utilizando DestroyWindow( ::hWnd ) e AtlAxWinEnd() das classes no ATxPrg.prg. Afirmo que não liberava o arquivo html, porque mesmo após carregá-lo eu não conseguia deletar o arquivo, já que é um arquivo temporário. Então o jeito que eu dei, foi abri-lo no navegador e ai sim funcionou beleza, tanto foi mais rápido como consegue deletar o arquivo Temp.html.

Deixo em anexo a primeira versão, se quiser dar uma olhada. E ficarei atento aos seus comentários sobre o tema.

TableMaker

Enviado: 14 Nov 2012 17:10
por rochinha
Amiguinho,

Publique a vari[avel oWActiveX.
Coloque no evento NOINIT da window principal o trecho:

Código: Selecionar todos

oWActiveX := TActiveX():New( "Form_3", "Shell.Explorer.2" , 00 , 00 , ;
             GetProperty( "Form_3" , "width" ) - 05 , GetProperty( "Form_3" , "height" ) - 80 )
Desabilite em fOpenActivex() as linhas como segue:

Código: Selecionar todos

Function fOpenActivex()
Local cCurFolder:=StrTran(GetCurrentFolder(), '\', '/' )

WaitWindow("Carregando a tabela...", .T. )
//oWActiveX := TActiveX():New( "Form_3", "Shell.Explorer.2" , 00 , 00 , ;
//             GetProperty( "Form_3" , "width" ) - 05 , GetProperty( "Form_3" , "height" ) - 80 )
oActiveX := oWActiveX:Load()
oActiveX:Navigate( "file:///"+cCurFolder+"/Temp.html" )
WaitWindow()
Contando()
Return Nil
Pelo fato de estar instanciando toda vez o mesmo controle voce pode forçar ao aumento de carga ou chamadas.

Ao abrir o controle pelo INIT de seu form voce terá o mesmo sempre ativo enquanto trabalha.

TableMaker

Enviado: 14 Nov 2012 23:08
por Pablo César
Grande Rochinha escreveu:Pelo fato de estar instanciando toda vez o mesmo controle voce pode forçar ao aumento de carga ou chamadas.

Ao abrir o controle pelo INIT de seu form voce terá o mesmo sempre ativo enquanto trabalha.
Isso mesmo ! Deu certo, só que tive que fazer do meu jeito. Porque abrindo o ActiveX no inicio, o Form_3 ainda não está definido e daria muito trabalho para contornar. Então fiz com que executasse apenas uma vez, assim:

Código: Selecionar todos

Function fOpenActivex()
Local cCurFolder:=StrTran(GetCurrentFolder(), '\', '/' )

WaitWindow("Carregando a tabela...", .T. )
If nVez=0 // esecuta apenas uma vez
   oWActiveX := TActiveX():New( "Form_3", "Shell.Explorer.2" , 00 , 00 , ;
                GetProperty( "Form_3" , "width" ) - 05 , GetProperty( "Form_3" , "height" ) - 80 )
   nVez:=nVez+1
Else
   Adjust() // aqui ajeita o tamanho da janela
Endif			 
oActiveX := oWActiveX:Load()
oActiveX:Navigate( "file:///"+cCurFolder+"/Temp.html" )
WaitWindow()
Contando()
Return Nil
E depois na saída do programa, executo: oWActiveX:Release() para fechar.

Obrigado, colega ! Fica como experiência.