Hola compañeros, hasta ahora nunca había necesitado poner filigranas a mi browse puesto que tan solo mostraba datos de la BD. Ahora quiero poner columnas que bien muestren una imagen determinada o realicen chequeos de ficheros externos referenciados desde la base de datos. Deciros que el browse se forma en tiempo de ejecución y varia de una de una base de datos a otra. Os pongo un ejemplo para ver si me podeis ayudar.
Hasta aqui todo perfecto tanto con TCBROWSE como con XBROWSE funciona perfecto, pero ahora me gustaria implemenetar lo que os he comentado, una columna de chequeo o que aparezca una imagen cumpliendo una condición. He empezado por hacerlo fácil solo quiero que me ponga un carácter para ver como lo tengo que hacer. Para ver lo que quiero hacer fijaros en lo que he añadido en [DB] una columna mas con un if para que me muestre un caracter determinado.
Alguien se le ocurre como tengo que poner los datos para que funcione. Este es un ejemplo muy simple pero me gustaria que mostrara Bitmaps.... pero creo que una vez solucionado esto bastara poner BITMAP DATA . Supongo que es un tema de como tengo que mostrar el array en tiempo de ejecución, en el anterior se solucionó con el FieldWBlock, pero ignoro como hacerlo en este caso.
//Así funciona perfecto.
/*-----------------------------------
//En fichero externo guardo las columnas que quiero que muestre el browse es la zona del [DB]
//El primer campo que guardo es el nombre del campo y por cada uno lo guardo en un array que llamo f_expd[]
//El segundo campo es un array con el nombre que aparece en las columnas f_nomd[]
//El tercero el numero de orden de la columna.....
[DB]
ID;NOMBRE;1;;
FECHA;FECHA;2;;
HORA;HORA;3;;
NOTAS;NOTAS;4;;
[TEXT]
N§.PAG;if(type("x_npag")<>"U",str(x_npag,3),"");
[FIN]
--------------------------------------*/
//Zona de codigo del browse.
for nPos := 1 to Len(f_expd) // Array con NOMBRE DE CAMPOS
ADD COLUMN TO BROWSE oBrw; //
HEADER f_nomd[nPos] OEM ; // Array con TITULOS DE LAS COLUMNAS
DATA FieldWBlock( f_expd[nPos] , Select()) // Aca se genera el CodeBlock para el CAMPO
NextHasta aqui todo perfecto tanto con TCBROWSE como con XBROWSE funciona perfecto, pero ahora me gustaria implemenetar lo que os he comentado, una columna de chequeo o que aparezca una imagen cumpliendo una condición. He empezado por hacerlo fácil solo quiero que me ponga un carácter para ver como lo tengo que hacer. Para ver lo que quiero hacer fijaros en lo que he añadido en [DB] una columna mas con un if para que me muestre un caracter determinado.
//Así con la incorporación de otra columna a mostrar falla.
/*-----------------------------------
//En fichero externo guardo las columnas que quiero que muestre el browse es la zona del [DB]
//El primer campo que guardo es el nombre del campo y por cada uno lo guardo en un array que llamo f_expd[]
//El segundo campo es un array con el nombre que aparece en las columnas f_nomd[]
//El tercero el numero de orden de la columna.....
//El cuarto es un if de control que almaceno en otro array que solo se ejecuta si esta presente, que le llamo f_fund[]
[DB]
ID;NOMBRE;1;;
;VOZ ;2;iif(file('.\DAT\SND\'+alltrim(q_t)+'.Wav'),'X', ''); <<<<<<<<<<<<<<<<Aqui despues de la sección de nº de orden de la columna le añado una condición
FECHA;FECHA;3;;
HORA;HORA;4;;
NOTAS;NOTAS;5;;
[TEXT]
N§.PAG;if(type("x_npag")<>"U",str(x_npag,3),"");
[FIN]
---------------------------------------------------------*/
//Zona de codigo del browse.
//Si le añado la columna a mano funciona
// ADD COLUMN TO BROWSE oBrw ;
// HEADER "Voz" OEM ;
// DATA iif(file('.\DAT\SND\'+alltrim(q_t)+'.Wav'),'X', ''));
// CENTER
//Si lo hago en tiempo de ejecución no funciona....
for nPos := 1 to Len(f_expd) // Array con NOMBRE DE CAMPOS
if Empty(f_fund[nPos])
ADD COLUMN TO BROWSE oBrw; //
HEADER f_nomd[nPos] OEM ; // Array con TITULOS DE LAS COLUMNAS
DATA FieldWBlock( f_expd[nPos] , Select()) // Aca se genera el CodeBlock para el CAMPO
else
ADD COLUMN TO BROWSE oBrw; //
HEADER f_nomd[nPos] OEM ; // Array con TITULOS DE LAS COLUMNAS
DATA {|| f_fund[nPos] ) ; //Array con una FUNCION en mi caso es un iif(,,) <<<<<Aqui el error
CENTER
endif
nextAlguien se le ocurre como tengo que poner los datos para que funcione. Este es un ejemplo muy simple pero me gustaria que mostrara Bitmaps.... pero creo que una vez solucionado esto bastara poner BITMAP DATA . Supongo que es un tema de como tengo que mostrar el array en tiempo de ejecución, en el anterior se solucionó con el FieldWBlock, pero ignoro como hacerlo en este caso.
Saludos
Andrés González desde Mallorca
Andrés González desde Mallorca
