Error en clausula transparent de SAY SOLUCIONADO

Error en clausula transparent de SAY SOLUCIONADO

Postby Pedro » Sat Jan 26, 2013 12:52 pm

Estimados amigos

Estoy modificando un diálogo, que en principio sólo tenía un color de fondo, para adaptarlo a una imagen de fondo.
Dado que en los say tenían el color de la letra y del fondo, para adaptarlos puse la clausula transparent al say cambiando el código de esta manera :
Code: Select all  Expand view
* ------------------------------------------------------------------
FUNCTION PNomPac(oDlg,aTextos)
* ------------------------------------------------------------------
Local oSay[0]
Local nInd := 0
Local nTotal := Len(aTextos)

      ASIZE(oSay,nTotal)
     
      For nInd := 1 TO nTotal
          REDEFINE SAY oSay[nInd] VAR aTextos[nInd] ID nInd+100 OF oDlg FONT oFont ;
          COLOR RGB(0,0,0),RGB(153,255,255) FONT oFont      
      EndFor

Return nil


Code: Select all  Expand view
* ------------------------------------------------------------------
FUNCTION PNomPac(oDlg,aTextos)
* ------------------------------------------------------------------
Local oSay[0]
Local nInd := 0
Local nTotal := Len(aTextos)

      ASIZE(oSay,nTotal)
     
      For nInd := 1 TO nTotal
          REDEFINE SAY oSay[nInd] VAR aTextos[nInd] ID nInd+100 OF oDlg FONT oFont TRANSPARENT
      EndFor

Return nil


El caso es que sin la clausula transparent no da errores de ejecución y se ve el diálogo, mal por no tener el color del fondo el SAY pero se ve.
En cambio si pongo que sea transparente da un error de rango en el Array, el cual está definido con la longitud de aTextos, que en este caso es 15
y salta al 16. Este es el error : Time from start: 0 hours 0 mins 2 secs
Error occurred at: 26-01-2013, 12:44:17
Error description: Error BASE/1132 Error de rango: acceso al array
Args:
[ 1] = A { ... }
[ 2] = N 16


Deciros que la línea del error es la línea del REDEFINE y entre el FOR y el REDEFINE he puesto lo siguiente para ver si pillo el error
Code: Select all  Expand view
         If nInd > 15
             msginfo(nInd)
             exit
          EndIf  

pues bien se lo salta y casca el error en la línea del REDEFINE, como si en esas líneas nInd no fuera mayor de 15

Antonio, aún estoy a la espera de que me digas por qué el TxBrowse casca de una versión a otra.
Last edited by Pedro on Sat Jan 26, 2013 5:12 pm, edited 1 time in total.
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
User avatar
Pedro
 
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Error en clausula transparent de SAY

Postby FranciscoA » Sat Jan 26, 2013 4:04 pm

Hola Pedro, intenta asi:
Code: Select all  Expand view
    For nInd := 1 TO nTotal
          REDEFINE SAY oSay[nInd] VAR aTextos[nInd] ID nInd+100 OF oDlg FONT oFont TRANSPARENT

          If nInd == nTotal
              exit
           EndIf  
      EndFor
 
Saludos
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2114
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Error en clausula transparent de SAY

Postby joseluisysturiz » Sat Jan 26, 2013 4:33 pm

Saludos, verifica que los ID de los SAY esten comprendidos entre 1-16 ó 15 segun sea tu caso, pareciera que uno esta fuera de ese rango, saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: Error en clausula transparent de SAY

Postby Pedro » Sat Jan 26, 2013 4:49 pm

Hola Francisco y José Luis

Francisco, ya lo intenté así, por si pillaba el error ahí, pero no, tampoco lo pillaba saltaba el error sin entrar en esas líneas

José Luis, aTextos es un arreglo en donde pongo los nombres que deben ir en los says, por lo que habrás notado tomo su longitud para hacer el bucle, y no, no hay 16 solamente hay 15
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
User avatar
Pedro
 
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Error en clausula transparent de SAY

Postby joseluisysturiz » Sat Jan 26, 2013 5:01 pm

Pedro wrote:Hola Francisco y José Luis

Francisco, ya lo intenté así, por si pillaba el error ahí, pero no, tampoco lo pillaba saltaba el error sin entrar en esas líneas

José Luis, aTextos es un arreglo en donde pongo los nombres que deben ir en los says, por lo que habrás notado tomo su longitud para hacer el bucle, y no, no hay 16 solamente hay 15


Pedro, eso lo vi, lo que te comentaba es que revisaras en tu archivo de recurso que los ID de los SAY esten comprendidos entre 1 y 15, saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: Error en clausula transparent de SAY SOLUCIONADO

Postby Pedro » Sat Jan 26, 2013 5:08 pm

Disculpa José Luis, lo había entendido mal, pero en los recurso hay 15 Says igualmente.

Bueno después de darle mil vueltas, he hallado la solución, al parecer hay que inicializar los SAYS en el ON INIT del diálogo.
Lo que no logro entender es el motivo por el cual hay que inicializarlos en el on init lo que tiene la clausula transparent.
En fin cosas de la programación
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
User avatar
Pedro
 
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Error en clausula transparent de SAY SOLUCIONADO

Postby joseluisysturiz » Sat Jan 26, 2013 5:27 pm

Pedro wrote:Disculpa José Luis, lo había entendido mal, pero en los recurso hay 15 Says igualmente.

Bueno después de darle mil vueltas, he hallado la solución, al parecer hay que inicializar los SAYS en el ON INIT del diálogo.
Lo que no logro entender es el motivo por el cual hay que inicializarlos en el on init lo que tiene la clausula transparent.
En fin cosas de la programación


Pedro, eso de inicilizar los SAYS en el ON INIT nunca lo he hecho y no tengo problemas con los SAY TRANSPARENTE y a lo que me refiero no es a la cantidad de SAYS en tu recurso, sino a los ID(name) de cada SAY, pero bueno, que hayas resuelto es lo mas importante, aunque es extraña tu solucion encontrada, saludos...
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: Error en clausula transparent de SAY SOLUCIONADO

Postby Pedro » Sun Jan 27, 2013 10:31 am

Estimado José Luis

Yo tampoco he inicializado nunca los Says en el ON INIT del diálogo, pero si no se hace así casca el programa, y si no haz la prueba
porque yo tengo eso mismo en más sitios del programa y en cuanto pongo la clausula transparent, error al canto, si no inicializo en el ON INIT.

A ver si Antonio nos ilumina un poco con esto.
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
User avatar
Pedro
 
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 29 guests