Antonio
En alguna de los últimos builds, se ha realizado algun cambio que afecta al comportamiento de la llamada a ficheros de ayuda.
Asigno en cada dialogo un valor numerico a la DATA nHelpId que corresponde a un topic numerico del fichero de ayudas. Esto funcionaba correctamente y ahora no funciona. nHelpId no recibe ningun valor.
¿Que cambios se han realizado para que esto no funcione?
Saludos
Problema con nHelpTopic en Dialogos
Problema con nHelpTopic en Dialogos
Toni Sales
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Antonio
He visto el cambio, pero no entiendo el resultado que obtengo.
Prueba este ejemplo:
El ejemplo debería abrir la ayuda de fwfun y situarse en el topic "3" que corresponde a la funcion aBrwPosRec() al pulsar F1.
Antes lo hacia correctamente y ahora NO. Al parecer el Metodo __HelpTopic() de la clase control, nHelpId es siempre NIL.
Saludos
//----------------------------------------------------------------------------//
#include "FiveWin.ch"
static oWnd
function Main()
SETHELPFILE( "..\manual\fwfun.hlp")
DEFINE WINDOW oWnd TITLE "A Window"
ACTIVATE WINDOW oWnd ;
ON INIT ShowDlg()
return nil
//----------------------------------------------------------------------------//
function ShowDlg()
local oDlg
DEFINE DIALOG oDlg FROM 5, 5 TO 20, 40 TITLE "A Dialog Box"
oDlg:nHelpId := 3
ACTIVATE DIALOG oDlg NOWAIT ;
ON PAINT oDlg:Say( 1, 1, "Hello" ) ;
VALID ( MsgInfo( "Valid Clause" ), .t. )
return nil
He visto el cambio, pero no entiendo el resultado que obtengo.
Prueba este ejemplo:
El ejemplo debería abrir la ayuda de fwfun y situarse en el topic "3" que corresponde a la funcion aBrwPosRec() al pulsar F1.
Antes lo hacia correctamente y ahora NO. Al parecer el Metodo __HelpTopic() de la clase control, nHelpId es siempre NIL.
Saludos
//----------------------------------------------------------------------------//
#include "FiveWin.ch"
static oWnd
function Main()
SETHELPFILE( "..\manual\fwfun.hlp")
DEFINE WINDOW oWnd TITLE "A Window"
ACTIVATE WINDOW oWnd ;
ON INIT ShowDlg()
return nil
//----------------------------------------------------------------------------//
function ShowDlg()
local oDlg
DEFINE DIALOG oDlg FROM 5, 5 TO 20, 40 TITLE "A Dialog Box"
oDlg:nHelpId := 3
ACTIVATE DIALOG oDlg NOWAIT ;
ON PAINT oDlg:Say( 1, 1, "Hello" ) ;
VALID ( MsgInfo( "Valid Clause" ), .t. )
return nil
Toni Sales
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Toni,
Al no haber ningún control definido en el diálogo, lo que ocurre es que WM_HELP es enviado tanto al diálogo primero, como a la ventana despues. De hecho aparece primero la ayuda del diálogo, pero no se aprecia con la vista (hay que usar un breakpoint tipo MsgInfo()).
Al situar un control en el diálogo, WM_HELP es enviado al diálogo.
Prueba tu ejemplo, modificado así, y luego quítale el control GET:
#include "FiveWin.ch"
static oWnd
function Main()
SETHELPFILE( "fwfun.hlp")
DEFINE WINDOW oWnd TITLE "A Window"
oWnd:nHelpId = 2
ACTIVATE WINDOW oWnd ;
ON INIT ShowDlg()
return nil
//----------------------------------------------------------------------------//
function ShowDlg()
local oDlg, cTest := Space( 10 )
DEFINE DIALOG oDlg FROM 5, 5 TO 20, 40 TITLE "A Dialog Box"
oDlg:nHelpId := 3
@ 2, 2 GET cTest OF oDlg HELPID 4
ACTIVATE DIALOG oDlg ;
ON PAINT oDlg:Say( 1, 1, "Hello" ) ;
ON CLICK MsgInfo( oDlg:nHelpId )
return nil
Al no haber ningún control definido en el diálogo, lo que ocurre es que WM_HELP es enviado tanto al diálogo primero, como a la ventana despues. De hecho aparece primero la ayuda del diálogo, pero no se aprecia con la vista (hay que usar un breakpoint tipo MsgInfo()).
Al situar un control en el diálogo, WM_HELP es enviado al diálogo.
Prueba tu ejemplo, modificado así, y luego quítale el control GET:
#include "FiveWin.ch"
static oWnd
function Main()
SETHELPFILE( "fwfun.hlp")
DEFINE WINDOW oWnd TITLE "A Window"
oWnd:nHelpId = 2
ACTIVATE WINDOW oWnd ;
ON INIT ShowDlg()
return nil
//----------------------------------------------------------------------------//
function ShowDlg()
local oDlg, cTest := Space( 10 )
DEFINE DIALOG oDlg FROM 5, 5 TO 20, 40 TITLE "A Dialog Box"
oDlg:nHelpId := 3
@ 2, 2 GET cTest OF oDlg HELPID 4
ACTIVATE DIALOG oDlg ;
ON PAINT oDlg:Say( 1, 1, "Hello" ) ;
ON CLICK MsgInfo( oDlg:nHelpId )
return nil
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact: