Diálogo NOMODAL y variable PRIVATE

Diálogo NOMODAL y variable PRIVATE

Postby Manuel Aranda » Fri Oct 19, 2007 4:50 pm

En un diálogo MODAL tengo un BROWSE que se va filtrando según voy tecleando letras; para ello uso una variable PRIVATE y todo va perfectamente. Al convertir el dialogo a NOMODAL me salta el error de que la variable cKey no existe. ¿Por qué?

Code: Select all  Expand view
PRIVATE cKey
cKey=""
//
  DEFINE DIALOG oDlg RESOURCE "AGENDA" TITLE cTitulo FONT oFont1
   oDlg:lHelpIcon:=.F.

     REDEFINE LISTBOX oLbx ;
            FIELDS IIF(EMPTY(AGENDA->Ubicado)," ",aLevel[ 5 ] ),;
            +" "+AGENDA->Texto+" ";
            FIELDSIZES 16,300;
            HEADERS "A", "       Texto";
            ID 200;
            OF oDlg

     oLbx:bkeydown:={|nKey|DOKEYCHECK(nKey,oLbx,oDlg,oSay)}
User avatar
Manuel Aranda
 
Posts: 604
Joined: Wed Oct 19, 2005 8:20 pm
Location: España

Postby karinha » Fri Oct 19, 2007 6:30 pm

MEMVAR cKey
PRIVATE cKey

cKey := ""

Repita en las otras funciones, si usas la variable en las otras funciones.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7664
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Postby Manuel Aranda » Fri Oct 19, 2007 6:55 pm

Gracias karinha, pero persiste el error. La variable cKey se usa en la función DOKEYCHECK(nKey,oLbx,oDlg,oSay), y como ya dije, cuando el diálogo es MODAL no hay problema.

Un saludo,
Manuel
User avatar
Manuel Aranda
 
Posts: 604
Joined: Wed Oct 19, 2005 8:20 pm
Location: España

Postby karinha » Fri Oct 19, 2007 7:12 pm

#include "FiveWin.ch"

//----------------------------------------------------------------//
Code: Select all  Expand view
function Main()

LOCAL oLbx, oDlg, oSay, nKey := VK_RETURN

MEMVAR  cKey
PRIVATE cKey

cKey := "teste de cKey, Manuel Aranda"

? ckey

  DEFINE DIALOG oDlg RESOURCE "AGENDA" TITLE cTitulo FONT oFont1

   oDlg:lHelpIcon:=.F.

  REDEFINE LISTBOX oLbx ;
           FIELDS IIF(EMPTY(AGENDA->Ubicado)," ",aLevel[ 5 ] ),;
           +" "+AGENDA->Texto+" ";
           FIELDSIZES 16,300;
           HEADERS "A", "       Texto";
           ID 200;
           OF oDlg

     oLbx:bkeydown:={|nKey|DOKEYCHECK(nKey,oLbx,oDlg,oSay)}

   ACTIVATE DIALOG oDlg CENTERED


    DOKEYCHECK(nKey,oLbx,oDlg,oSay)

RETURN NIL

STATIC FUNCTION DOKEYCHECK(nKey,oLbx,oDlg,oSay)

    MEMVAR  cKey

    ? cKey

RETURN( .T. )
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7664
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Postby Manuel Aranda » Fri Oct 19, 2007 7:23 pm

Así si funciona, pero si haces el diálogo NOMODAL es cuando se produce el error

ACTIVATE DIALOG oDlg CENTERED NOMODAL
User avatar
Manuel Aranda
 
Posts: 604
Joined: Wed Oct 19, 2005 8:20 pm
Location: España

Postby karinha » Fri Oct 19, 2007 7:35 pm

ACTIVATE DIALOG oDlg CENTERED NOMODAL

SI USAS RECURSOS, DESHABILITE EN EL RECURSO DEL WORKSHOP.EXE LA CLAUSULA MODAL FRAME SOLAMENTE.

CREO, QUE SEA APENAS ESTO.

Regards, saludos.

QUE INTENTAS HACER???
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7664
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Postby jacgsoft » Fri Oct 19, 2007 8:49 pm

pues declara como Publica y listo

Public cKey
User avatar
jacgsoft
 
Posts: 104
Joined: Fri Nov 24, 2006 9:03 pm
Location: Lima - Peru

Postby Manuel Aranda » Sat Oct 20, 2007 10:24 am

karinha, sigue el mismo error independientemente de que la ventana sea modal o no modal en el recurso.

jacgsoft, gracias. Haciendo pública la variable ya funciona correctamente.
Pero me intriga saber por qué no funciona como private si hago el diálogo NOMODAL. En fín, como tantas otras cosas. Correremos un tupido velo y aplicaremos la máxima "si funciona no lo toques".

Un saludo,
Manuel
User avatar
Manuel Aranda
 
Posts: 604
Joined: Wed Oct 19, 2005 8:20 pm
Location: España

Postby Francisco Horta » Sat Oct 20, 2007 6:20 pm

Miguel, prueba a pasarla como referencia a ver si funciona DOKEYCHECK(nKey,oLbx,oDlg,oSay,@cKey)

STATIC FUNCTION DOKEYCHECK(nKey,oLbx,oDlg,oSay,cKey)
salu2
Paco
Francisco Horta
 
Posts: 845
Joined: Sun Oct 09, 2005 5:36 pm
Location: la laguna, mexico.

Postby Manuel Aranda » Sat Oct 20, 2007 6:32 pm

Gracias Francisco, pero tampoco funciona así.

Un saludo,
Manuel

Francisco Horta wrote:Miguel, prueba a pasarla como referencia a ver si funciona DOKEYCHECK(nKey,oLbx,oDlg,oSay,@cKey)

STATIC FUNCTION DOKEYCHECK(nKey,oLbx,oDlg,oSay,cKey)
salu2
Paco
User avatar
Manuel Aranda
 
Posts: 604
Joined: Wed Oct 19, 2005 8:20 pm
Location: España

Postby Francisco Horta » Sun Oct 21, 2007 1:08 am

Migeul, probaste a declararla STATIC y probaste tambien como LOCAL ? preba pasandola como refer aver si funciona. sino lo mas facil es declararla PUBLIC
salu2
paco
Francisco Horta
 
Posts: 845
Joined: Sun Oct 09, 2005 5:36 pm
Location: la laguna, mexico.

Postby wilsongamboa » Sun Oct 21, 2007 1:34 am

Manuel
me parece que cuando es nomodal el dialogo, la funcion donde declaras private a la variable ya termino de ejecutarse y solo queda activado el dialogo, porque la ejecucion del programa no se detiene, y por eso ya no existe esa variable, mejor la trabajas como local, porque igual si la declaras public el contenido de la misma variaria si acceden al mismo dialogo varias veces

bueno espero te ayude

Saludos
Wilson 'W' Gamboa A
Wilson.josenet@gmail.com
User avatar
wilsongamboa
 
Posts: 581
Joined: Wed Oct 19, 2005 6:41 pm
Location: Quito - Ecuador

Postby Manuel Aranda » Sun Oct 21, 2007 9:36 am

Gracias a todos, especialmente a Francisco Horta. Pasándola como referencia funciona si se define como LOCAL o STATIC pero no como PRIVATE que es como la tenía cuando el diálogo era MODAL. De todas formas prefiero esta solución a declararla PUBLICA.

Un saludo,
Manuel
User avatar
Manuel Aranda
 
Posts: 604
Joined: Wed Oct 19, 2005 8:20 pm
Location: España

Postby Antonio Linares » Sun Oct 21, 2007 9:42 am

Manuel,

Como te indica Wilson, la ejecución no se detiene y entonces sales del ámbito en donde la variable private fué creada y la maquina virtual de Harbour la destruye
regards, saludos

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


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: nageswaragunupudi, Willi Quintana and 43 guests