Un problema:
Si quiero hacer un browse con _ a visualizar que sean variables, aprace el contenido todo el blanco.
No se si estoy haciendo algo erróneo.
Gracias de antemano.
Ej NO funciona:
@ 1.65, 0.5 LISTBOX oBrw FIELDS (lpCampo1),(lpCampo2),(lpCampo3)...
en cambio, si funciona:
@ 1.65, 0.5 LISTBOX oBrw FIELDS codigo,nombre1,nombre2...
Ayuda->Problema en browse con variables.
-
- Posts: 28
- Joined: Wed Dec 13, 2006 6:07 pm
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
-
- Posts: 28
- Joined: Wed Dec 13, 2006 6:07 pm
Browse
Hola Antonio,
Las variables contienen los nombres de _ a mostrar, son carácter.
Verás estoy haciendo una función genérica de búsqueda con su browse para que valga para varios ficheros: articulos, clientes.... por lo que le mando nombre de fichero y entre otras cosas más los nombres que tiene que mostrar. Te escribo el ejemplo:
=Buscar(oWnd,'Clientes',210,250,'Efth010',99,83,'cprvcod','cprvome','cprvnom'...)
FUNCTION Buscar(lpVentana,lpTitulo,lpAncho,lpAlto,lpFichero,lpAncBrw,lpAltBrw,lpCampo1,lpCampo2,lpCampo3)
@ 1.65, 0.5 LISTBOX oBrw FIELDS (lpCampo1),(lpCampo2),(lpCampo3) .... SIZE lpAncBrw, lpAltBrw....
Las variables contienen los nombres de _ a mostrar, son carácter.
Verás estoy haciendo una función genérica de búsqueda con su browse para que valga para varios ficheros: articulos, clientes.... por lo que le mando nombre de fichero y entre otras cosas más los nombres que tiene que mostrar. Te escribo el ejemplo:
=Buscar(oWnd,'Clientes',210,250,'Efth010',99,83,'cprvcod','cprvome','cprvnom'...)
FUNCTION Buscar(lpVentana,lpTitulo,lpAncho,lpAlto,lpFichero,lpAncBrw,lpAltBrw,lpCampo1,lpCampo2,lpCampo3)
@ 1.65, 0.5 LISTBOX oBrw FIELDS (lpCampo1),(lpCampo2),(lpCampo3) .... SIZE lpAncBrw, lpAltBrw....
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
-
- Posts: 28
- Joined: Wed Dec 13, 2006 6:07 pm
Sigue sin funcionar.
Creo que mandandole el nombre del campo sin comillas estamos mandando el cotenido de la variable, no el nombre en si que hace falta para montar el browse, te mando el ejemplo completo (con el cambio que propones):
Gracias de nuevo
#include "FWCE.ch"
function Main()
local cText := Space( 50 )
NumReg = 0
oWnd = 0
DEFINE WINDOW oWnd TITLE "Ejemplo"
AbrirFicheros()
@ 5, 5 BUTTON "Acción" SIZE 80, 20 ACTION Avisa(oWnd, 'Clientes',210,250,'Efth010',99,83,cprvcod,cprvome,cprvnom,'Código', 'Nombre Comercial', 'Nombre Fiscal',50,200,200)
@ 7.9, 5.1 SAY NumReg OF oWnd SIZE 80, 15
@ 7, 5 BUTTON "Dime" SIZE 80, 20 ACTION prueba(NumReg)
ACTIVATE WINDOW oWnd
RETURN nil
FUNCTION prueba(nr)
@ 9.9, 5.1 SAY Nr OF oWnd SIZE 80, 15
RETURN nil
FUNCTION Avisa(lpVentana,lpTitulo,lpAncho,lpAlto,lpFichero,lpAncBrw,lpAltBrw,lpCampo1,lpCampo2,lpCampo3,lpATit1,lpATit2,lpATit3,lpAncho1,lpAncho2,lpAncho3)
*************************************************************
* lpVentana -> Ventana padre
* lpTitulo -> Título de ventana
* lpAncho -> Ancho de pantalla
* lpAlto -> Alto de pantalla
* lpFichero -> Fichero a listar
*************************************
* Si están en blanco no se ponen.
*************************************
* lpAncBrw -> Alto del browse
* lpAltBrw -> Alto del browse
* lpCampo1 -> 1 Campo en la base de datos
* lpCampo2 -> 2 Campo en la base de datos
* lpCampo3 -> 3 Campo en la base de datos
* lpATit1 -> Título del Campo 1
* lpATit2 -> Título del Campo 2
* lpATit3 -> Título del Campo 3
* lpAncho1 -> Ancho del Campo 1
* lpAncho2 -> Ancho del Campo 2
* lpAncho3 -> Ancho del Campo 3
*
************************************************************
DEFINE FONT ofontPeque NAME "Arial" SIZE 4, -8
SELECT (lpFichero)
DEFINE DIALOG dBrowse TITLE lpTitulo SIZE lpAncho, lpAlto OF lpVentana
@ 1.65, 0.5 LISTBOX oBrw FIELDS (lpCampo1),(lpCampo2),(lpCampo3) COLSIZES 50,200,200 ;
OF dBrowse HEADERS 'Código', 'Nombre Comercial', 'Nombre Fiscal' SIZE lpAncBrw, lpAltBrw
@ 107, 35 BTNBMP oCancelar FILE CurDir() + "\bmp\cancelar.bmp" SIZE 12, 12 ACTION Cancelar()
@ 107, 65 BTNBMP oAceptar FILE CurDir() + "\bmp\ok.bmp" SIZE 12, 12 ACTION Aceptar()
@ 7.9, 5.1 SAY "Cancelar Aceptar" OF dBrowse font ofontPeque SIZE 80, 15
ACTIVATE DIALOG dBrowse CENTERED
RETURN nil
FUNCTION Aceptar(lpFichero)
SELECT (lpFichero)
NumReg = RECNO()
dBrowse:End()
RETURN nil
FUNCTION CAncelar
NumReg = 0
dBrowse:End()
RETURN nil
FUNCTION AbrirFicheros
Request DbfCdx
Request DbfFpt
RddSetDefault ('DbfCdx')
Request Hb_Lang_PLWIN
Request Hb_CodePage_PLWIN
**********
* Clientes
**********
IF .NOT. USED("Efth010")
USE (CurDir()+"\Efth010") NEW
ELSE
SELECT Efth010
ENDIF
RETURN nil
Creo que mandandole el nombre del campo sin comillas estamos mandando el cotenido de la variable, no el nombre en si que hace falta para montar el browse, te mando el ejemplo completo (con el cambio que propones):
Gracias de nuevo
#include "FWCE.ch"
function Main()
local cText := Space( 50 )
NumReg = 0
oWnd = 0
DEFINE WINDOW oWnd TITLE "Ejemplo"
AbrirFicheros()
@ 5, 5 BUTTON "Acción" SIZE 80, 20 ACTION Avisa(oWnd, 'Clientes',210,250,'Efth010',99,83,cprvcod,cprvome,cprvnom,'Código', 'Nombre Comercial', 'Nombre Fiscal',50,200,200)
@ 7.9, 5.1 SAY NumReg OF oWnd SIZE 80, 15
@ 7, 5 BUTTON "Dime" SIZE 80, 20 ACTION prueba(NumReg)
ACTIVATE WINDOW oWnd
RETURN nil
FUNCTION prueba(nr)
@ 9.9, 5.1 SAY Nr OF oWnd SIZE 80, 15
RETURN nil
FUNCTION Avisa(lpVentana,lpTitulo,lpAncho,lpAlto,lpFichero,lpAncBrw,lpAltBrw,lpCampo1,lpCampo2,lpCampo3,lpATit1,lpATit2,lpATit3,lpAncho1,lpAncho2,lpAncho3)
*************************************************************
* lpVentana -> Ventana padre
* lpTitulo -> Título de ventana
* lpAncho -> Ancho de pantalla
* lpAlto -> Alto de pantalla
* lpFichero -> Fichero a listar
*************************************
* Si están en blanco no se ponen.
*************************************
* lpAncBrw -> Alto del browse
* lpAltBrw -> Alto del browse
* lpCampo1 -> 1 Campo en la base de datos
* lpCampo2 -> 2 Campo en la base de datos
* lpCampo3 -> 3 Campo en la base de datos
* lpATit1 -> Título del Campo 1
* lpATit2 -> Título del Campo 2
* lpATit3 -> Título del Campo 3
* lpAncho1 -> Ancho del Campo 1
* lpAncho2 -> Ancho del Campo 2
* lpAncho3 -> Ancho del Campo 3
*
************************************************************
DEFINE FONT ofontPeque NAME "Arial" SIZE 4, -8
SELECT (lpFichero)
DEFINE DIALOG dBrowse TITLE lpTitulo SIZE lpAncho, lpAlto OF lpVentana
@ 1.65, 0.5 LISTBOX oBrw FIELDS (lpCampo1),(lpCampo2),(lpCampo3) COLSIZES 50,200,200 ;
OF dBrowse HEADERS 'Código', 'Nombre Comercial', 'Nombre Fiscal' SIZE lpAncBrw, lpAltBrw
@ 107, 35 BTNBMP oCancelar FILE CurDir() + "\bmp\cancelar.bmp" SIZE 12, 12 ACTION Cancelar()
@ 107, 65 BTNBMP oAceptar FILE CurDir() + "\bmp\ok.bmp" SIZE 12, 12 ACTION Aceptar()
@ 7.9, 5.1 SAY "Cancelar Aceptar" OF dBrowse font ofontPeque SIZE 80, 15
ACTIVATE DIALOG dBrowse CENTERED
RETURN nil
FUNCTION Aceptar(lpFichero)
SELECT (lpFichero)
NumReg = RECNO()
dBrowse:End()
RETURN nil
FUNCTION CAncelar
NumReg = 0
dBrowse:End()
RETURN nil
FUNCTION AbrirFicheros
Request DbfCdx
Request DbfFpt
RddSetDefault ('DbfCdx')
Request Hb_Lang_PLWIN
Request Hb_CodePage_PLWIN
**********
* Clientes
**********
IF .NOT. USED("Efth010")
USE (CurDir()+"\Efth010") NEW
ELSE
SELECT Efth010
ENDIF
RETURN nil
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Andrés,
No había entendido bien lo que querías hacer, disculpa.
Puedes hacerlo como querías, solo cambiando esto:
=Buscar(oWnd,'Clientes',210,250,'Efth010',99,83,'cprvcod','cprvome','cprvnom'...)
FUNCTION Buscar(lpVentana,lpTitulo,lpAncho,lpAlto,lpFichero,lpAncBrw,lpAltBrw,lpCampo1,lpCampo2,lpCampo3)
@ 1.65, 0.5 LISTBOX oBrw FIELDS FieldGet( FieldPos( lpCampo1 ) ),FieldGet( FieldPos( (lpCampo2) ), FieldGet( FieldPos( (lpCampo3) ) .... SIZE lpAncBrw, lpAltBrw....
Fíjate en el uso de FieldGet() y FieldPos()
No había entendido bien lo que querías hacer, disculpa.
Puedes hacerlo como querías, solo cambiando esto:
=Buscar(oWnd,'Clientes',210,250,'Efth010',99,83,'cprvcod','cprvome','cprvnom'...)
FUNCTION Buscar(lpVentana,lpTitulo,lpAncho,lpAlto,lpFichero,lpAncBrw,lpAltBrw,lpCampo1,lpCampo2,lpCampo3)
@ 1.65, 0.5 LISTBOX oBrw FIELDS FieldGet( FieldPos( lpCampo1 ) ),FieldGet( FieldPos( (lpCampo2) ), FieldGet( FieldPos( (lpCampo3) ) .... SIZE lpAncBrw, lpAltBrw....
Fíjate en el uso de FieldGet() y FieldPos()
-
- Posts: 28
- Joined: Wed Dec 13, 2006 6:07 pm
-
- Posts: 28
- Joined: Wed Dec 13, 2006 6:07 pm