Problema con nHelpTopic en Dialogos

Problema con nHelpTopic en Dialogos

Postby tsales » Wed Nov 08, 2006 4:40 pm

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
Toni Sales
tsales
 
Posts: 186
Joined: Sat Oct 08, 2005 7:32 am

Postby Antonio Linares » Wed Nov 08, 2006 6:26 pm

Toni,

Se modificó la respuesta a WM_HELP para evitar dobles llamadas a HelpTopic(), pero el código sigue siendo el mismo.

El código está en source\classes\control.prg METHOD __HelpTopic()
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41937
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby tsales » Wed Nov 08, 2006 6:56 pm

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
Toni Sales
tsales
 
Posts: 186
Joined: Sat Oct 08, 2005 7:32 am

Postby Antonio Linares » Fri Nov 10, 2006 7:13 am

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
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41937
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby tsales » Fri Nov 10, 2006 11:46 am

Antonio
Efectivamente el Metodo ON CLICK recoge el valor de nHelpId pero sigue sin funcionar aun cuando hay controles en el propio dialogo y pulsas F1 NO accede al HelpId especificado y antes funcionaba correctamente.

Saludos
Toni Sales
tsales
 
Posts: 186
Joined: Sat Oct 08, 2005 7:32 am

Postby Antonio Linares » Fri Nov 10, 2006 12:05 pm

Toni,

Esta imagen es de tu ejemplo con la modificación que te he indicado. Funciona bien:
Image
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41937
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby tsales » Fri Nov 10, 2006 1:26 pm

Antonio
No se si bien o mal, funciona diferente.

Compilado con la version 2.7 de Diciembre 2005.
Image

Compilado con la version 2.7 de Octubre 2006
Image

Antes indicando en el dialog oDlg:nHelpId:= nTopic, mostraba directamente la ayuda del nTopic.

Saludos
Toni Sales
tsales
 
Posts: 186
Joined: Sat Oct 08, 2005 7:32 am

Postby Antonio Linares » Fri Nov 10, 2006 2:07 pm

Toni,

>
Antes indicando en el dialog oDlg:nHelpId:= nTopic, mostraba directamente la ayuda del nTopic.
>

Prueba a cambiar el nHelpId de la ventana anterior al diálogo tambien, al mismo valor que oDlg:nHelpId
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41937
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby tsales » Fri Nov 10, 2006 3:08 pm

Ok, Así funciona

Saludos
Toni Sales
tsales
 
Posts: 186
Joined: Sat Oct 08, 2005 7:32 am


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 70 guests