FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Error en clausula transparent de SAY SOLUCIONADO
Posts: 464
Joined: Tue Mar 21, 2006 07:30 PM
Error en clausula transparent de SAY SOLUCIONADO
Posted: 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 (fw): Select all Collapse
* ------------------------------------------------------------------
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 (fw): Select all Collapse
* ------------------------------------------------------------------
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 (fw): Select all Collapse
          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.
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: Error en clausula transparent de SAY
Posted: Sat Jan 26, 2013 04:04 PM
Hola Pedro, intenta asi:
Code (fw): Select all Collapse
     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
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: Error en clausula transparent de SAY
Posted: Sat Jan 26, 2013 04: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!
Posts: 464
Joined: Tue Mar 21, 2006 07:30 PM
Re: Error en clausula transparent de SAY
Posted: Sat Jan 26, 2013 04: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
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: Error en clausula transparent de SAY
Posted: Sat Jan 26, 2013 05: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... :-)
Dios no está muerto...



Gracias a mi Dios ante todo!
Posts: 464
Joined: Tue Mar 21, 2006 07:30 PM
Re: Error en clausula transparent de SAY SOLUCIONADO
Posted: Sat Jan 26, 2013 05: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
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: Error en clausula transparent de SAY SOLUCIONADO
Posted: Sat Jan 26, 2013 05: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!
Posts: 464
Joined: Tue Mar 21, 2006 07:30 PM
Re: Error en clausula transparent de SAY SOLUCIONADO
Posted: 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

Continue the discussion