Hola a todos:
Vamos a ver.... si yo hago:
CLASS TFORM FROM XFORM
PROPERTY nClrPane := RGB(255,0,0)
ENDCLASS
Se supone, creo entender, que se sobrecarga la data nClrPane para TODOS
mis fomularios, y me tendria que pintar el fondo en rojo en todos ellos,
peeeeeero....
Si yo hago un DEFINE FORM, con el preprocesado que hizo Bingen para
hacer formularios con codigo, pues todo va bien, tengo un form con fondo
rojo y todos los forms que haga a partir de DEFINE FORM tienen el fondo
rojo.
Sin embargo si yo hago un formulario desde el IDE, me pone el color de
fondo predeterminado, y no hay manera de cambiarlo para que me respete
la sobrecarga de la propiedad, porque el IDE asgina el color al
formulario en "algun lugar", no en el eventro CREATEFORM(), no aparece
por ningun sitio, y no hay forma de decirle al IDE que no tome el color
predeterminado (se podria cambiar en el on initialize, pero... ¿ para
que sobrecargue la propiedad ?).
Pregunta.... ¿ habra alguna forma de decirle al IDE que NO QUIERO LOS
COLORES ESTANDAR y que me respete la sobrecarga de la clase ?.
Saludos
Rene Flores
http://www.ciber-tec.com
In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Form desde codigo y from desde IDE
-
- Mensajes: 620
- Registrado: Jue Mar 23, 2006 2:39 am
-
- Mensajes: 620
- Registrado: Jue Mar 23, 2006 2:39 am
Form desde codigo y from desde IDE
Me respondo a mi mismo:
>
> CLASS TFORM FROM XFORM
> PROPERTY nClrPane INIT RGB(255,0,0)
> ENDCLASS
Esto hecho asi, asignando directamente a la PROPERTY funciona sin problmeas
Ahora lo que no funciona es:
APPDATA:ADDDATA("colorventana",Rgb(255,0,0))
CLASS TFORM FROM XFORM
PROPERTY nClrPan INIT APPDATA:ColorVentana
ENDCLASS
Si asgino directametne el color, funciona, si lo hago por una appdata
no, lo curiosos es que tengo 2 propiedades sobrecargadas por APPDATA
anteriores una sobre TBROWSE y otra sobre TEDIT y funcionan sin
problema, pero cuando llega a la linea donde esta el TFORM la aplicacion
se congela y se queda ahi...
Alguna sugerencia ?
Saludos
Rene Flores
http://www.ciber-tec.com
>
> CLASS TFORM FROM XFORM
> PROPERTY nClrPane INIT RGB(255,0,0)
> ENDCLASS
Esto hecho asi, asignando directamente a la PROPERTY funciona sin problmeas
Ahora lo que no funciona es:
APPDATA:ADDDATA("colorventana",Rgb(255,0,0))
CLASS TFORM FROM XFORM
PROPERTY nClrPan INIT APPDATA:ColorVentana
ENDCLASS
Si asgino directametne el color, funciona, si lo hago por una appdata
no, lo curiosos es que tengo 2 propiedades sobrecargadas por APPDATA
anteriores una sobre TBROWSE y otra sobre TEDIT y funcionan sin
problema, pero cuando llega a la linea donde esta el TFORM la aplicacion
se congela y se queda ahi...
Alguna sugerencia ?
Saludos
Rene Flores
http://www.ciber-tec.com
- ignacio
- Site Admin
- Mensajes: 9457
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
Form desde codigo y from desde IDE
Rene,
Los valores iniciales de las property tienen que ser valores simples, es
decir, igual que en el caso de variables tipo STATIC.
Te recomiendo que simplemente sobrecargues igualmente el constructor New() y
ahí asignes la propiedad nCrlPane, sin olvidarte de llamar a Super:New(
oParent ) al final del método.
Un saludo,
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"Rene Flores" <"rflores[nospam]"@ciber-tec.com> escribió en el mensaje
news:464c45d6$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Me respondo a mi mismo:
>
>>
>> CLASS TFORM FROM XFORM
>> PROPERTY nClrPane INIT RGB(255,0,0)
>> ENDCLASS
>
> Esto hecho asi, asignando directamente a la PROPERTY funciona sin
> problmeas
>
> Ahora lo que no funciona es:
>
> APPDATA:ADDDATA("colorventana",Rgb(255,0,0))
>
> CLASS TFORM FROM XFORM
> PROPERTY nClrPan INIT APPDATA:ColorVentana
> ENDCLASS
>
> Si asgino directametne el color, funciona, si lo hago por una appdata no,
> lo curiosos es que tengo 2 propiedades sobrecargadas por APPDATA
> anteriores una sobre TBROWSE y otra sobre TEDIT y funcionan sin problema,
> pero cuando llega a la linea donde esta el TFORM la aplicacion se congela
> y se queda ahi...
>
> Alguna sugerencia ?
>
> Saludos
>
> Rene Flores
> http://www.ciber-tec.com
Los valores iniciales de las property tienen que ser valores simples, es
decir, igual que en el caso de variables tipo STATIC.
Te recomiendo que simplemente sobrecargues igualmente el constructor New() y
ahí asignes la propiedad nCrlPane, sin olvidarte de llamar a Super:New(
oParent ) al final del método.
Un saludo,
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"Rene Flores" <"rflores[nospam]"@ciber-tec.com> escribió en el mensaje
news:464c45d6$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Me respondo a mi mismo:
>
>>
>> CLASS TFORM FROM XFORM
>> PROPERTY nClrPane INIT RGB(255,0,0)
>> ENDCLASS
>
> Esto hecho asi, asignando directamente a la PROPERTY funciona sin
> problmeas
>
> Ahora lo que no funciona es:
>
> APPDATA:ADDDATA("colorventana",Rgb(255,0,0))
>
> CLASS TFORM FROM XFORM
> PROPERTY nClrPan INIT APPDATA:ColorVentana
> ENDCLASS
>
> Si asgino directametne el color, funciona, si lo hago por una appdata no,
> lo curiosos es que tengo 2 propiedades sobrecargadas por APPDATA
> anteriores una sobre TBROWSE y otra sobre TEDIT y funcionan sin problema,
> pero cuando llega a la linea donde esta el TFORM la aplicacion se congela
> y se queda ahi...
>
> Alguna sugerencia ?
>
> Saludos
>
> Rene Flores
> http://www.ciber-tec.com
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Form desde codigo y from desde IDE
Rene,
> Si asgino directametne el color, funciona, si lo hago por una appdata no,
> lo curiosos es que tengo 2 propiedades sobrecargadas por APPDATA
> anteriores una sobre TBROWSE y otra sobre TEDIT y funcionan sin problema,
> pero cuando llega a la linea donde esta el TFORM la aplicacion se congela
> y se queda ahi...
Haz caso a lo que te ha dicho Ignacio: los valores de las cláusulas INIT
deben ser valores simples, que no cambien a lo largo de la ejecución del
programa. No obstante, se puede hacer lo que quieres con algunas
limitaciones, pero teniendo muy en cuenta cómo funciona el motor de objetos.
La explicación es la siguiente: el motor de objetos de [x]Harbour es
dinámico en muchos sentidos, y uno de ellos es la propia creación de las
clases (además de los objetos). La primera vez que se instancia un objeto de
una clase determinada, es cuando se crea la clase (para las demás
instancias, la clase ya está creada). Pues bien, cuando se crea la clase es
cuando se evalúan las cláusulas INIT, y cuando se instancian los objetos de
esas clases ya no se vuelven a evaluar. Por lo tanto, si una cláusula INIT
llama a una función que devuelve un valor, esa llamada sólo ocurrirá una
vez, y las sucesivas veces se utilizará el primer valor obtenido.
En TEdit y TBrowse te ha funcionado porque seguro que estás calculando ese
valor antes de instanciar ningún edit. Pero para TForm, seguro que estás
creando el formulario principal (o algún otro formulario) antes de calcular
ese valor, y claro, cuando creas los demás formularios ya no se vuelve a
evaluar esa cláusula INIT.
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
> Si asgino directametne el color, funciona, si lo hago por una appdata no,
> lo curiosos es que tengo 2 propiedades sobrecargadas por APPDATA
> anteriores una sobre TBROWSE y otra sobre TEDIT y funcionan sin problema,
> pero cuando llega a la linea donde esta el TFORM la aplicacion se congela
> y se queda ahi...
Haz caso a lo que te ha dicho Ignacio: los valores de las cláusulas INIT
deben ser valores simples, que no cambien a lo largo de la ejecución del
programa. No obstante, se puede hacer lo que quieres con algunas
limitaciones, pero teniendo muy en cuenta cómo funciona el motor de objetos.
La explicación es la siguiente: el motor de objetos de [x]Harbour es
dinámico en muchos sentidos, y uno de ellos es la propia creación de las
clases (además de los objetos). La primera vez que se instancia un objeto de
una clase determinada, es cuando se crea la clase (para las demás
instancias, la clase ya está creada). Pues bien, cuando se crea la clase es
cuando se evalúan las cláusulas INIT, y cuando se instancian los objetos de
esas clases ya no se vuelven a evaluar. Por lo tanto, si una cláusula INIT
llama a una función que devuelve un valor, esa llamada sólo ocurrirá una
vez, y las sucesivas veces se utilizará el primer valor obtenido.
En TEdit y TBrowse te ha funcionado porque seguro que estás calculando ese
valor antes de instanciar ningún edit. Pero para TForm, seguro que estás
creando el formulario principal (o algún otro formulario) antes de calcular
ese valor, y claro, cuando creas los demás formularios ya no se vuelve a
evaluar esa cláusula INIT.
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info