Página 1 de 2
Erro em hwg_EndDialog() (Era Handle e não objeto)
Enviado: 27 Out 2021 14:48
por JoséQuintas
A alegria durou pouco.
Alterei pra dialog e....
Código: Selecionar todos
Error BASE/1072 Argument error: <>
Called from HWG_ENDDIALOG(551)
Called from (b)HWGUIBROWSE(33)
Called from HBROWSE:EDIT(1852)
Called from HBROWSE:BUTTONDBL(1757)
Called from HBROWSE:ONEVENT(423)
Called from HWG_DLGBOXINDIRECT(0)
Called from HDIALOG:ACTIVATE(159)
Called from HWGUIBROWSE(37)
Called from PTESHWGUI(15)
Called from DOPRG(139)
Called from (b)RUNMODULE(115)
Funcionou hwg_EndWindow( oDlgPesquisa ), ao usar INIT WINDOW
Alterei pra dialog, mas dá erro em hwg_EndDialog( oDlgPesquisa ), ao usar INIT DIALOG.
O erro é em ENTER.
No clique nada acontece.
O barato é doido.
Alguma idéia?
Error BASE/1004 No exported method: PROPS2ARR
Enviado: 27 Out 2021 14:51
por Itamar M. Lins Jr.
Olá!
Acredito que é um BUG, tenho pego esse erro aqui de 1 cliente apenas. Não sei pq.
Mas agora que vc está com o mesmo problema, vou verificar isso.
Saudações,
Itamar M. Lins Jr.
Error BASE/1004 No exported method: PROPS2ARR
Enviado: 27 Out 2021 14:56
por Itamar M. Lins Jr.
Olá!
A linha 551 do erro na \source\winapi\hdialog.prg
Código: Selecionar todos
IF ( ( oDlg := Atail( HDialog():aModalDialogs ) ) == Nil .OR. ;
oDlg:handle != handle ) .AND. ;
( oDlg := HDialog():FindDialog( handle ) ) == Nil
RETURN Nil
ENDIF == Nil
Quando não tem a janela de ORIGEM outra janela por traz.
Saudações,
Itamar M. Lins Jr.
Error BASE/1004 No exported method: PROPS2ARR
Enviado: 27 Out 2021 15:13
por Itamar M. Lins Jr.
Olá!
oDlg:handle != handle //Deve ser aqui. Se LOCAL oDLG como é oDlg:handle ?
Saudações,
Itamar M. Lins Jr.
Error BASE/1004 No exported method: PROPS2ARR
Enviado: 27 Out 2021 16:42
por JoséQuintas
Itamar M. Lins Jr. escreveu:Erro velho detectado pelo Gilberto.
viewtopic.php?f=46&t=25508&p=149137&hilit=props2arr#p149137
E vc mesmo José Quintas tinha dado a resposta.
É no mesmo lugar, mas não o mesmo erro.
Naquela época foi corrigido pra assumir o fonte da janela "pai/mãe" somente se não passar parâmetro.
Justamente no caso atual, não existe janela pai/mãe.
Talvez aquilo já tenha até sido mexido antes, porque eventualmente, como eu fiz, acaba numa situação que a Dialog não tem pai/mãe, e não existe NADA pra servir de referência.
"Talvez" deva existir uma referência "master", independente de janelas, pra servir de default.
Ou talvez até o Windows já faça isso, por isso funciona sem definir fonte.
Error BASE/1004 No exported method: PROPS2ARR
Enviado: 27 Out 2021 17:49
por JoséQuintas
Sobre o outro erro....
Itamar, lá tá certo
Código: Selecionar todos
IF ( ( oDlg := Atail( HDialog():aModalDialogs ) ) == Nil .OR. ;
oDlg:handle != handle ) .AND. ;
( oDlg := HDialog():FindDialog( handle ) ) == Nil
RETURN Nil
ENDIF
Nessa linha tem oDlg := Atail( HDialog():aModalDialogs )
Então, a própria linha já cria a variável com conteúdo.
Se isso for verdadeiro, já não analisa a outra parte que poderia dar erro.
Mas... acho que tem coisa errada aí.
Vamos analisar direito.
Error BASE/1004 No exported method: PROPS2ARR
Enviado: 27 Out 2021 17:54
por JoséQuintas
Essa parte tá esquisita, pelo menos por enquanto.
Error BASE/1004 No exported method: PROPS2ARR
Enviado: 27 Out 2021 17:59
por Itamar M. Lins Jr.
Olá!
Código: Selecionar todos
FUNCTION hwg_EndDialog( handle )
LOCAL oDlg, lRes
IF handle == Nil
IF ( oDlg := Atail( HDialog():aModalDialogs ) ) == Nil
RETURN Nil
ENDIF
ELSE
IF ( ( oDlg := Atail( HDialog():aModalDialogs ) ) == Nil .OR. ;
oDlg:handle != handle ) .AND. ;
( oDlg := HDialog():FindDialog( handle ) ) == Nil
RETURN Nil
ENDIF
ENDIF
IF oDlg:bDestroy != Nil
lRes := Eval( oDlg:bDestroy, oDlg )
IF Valtype( lRes ) != "L" .OR. lRes
RETURN Iif( oDlg:lModal, Hwg__EndDialog( oDlg:handle ), hwg_Destroywindow( oDlg:handle ) )
ELSE
RETURN Nil
ENDIF
ENDIF
RETURN Iif( oDlg:lModal, Hwg__EndDialog( oDlg:handle ), hwg_Destroywindow( oDlg:handle ) )
Tem um BUG ai na função.
Se oDLG é LOCAL, aqui: oDlg := Atail( HDialog():aModalDialogs ) ) == Nil, se for NIL não sera oDlg:Handle = (objeto), então logo em seguida vai dar o erro.
Aqui: .OR. oDlg:handle != handle, porque oDlg sendo NIL então "NIL:HANDLE" -> (oDlg:handle) != handle ?
Saudações,
Itamar M. Lins Jr.
Error BASE/1004 No exported method: PROPS2ARR
Enviado: 27 Out 2021 18:08
por JoséQuintas
Tem não.
Não pegou o espírito da coisa.
Isso acima não dá erro, porque A := 2 atribui 2 à variável, e o .OR. vai fazer número contra número.
O mesmo na rotina da HMG.
Se não for Nil, significa que oDlg tem uma Dialog.
Erro em Dialog
Enviado: 27 Out 2021 20:19
por JoséQuintas
Voltando à linha que mencionou:
Tudo bem, estávamos vendo um lado do IF, agora é ver o outro.
Erro em Dialog
Enviado: 27 Out 2021 20:23
por Itamar M. Lins Jr.
Olá!
O mesmo erro.
Código: Selecionar todos
Error BASE/1072 Erro nos parƒmetros: <>
Called from source\winapi\hdialog.prg->HWG_ENDDIALOG(551)
Called from source\winapi\hprogres.prg->HPROGRESSBAR:CLOSE(190)
Called from prg\FecharMovimento.prg->PROCESSADIAS(164)
Saudações,
Itamar M. Lins Jr.
Erro em Dialog
Enviado: 27 Out 2021 20:24
por Itamar M. Lins Jr.
Olá!
Baguncei o outro tópico, me perdi com esse daqui.
Saudações,
Itamar M. Lins Jr.
Erro em Dialog
Enviado: 27 Out 2021 20:32
por Itamar M. Lins Jr.
Olá!
Pois é como que .T. ou .F. sera .T. ou .F.:handle != handle ?
Saudações,
Itamar M. Lins Jr.
Erro em Dialog
Enviado: 27 Out 2021 20:39
por Itamar M. Lins Jr.
Olá!
Isso ai é só para dizer:
Se NÃO existe uma janela DIALOG MODAL ou não MODAL, faça isso: SAIA DA FUNÇÃO !
O erro é COMPARAR se é diferente (!=) de HANDLE, pq precisa ser uma classe oDlg com o método HANDLE -> oDlg:Handle != handle.
ATAIL() está transformando oDlg em uma coisa que não é uma CLASSE com o METODO handle.
Saudações,
Itamar M. Lins Jr.
Erro em Dialog
Enviado: 27 Out 2021 20:46
por JoséQuintas
Não sei como ninguém percebeu o erro.
Código: Selecionar todos
FUNCTION hwg_EndDialog( handle )
LOCAL oDlg, lRes
IF handle == Nil
IF ( oDlg := Atail( HDialog():aModalDialogs ) ) == Nil
RETURN Nil
ENDIF
ELSE
MsgExclamation( "handle:" + ValType( handle ) )
IF ( oDlg := Atail( HDialog():aModalDialogs ) ) != Nil
MsgExclamation( "oDlg:Handle:" + ValType( oDlg:Handle ) )
ENDIF
Portanto, hwg_EndDialog( oDlgPesquisa ) vai dar erro mesmo.