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.
Browse ... TBrwColumn:OnDrawCell
Browse ... TBrwColumn:OnDrawCell
Esto, hasta la PR6a me funcionaba correctamente...
METHOD Browse2ColumnsDrawCell( oSender, cText, nClrText, nClrPane,
lHighLite ) CLASS TFrmORAlbarans
If ::oBrowse2:nArrayAt > 0 .and. ::oBrowse2:nArrayAt <= Len(
::oBrowse2:aArrayData )
If !Empty( ::oBrowse2:aArrayData[::oBrowse2:nArrayAt,1] ) .and.;
Empty( ::oBrowse2:aArrayData[::oBrowse2:nArrayAt,2] ) .and.;
Empty( ::oBrowse2:aArrayData[::oBrowse2:nArrayAt,3] )
oSender:oFont := TFont():Create( "MS Sans Serif", 8, 0, 700 )
If( !lHighLite, nClrPane := clRed /*clInfoBk*/, )
Else
oSender:oFont := TFont():Create( "MS Sans Serif", 8, 0, 400 )
If( !lHighLite, nClrPane := clWindow, )
EndIf
EndIf
RETURN Nil
Ahora, con la PR6b...
El cambio de color "nClrPane" lo hace correctamente y varía el color de
fondo del registro actual...
PERO,... la fuente no la "pilla" bien...
lo que hace es tomar el valor de la fuente, pero no en el registro actual
del Browse, sinó para el siguiente!!!
He leído que habeis cambiado el Evento... por lo visto ... Incorrecta
declaración... jejeje... pero se me ha fastidiado lo mío, jejeje
¿Cómo lo hago para que el cambio de fuente lo haga sobre el registro
actual???
Gracias.
Un Saludo,
Xevi.
METHOD Browse2ColumnsDrawCell( oSender, cText, nClrText, nClrPane,
lHighLite ) CLASS TFrmORAlbarans
If ::oBrowse2:nArrayAt > 0 .and. ::oBrowse2:nArrayAt <= Len(
::oBrowse2:aArrayData )
If !Empty( ::oBrowse2:aArrayData[::oBrowse2:nArrayAt,1] ) .and.;
Empty( ::oBrowse2:aArrayData[::oBrowse2:nArrayAt,2] ) .and.;
Empty( ::oBrowse2:aArrayData[::oBrowse2:nArrayAt,3] )
oSender:oFont := TFont():Create( "MS Sans Serif", 8, 0, 700 )
If( !lHighLite, nClrPane := clRed /*clInfoBk*/, )
Else
oSender:oFont := TFont():Create( "MS Sans Serif", 8, 0, 400 )
If( !lHighLite, nClrPane := clWindow, )
EndIf
EndIf
RETURN Nil
Ahora, con la PR6b...
El cambio de color "nClrPane" lo hace correctamente y varía el color de
fondo del registro actual...
PERO,... la fuente no la "pilla" bien...
lo que hace es tomar el valor de la fuente, pero no en el registro actual
del Browse, sinó para el siguiente!!!
He leído que habeis cambiado el Evento... por lo visto ... Incorrecta
declaración... jejeje... pero se me ha fastidiado lo mío, jejeje
¿Cómo lo hago para que el cambio de fuente lo haga sobre el registro
actual???
Gracias.
Un Saludo,
Xevi.
Browse ... TBrwColumn:OnDrawCell
Xevi,
> He leído que habeis cambiado el Evento... por lo visto ... Incorrecta
> declaración... jejeje... pero se me ha fastidiado lo mío, jejeje
> ¿Cómo lo hago para que el cambio de fuente lo haga sobre el registro
> actual???
Sí, es cierto. Había 2 parámetros más que se estaban pasando pero no
figuraban en la declaración del método: hDC y aRect.
Para cambiar la fuente, lo más sencillo es seleccionarla directamente en el
hdc:
SelectObject( hDC, oMiFont:Handle )
de esta forma no hay que estar creando y destruyendo fuentes, ni
asignandolas continuamente al browse.
--
Un saludo,
José F. Giménez
> He leído que habeis cambiado el Evento... por lo visto ... Incorrecta
> declaración... jejeje... pero se me ha fastidiado lo mío, jejeje
> ¿Cómo lo hago para que el cambio de fuente lo haga sobre el registro
> actual???
Sí, es cierto. Había 2 parámetros más que se estaban pasando pero no
figuraban en la declaración del método: hDC y aRect.
Para cambiar la fuente, lo más sencillo es seleccionarla directamente en el
hdc:
SelectObject( hDC, oMiFont:Handle )
de esta forma no hay que estar creando y destruyendo fuentes, ni
asignandolas continuamente al browse.
--
Un saludo,
José F. Giménez
Browse ... TBrwColumn:OnDrawCell
Jose,
Perdona por mi ignorancia... pero no entiendo como debo utilizarlo...
Comprendo que es una mejora para no andar creando/destruyendo Fonts...
Pero ¿Como lo aplico???
¿Creo dos tipos de Datas Fonts en la Clase Formulario????
Gracias.
Un Saludo,
Xevi.
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
news:[email=43c80985@ozsrvnegro.ozlan.local...]43c80985@ozsrvnegro.ozlan.local...[/email]
>
> Xevi,
>
>> He leído que habeis cambiado el Evento... por lo visto ... Incorrecta
>> declaración... jejeje... pero se me ha fastidiado lo mío, jejeje
>> ¿Cómo lo hago para que el cambio de fuente lo haga sobre el registro
>> actual???
>
> Sí, es cierto. Había 2 parámetros más que se estaban pasando pero no
> figuraban en la declaración del método: hDC y aRect.
>
> Para cambiar la fuente, lo más sencillo es seleccionarla directamente en
> el hdc:
>
> SelectObject( hDC, oMiFont:Handle )
>
> de esta forma no hay que estar creando y destruyendo fuentes, ni
> asignandolas continuamente al browse.
>
> --
> Un saludo,
>
> José F. Giménez
>
>
Perdona por mi ignorancia... pero no entiendo como debo utilizarlo...
Comprendo que es una mejora para no andar creando/destruyendo Fonts...
Pero ¿Como lo aplico???
¿Creo dos tipos de Datas Fonts en la Clase Formulario????
Gracias.
Un Saludo,
Xevi.
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
news:[email=43c80985@ozsrvnegro.ozlan.local...]43c80985@ozsrvnegro.ozlan.local...[/email]
>
> Xevi,
>
>> He leído que habeis cambiado el Evento... por lo visto ... Incorrecta
>> declaración... jejeje... pero se me ha fastidiado lo mío, jejeje
>> ¿Cómo lo hago para que el cambio de fuente lo haga sobre el registro
>> actual???
>
> Sí, es cierto. Había 2 parámetros más que se estaban pasando pero no
> figuraban en la declaración del método: hDC y aRect.
>
> Para cambiar la fuente, lo más sencillo es seleccionarla directamente en
> el hdc:
>
> SelectObject( hDC, oMiFont:Handle )
>
> de esta forma no hay que estar creando y destruyendo fuentes, ni
> asignandolas continuamente al browse.
>
> --
> Un saludo,
>
> José F. Giménez
>
>
Browse ... TBrwColumn:OnDrawCell
Perdón...
Ya lo he logrado...
Como me pensaba... creando el tipo de font en uan variable... la cargo como
me has escrito... y YATA !!!
Gracias.
Un saludo,
Xevi.
"Xevi" <xevicomas@terra.es> escribió en el mensaje
news:[email=43c80f6d@ozsrvnegro.ozlan.local...]43c80f6d@ozsrvnegro.ozlan.local...[/email]
>
>
> Jose,
>
> Perdona por mi ignorancia... pero no entiendo como debo utilizarlo...
> Comprendo que es una mejora para no andar creando/destruyendo Fonts...
> Pero ¿Como lo aplico???
>
> ¿Creo dos tipos de Datas Fonts en la Clase Formulario????
>
> Gracias.
>
> Un Saludo,
> Xevi.
>
>
> "Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
> news:[email=43c80985@ozsrvnegro.ozlan.local...]43c80985@ozsrvnegro.ozlan.local...[/email]
>>
>> Xevi,
>>
>>> He leído que habeis cambiado el Evento... por lo visto ... Incorrecta
>>> declaración... jejeje... pero se me ha fastidiado lo mío, jejeje
>>> ¿Cómo lo hago para que el cambio de fuente lo haga sobre el registro
>>> actual???
>>
>> Sí, es cierto. Había 2 parámetros más que se estaban pasando pero no
>> figuraban en la declaración del método: hDC y aRect.
>>
>> Para cambiar la fuente, lo más sencillo es seleccionarla directamente en
>> el hdc:
>>
>> SelectObject( hDC, oMiFont:Handle )
>>
>> de esta forma no hay que estar creando y destruyendo fuentes, ni
>> asignandolas continuamente al browse.
>>
>> --
>> Un saludo,
>>
>> José F. Giménez
>>
>>
>
>
>
>
Ya lo he logrado...
Como me pensaba... creando el tipo de font en uan variable... la cargo como
me has escrito... y YATA !!!
Gracias.
Un saludo,
Xevi.
"Xevi" <xevicomas@terra.es> escribió en el mensaje
news:[email=43c80f6d@ozsrvnegro.ozlan.local...]43c80f6d@ozsrvnegro.ozlan.local...[/email]
>
>
> Jose,
>
> Perdona por mi ignorancia... pero no entiendo como debo utilizarlo...
> Comprendo que es una mejora para no andar creando/destruyendo Fonts...
> Pero ¿Como lo aplico???
>
> ¿Creo dos tipos de Datas Fonts en la Clase Formulario????
>
> Gracias.
>
> Un Saludo,
> Xevi.
>
>
> "Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
> news:[email=43c80985@ozsrvnegro.ozlan.local...]43c80985@ozsrvnegro.ozlan.local...[/email]
>>
>> Xevi,
>>
>>> He leído que habeis cambiado el Evento... por lo visto ... Incorrecta
>>> declaración... jejeje... pero se me ha fastidiado lo mío, jejeje
>>> ¿Cómo lo hago para que el cambio de fuente lo haga sobre el registro
>>> actual???
>>
>> Sí, es cierto. Había 2 parámetros más que se estaban pasando pero no
>> figuraban en la declaración del método: hDC y aRect.
>>
>> Para cambiar la fuente, lo más sencillo es seleccionarla directamente en
>> el hdc:
>>
>> SelectObject( hDC, oMiFont:Handle )
>>
>> de esta forma no hay que estar creando y destruyendo fuentes, ni
>> asignandolas continuamente al browse.
>>
>> --
>> Un saludo,
>>
>> José F. Giménez
>>
>>
>
>
>
>
Browse ... TBrwColumn:OnDrawCell
Xevi,
> Ya lo he logrado...
> Como me pensaba... creando el tipo de font en uan variable... la cargo
> como me has escrito... y YATA !!!
Exactamente. Pero no te olvides de destruirla cuando ya no la necesites. Un
buen sitio es en el método Free() del formulario. Ponlo así:
METHOD Free() INLINE ::oMiFont:Destroy(), Super:Free()
y no tendrás que preocuparte de nada más.
--
Un saludo,
José F. Giménez
> Ya lo he logrado...
> Como me pensaba... creando el tipo de font en uan variable... la cargo
> como me has escrito... y YATA !!!
Exactamente. Pero no te olvides de destruirla cuando ya no la necesites. Un
buen sitio es en el método Free() del formulario. Ponlo así:
METHOD Free() INLINE ::oMiFont:Destroy(), Super:Free()
y no tendrás que preocuparte de nada más.
--
Un saludo,
José F. Giménez
Browse ... TBrwColumn:OnDrawCell
Jose,
Data oFontNormal INIT TFont():Create( "MS Sans Serif", 8, 0, 400 )
Data oFontNegreta INIT TFont():Create( "MS Sans Serif", 8, 0, 700 )
Method Free() INLINE ::oFontNormal:Destroy(), ::oFontNegreta:Destroy(),
Super:Free()
Bien, esto funciona PERO solo una vez por formulario CHILD...
Me explico...
Tal como está, la primera vez que accedo al Form SI funciona el cambio de
fuentes,
PERO cierro el CHILD y lo vuelvo a abrir y ya NO funciona el cambio de
fuentes, por mas que cierre/abra el mismo formulario.
He probado de destruir las fuentes en el método OnDestroy pero lo mismo.
Si no destruyo las fuentes funciona SIEMPRE que accedo al formulario.
Y digo, pienso, me pregunto...
¿A que puede ser debido???
¿es obligatorio que destruya esas Datas???
¿No se destruyen solas al finalizar el Formulario???
Gracias.
Un Saludo,
Xevi.
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
news:[email=43c812a2@ozsrvnegro.ozlan.local...]43c812a2@ozsrvnegro.ozlan.local...[/email]
>
> Xevi,
>
>> Ya lo he logrado...
>> Como me pensaba... creando el tipo de font en uan variable... la cargo
>> como me has escrito... y YATA !!!
>
> Exactamente. Pero no te olvides de destruirla cuando ya no la necesites.
> Un buen sitio es en el método Free() del formulario. Ponlo así:
>
> METHOD Free() INLINE ::oMiFont:Destroy(), Super:Free()
>
> y no tendrás que preocuparte de nada más.
>
> --
> Un saludo,
>
> José F. Giménez
>
>
Data oFontNormal INIT TFont():Create( "MS Sans Serif", 8, 0, 400 )
Data oFontNegreta INIT TFont():Create( "MS Sans Serif", 8, 0, 700 )
Method Free() INLINE ::oFontNormal:Destroy(), ::oFontNegreta:Destroy(),
Super:Free()
Bien, esto funciona PERO solo una vez por formulario CHILD...
Me explico...
Tal como está, la primera vez que accedo al Form SI funciona el cambio de
fuentes,
PERO cierro el CHILD y lo vuelvo a abrir y ya NO funciona el cambio de
fuentes, por mas que cierre/abra el mismo formulario.
He probado de destruir las fuentes en el método OnDestroy pero lo mismo.
Si no destruyo las fuentes funciona SIEMPRE que accedo al formulario.
Y digo, pienso, me pregunto...
¿A que puede ser debido???
¿es obligatorio que destruya esas Datas???
¿No se destruyen solas al finalizar el Formulario???
Gracias.
Un Saludo,
Xevi.
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
news:[email=43c812a2@ozsrvnegro.ozlan.local...]43c812a2@ozsrvnegro.ozlan.local...[/email]
>
> Xevi,
>
>> Ya lo he logrado...
>> Como me pensaba... creando el tipo de font en uan variable... la cargo
>> como me has escrito... y YATA !!!
>
> Exactamente. Pero no te olvides de destruirla cuando ya no la necesites.
> Un buen sitio es en el método Free() del formulario. Ponlo así:
>
> METHOD Free() INLINE ::oMiFont:Destroy(), Super:Free()
>
> y no tendrás que preocuparte de nada más.
>
> --
> Un saludo,
>
> José F. Giménez
>
>
- ignacio
- Site Admin
- Mensajes: 9447
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
Browse ... TBrwColumn:OnDrawCell
Xevi,
Realmente extraño. Intenta mandarnos un pequeño ejemplo.
Gracias,
"Xevi" <xevicomas@terra.es> escribió en el mensaje
news:43cb509b$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>
> Jose,
>
>
> Data oFontNormal INIT TFont():Create( "MS Sans Serif", 8, 0, 400 )
> Data oFontNegreta INIT TFont():Create( "MS Sans Serif", 8, 0, 700 )
> Method Free() INLINE ::oFontNormal:Destroy(), ::oFontNegreta:Destroy(),
> Super:Free()
>
> Bien, esto funciona PERO solo una vez por formulario CHILD...
> Me explico...
> Tal como está, la primera vez que accedo al Form SI funciona el cambio de
> fuentes,
> PERO cierro el CHILD y lo vuelvo a abrir y ya NO funciona el cambio de
> fuentes, por mas que cierre/abra el mismo formulario.
> He probado de destruir las fuentes en el método OnDestroy pero lo mismo.
>
> Si no destruyo las fuentes funciona SIEMPRE que accedo al formulario.
>
> Y digo, pienso, me pregunto...
> ¿A que puede ser debido???
> ¿es obligatorio que destruya esas Datas???
> ¿No se destruyen solas al finalizar el Formulario???
>
> Gracias.
>
> Un Saludo,
> Xevi.
>
>
> "Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
> news:[email=43c812a2@ozsrvnegro.ozlan.local...]43c812a2@ozsrvnegro.ozlan.local...[/email]
>>
>> Xevi,
>>
>>> Ya lo he logrado...
>>> Como me pensaba... creando el tipo de font en uan variable... la cargo
>>> como me has escrito... y YATA !!!
>>
>> Exactamente. Pero no te olvides de destruirla cuando ya no la necesites.
>> Un buen sitio es en el método Free() del formulario. Ponlo así:
>>
>> METHOD Free() INLINE ::oMiFont:Destroy(), Super:Free()
>>
>> y no tendrás que preocuparte de nada más.
>>
>> --
>> Un saludo,
>>
>> José F. Giménez
>>
>>
>
>
>
Realmente extraño. Intenta mandarnos un pequeño ejemplo.
Gracias,
"Xevi" <xevicomas@terra.es> escribió en el mensaje
news:43cb509b$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>
> Jose,
>
>
> Data oFontNormal INIT TFont():Create( "MS Sans Serif", 8, 0, 400 )
> Data oFontNegreta INIT TFont():Create( "MS Sans Serif", 8, 0, 700 )
> Method Free() INLINE ::oFontNormal:Destroy(), ::oFontNegreta:Destroy(),
> Super:Free()
>
> Bien, esto funciona PERO solo una vez por formulario CHILD...
> Me explico...
> Tal como está, la primera vez que accedo al Form SI funciona el cambio de
> fuentes,
> PERO cierro el CHILD y lo vuelvo a abrir y ya NO funciona el cambio de
> fuentes, por mas que cierre/abra el mismo formulario.
> He probado de destruir las fuentes en el método OnDestroy pero lo mismo.
>
> Si no destruyo las fuentes funciona SIEMPRE que accedo al formulario.
>
> Y digo, pienso, me pregunto...
> ¿A que puede ser debido???
> ¿es obligatorio que destruya esas Datas???
> ¿No se destruyen solas al finalizar el Formulario???
>
> Gracias.
>
> Un Saludo,
> Xevi.
>
>
> "Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
> news:[email=43c812a2@ozsrvnegro.ozlan.local...]43c812a2@ozsrvnegro.ozlan.local...[/email]
>>
>> Xevi,
>>
>>> Ya lo he logrado...
>>> Como me pensaba... creando el tipo de font en uan variable... la cargo
>>> como me has escrito... y YATA !!!
>>
>> Exactamente. Pero no te olvides de destruirla cuando ya no la necesites.
>> Un buen sitio es en el método Free() del formulario. Ponlo así:
>>
>> METHOD Free() INLINE ::oMiFont:Destroy(), Super:Free()
>>
>> y no tendrás que preocuparte de nada más.
>>
>> --
>> Un saludo,
>>
>> José F. Giménez
>>
>>
>
>
>
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
Browse ... TBrwColumn:OnDrawCell
Ignacio,
Adjunto lo tienes.
Me he limitado a incluir un Browse en el Test MDI de Xailer.
Verás que al abrirlo la primera vez, funciona correctamente, el segundo
registro está en negrita, pero si cierras la ventana y la vuelves a abrirla,
ya NO se pinta la fuente del registro segundo en negrita.
Un Saludo,
Xevi.
"Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje
news:43cb58ea$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>
> Xevi,
>
> Realmente extraño. Intenta mandarnos un pequeño ejemplo.
>
> Gracias,
>
> "Xevi" <xevicomas@terra.es> escribió en el mensaje
> news:43cb509b$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>
>> Jose,
>>
>>
>> Data oFontNormal INIT TFont():Create( "MS Sans Serif", 8, 0, 400 )
>> Data oFontNegreta INIT TFont():Create( "MS Sans Serif", 8, 0, 700 )
>> Method Free() INLINE ::oFontNormal:Destroy(), ::oFontNegreta:Destroy(),
>> Super:Free()
>>
>> Bien, esto funciona PERO solo una vez por formulario CHILD...
>> Me explico...
>> Tal como está, la primera vez que accedo al Form SI funciona el cambio de
>> fuentes,
>> PERO cierro el CHILD y lo vuelvo a abrir y ya NO funciona el cambio de
>> fuentes, por mas que cierre/abra el mismo formulario.
>> He probado de destruir las fuentes en el método OnDestroy pero lo mismo.
>>
>> Si no destruyo las fuentes funciona SIEMPRE que accedo al formulario.
>>
>> Y digo, pienso, me pregunto...
>> ¿A que puede ser debido???
>> ¿es obligatorio que destruya esas Datas???
>> ¿No se destruyen solas al finalizar el Formulario???
>>
>> Gracias.
>>
>> Un Saludo,
>> Xevi.
>>
>>
>> "Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el
>> mensaje
>> news:[email=43c812a2@ozsrvnegro.ozlan.local...]43c812a2@ozsrvnegro.ozlan.local...[/email]
>>>
>>> Xevi,
>>>
>>>> Ya lo he logrado...
>>>> Como me pensaba... creando el tipo de font en uan variable... la cargo
>>>> como me has escrito... y YATA !!!
>>>
>>> Exactamente. Pero no te olvides de destruirla cuando ya no la necesites.
>>> Un buen sitio es en el método Free() del formulario. Ponlo así:
>>>
>>> METHOD Free() INLINE ::oMiFont:Destroy(), Super:Free()
>>>
>>> y no tendrás que preocuparte de nada más.
>>>
>>> --
>>> Un saludo,
>>>
>>> José F. Giménez
>>>
>>>
>>
>>
>>
>
>
>
Attached files MDISample1.zip (3.3 KB)Â
Adjunto lo tienes.
Me he limitado a incluir un Browse en el Test MDI de Xailer.
Verás que al abrirlo la primera vez, funciona correctamente, el segundo
registro está en negrita, pero si cierras la ventana y la vuelves a abrirla,
ya NO se pinta la fuente del registro segundo en negrita.
Un Saludo,
Xevi.
"Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje
news:43cb58ea$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>
> Xevi,
>
> Realmente extraño. Intenta mandarnos un pequeño ejemplo.
>
> Gracias,
>
> "Xevi" <xevicomas@terra.es> escribió en el mensaje
> news:43cb509b$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>
>> Jose,
>>
>>
>> Data oFontNormal INIT TFont():Create( "MS Sans Serif", 8, 0, 400 )
>> Data oFontNegreta INIT TFont():Create( "MS Sans Serif", 8, 0, 700 )
>> Method Free() INLINE ::oFontNormal:Destroy(), ::oFontNegreta:Destroy(),
>> Super:Free()
>>
>> Bien, esto funciona PERO solo una vez por formulario CHILD...
>> Me explico...
>> Tal como está, la primera vez que accedo al Form SI funciona el cambio de
>> fuentes,
>> PERO cierro el CHILD y lo vuelvo a abrir y ya NO funciona el cambio de
>> fuentes, por mas que cierre/abra el mismo formulario.
>> He probado de destruir las fuentes en el método OnDestroy pero lo mismo.
>>
>> Si no destruyo las fuentes funciona SIEMPRE que accedo al formulario.
>>
>> Y digo, pienso, me pregunto...
>> ¿A que puede ser debido???
>> ¿es obligatorio que destruya esas Datas???
>> ¿No se destruyen solas al finalizar el Formulario???
>>
>> Gracias.
>>
>> Un Saludo,
>> Xevi.
>>
>>
>> "Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el
>> mensaje
>> news:[email=43c812a2@ozsrvnegro.ozlan.local...]43c812a2@ozsrvnegro.ozlan.local...[/email]
>>>
>>> Xevi,
>>>
>>>> Ya lo he logrado...
>>>> Como me pensaba... creando el tipo de font en uan variable... la cargo
>>>> como me has escrito... y YATA !!!
>>>
>>> Exactamente. Pero no te olvides de destruirla cuando ya no la necesites.
>>> Un buen sitio es en el método Free() del formulario. Ponlo así:
>>>
>>> METHOD Free() INLINE ::oMiFont:Destroy(), Super:Free()
>>>
>>> y no tendrás que preocuparte de nada más.
>>>
>>> --
>>> Un saludo,
>>>
>>> José F. Giménez
>>>
>>>
>>
>>
>>
>
>
>
Attached files MDISample1.zip (3.3 KB)Â
- ignacio
- Site Admin
- Mensajes: 9447
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
Browse ... TBrwColumn:OnDrawCell
Xevi,
El problema se produce porque has creado los fonts en la cláusula INIT, y
después de la optimización de Walter, dicho código sólo se evalua una vez,
la primera vez que se instancia un objeto de la clase. Segundas
instanciaciones sólo recogen el valor que tiene la DATA, pero no se ejecuta
de nuevo el código INIT.
Por lo tanto, tan sólo tienes que crear los fonts en otro sitio y te
funcionará correctamente. Te recomiendo que utilices unicamente constantes
en la inicialización de DATAs de clases.
Un saludo,
"Xevi" <xevicomas@terra.es> escribió en el mensaje
news:43cb697f$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>
> Ignacio,
>
> Adjunto lo tienes.
> Me he limitado a incluir un Browse en el Test MDI de Xailer.
> Verás que al abrirlo la primera vez, funciona correctamente, el segundo
> registro está en negrita, pero si cierras la ventana y la vuelves a
> abrirla, ya NO se pinta la fuente del registro segundo en negrita.
>
>
> Un Saludo,
> Xevi.
>
>
> "Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje
> news:43cb58ea$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>
>> Xevi,
>>
>> Realmente extraño. Intenta mandarnos un pequeño ejemplo.
>>
>> Gracias,
>>
>> "Xevi" <xevicomas@terra.es> escribió en el mensaje
>> news:43cb509b$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>>
>>> Jose,
>>>
>>>
>>> Data oFontNormal INIT TFont():Create( "MS Sans Serif", 8, 0, 400 )
>>> Data oFontNegreta INIT TFont():Create( "MS Sans Serif", 8, 0, 700 )
>>> Method Free() INLINE ::oFontNormal:Destroy(),
>>> ::oFontNegreta:Destroy(),
>>> Super:Free()
>>>
>>> Bien, esto funciona PERO solo una vez por formulario CHILD...
>>> Me explico...
>>> Tal como está, la primera vez que accedo al Form SI funciona el cambio
>>> de
>>> fuentes,
>>> PERO cierro el CHILD y lo vuelvo a abrir y ya NO funciona el cambio de
>>> fuentes, por mas que cierre/abra el mismo formulario.
>>> He probado de destruir las fuentes en el método OnDestroy pero lo mismo.
>>>
>>> Si no destruyo las fuentes funciona SIEMPRE que accedo al formulario.
>>>
>>> Y digo, pienso, me pregunto...
>>> ¿A que puede ser debido???
>>> ¿es obligatorio que destruya esas Datas???
>>> ¿No se destruyen solas al finalizar el Formulario???
>>>
>>> Gracias.
>>>
>>> Un Saludo,
>>> Xevi.
>>>
>>>
>>> "Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el
>>> mensaje
>>> news:[email=43c812a2@ozsrvnegro.ozlan.local...]43c812a2@ozsrvnegro.ozlan.local...[/email]
>>>>
>>>> Xevi,
>>>>
>>>>> Ya lo he logrado...
>>>>> Como me pensaba... creando el tipo de font en uan variable... la cargo
>>>>> como me has escrito... y YATA !!!
>>>>
>>>> Exactamente. Pero no te olvides de destruirla cuando ya no la
>>>> necesites.
>>>> Un buen sitio es en el método Free() del formulario. Ponlo así:
>>>>
>>>> METHOD Free() INLINE ::oMiFont:Destroy(), Super:Free()
>>>>
>>>> y no tendrás que preocuparte de nada más.
>>>>
>>>> --
>>>> Un saludo,
>>>>
>>>> José F. Giménez
>>>>
>>>>
>>>
>>>
>>>
>>
>>
>>
>
>
>
El problema se produce porque has creado los fonts en la cláusula INIT, y
después de la optimización de Walter, dicho código sólo se evalua una vez,
la primera vez que se instancia un objeto de la clase. Segundas
instanciaciones sólo recogen el valor que tiene la DATA, pero no se ejecuta
de nuevo el código INIT.
Por lo tanto, tan sólo tienes que crear los fonts en otro sitio y te
funcionará correctamente. Te recomiendo que utilices unicamente constantes
en la inicialización de DATAs de clases.
Un saludo,
"Xevi" <xevicomas@terra.es> escribió en el mensaje
news:43cb697f$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>
> Ignacio,
>
> Adjunto lo tienes.
> Me he limitado a incluir un Browse en el Test MDI de Xailer.
> Verás que al abrirlo la primera vez, funciona correctamente, el segundo
> registro está en negrita, pero si cierras la ventana y la vuelves a
> abrirla, ya NO se pinta la fuente del registro segundo en negrita.
>
>
> Un Saludo,
> Xevi.
>
>
> "Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje
> news:43cb58ea$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>
>> Xevi,
>>
>> Realmente extraño. Intenta mandarnos un pequeño ejemplo.
>>
>> Gracias,
>>
>> "Xevi" <xevicomas@terra.es> escribió en el mensaje
>> news:43cb509b$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>>
>>> Jose,
>>>
>>>
>>> Data oFontNormal INIT TFont():Create( "MS Sans Serif", 8, 0, 400 )
>>> Data oFontNegreta INIT TFont():Create( "MS Sans Serif", 8, 0, 700 )
>>> Method Free() INLINE ::oFontNormal:Destroy(),
>>> ::oFontNegreta:Destroy(),
>>> Super:Free()
>>>
>>> Bien, esto funciona PERO solo una vez por formulario CHILD...
>>> Me explico...
>>> Tal como está, la primera vez que accedo al Form SI funciona el cambio
>>> de
>>> fuentes,
>>> PERO cierro el CHILD y lo vuelvo a abrir y ya NO funciona el cambio de
>>> fuentes, por mas que cierre/abra el mismo formulario.
>>> He probado de destruir las fuentes en el método OnDestroy pero lo mismo.
>>>
>>> Si no destruyo las fuentes funciona SIEMPRE que accedo al formulario.
>>>
>>> Y digo, pienso, me pregunto...
>>> ¿A que puede ser debido???
>>> ¿es obligatorio que destruya esas Datas???
>>> ¿No se destruyen solas al finalizar el Formulario???
>>>
>>> Gracias.
>>>
>>> Un Saludo,
>>> Xevi.
>>>
>>>
>>> "Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el
>>> mensaje
>>> news:[email=43c812a2@ozsrvnegro.ozlan.local...]43c812a2@ozsrvnegro.ozlan.local...[/email]
>>>>
>>>> Xevi,
>>>>
>>>>> Ya lo he logrado...
>>>>> Como me pensaba... creando el tipo de font en uan variable... la cargo
>>>>> como me has escrito... y YATA !!!
>>>>
>>>> Exactamente. Pero no te olvides de destruirla cuando ya no la
>>>> necesites.
>>>> Un buen sitio es en el método Free() del formulario. Ponlo así:
>>>>
>>>> METHOD Free() INLINE ::oMiFont:Destroy(), Super:Free()
>>>>
>>>> y no tendrás que preocuparte de nada más.
>>>>
>>>> --
>>>> Un saludo,
>>>>
>>>> José F. Giménez
>>>>
>>>>
>>>
>>>
>>>
>>
>>
>>
>
>
>
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
- ignacio
- Site Admin
- Mensajes: 9447
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
Browse ... TBrwColumn:OnDrawCell
Xevi,
Por cierto, creo que se puede simplificar bastante tu código de pintado:
METHOD ArrayBrowse1Column1DrawCell( oSender, cText, nClrText, nClrPane,
lHighLite, hDC, aRect ) CLASS TForm1
if cText = "10002"
SelectObject( hDC, ::oFontNegreta:Handle )
Else
SelectObject( hDC, ::oFontNormal:Handle )
EndIf
Un saludo
"Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje
news:43cb8acc$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Xevi,
>
> El problema se produce porque has creado los fonts en la cláusula INIT, y
> después de la optimización de Walter, dicho código sólo se evalua una vez,
> la primera vez que se instancia un objeto de la clase. Segundas
> instanciaciones sólo recogen el valor que tiene la DATA, pero no se
> ejecuta de nuevo el código INIT.
>
> Por lo tanto, tan sólo tienes que crear los fonts en otro sitio y te
> funcionará correctamente. Te recomiendo que utilices unicamente constantes
> en la inicialización de DATAs de clases.
>
> Un saludo,
>
> "Xevi" <xevicomas@terra.es> escribió en el mensaje
> news:43cb697f$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>
>> Ignacio,
>>
>> Adjunto lo tienes.
>> Me he limitado a incluir un Browse en el Test MDI de Xailer.
>> Verás que al abrirlo la primera vez, funciona correctamente, el segundo
>> registro está en negrita, pero si cierras la ventana y la vuelves a
>> abrirla, ya NO se pinta la fuente del registro segundo en negrita.
>>
>>
>> Un Saludo,
>> Xevi.
>>
>>
>> "Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje
>> news:43cb58ea$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>>
>>> Xevi,
>>>
>>> Realmente extraño. Intenta mandarnos un pequeño ejemplo.
>>>
>>> Gracias,
>>>
>>> "Xevi" <xevicomas@terra.es> escribió en el mensaje
>>> news:43cb509b$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>>>
>>>> Jose,
>>>>
>>>>
>>>> Data oFontNormal INIT TFont():Create( "MS Sans Serif", 8, 0, 400 )
>>>> Data oFontNegreta INIT TFont():Create( "MS Sans Serif", 8, 0, 700 )
>>>> Method Free() INLINE ::oFontNormal:Destroy(),
>>>> ::oFontNegreta:Destroy(),
>>>> Super:Free()
>>>>
>>>> Bien, esto funciona PERO solo una vez por formulario CHILD...
>>>> Me explico...
>>>> Tal como está, la primera vez que accedo al Form SI funciona el cambio
>>>> de
>>>> fuentes,
>>>> PERO cierro el CHILD y lo vuelvo a abrir y ya NO funciona el cambio de
>>>> fuentes, por mas que cierre/abra el mismo formulario.
>>>> He probado de destruir las fuentes en el método OnDestroy pero lo
>>>> mismo.
>>>>
>>>> Si no destruyo las fuentes funciona SIEMPRE que accedo al formulario.
>>>>
>>>> Y digo, pienso, me pregunto...
>>>> ¿A que puede ser debido???
>>>> ¿es obligatorio que destruya esas Datas???
>>>> ¿No se destruyen solas al finalizar el Formulario???
>>>>
>>>> Gracias.
>>>>
>>>> Un Saludo,
>>>> Xevi.
>>>>
>>>>
>>>> "Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el
>>>> mensaje
>>>> news:[email=43c812a2@ozsrvnegro.ozlan.local...]43c812a2@ozsrvnegro.ozlan.local...[/email]
>>>>>
>>>>> Xevi,
>>>>>
>>>>>> Ya lo he logrado...
>>>>>> Como me pensaba... creando el tipo de font en uan variable... la
>>>>>> cargo
>>>>>> como me has escrito... y YATA !!!
>>>>>
>>>>> Exactamente. Pero no te olvides de destruirla cuando ya no la
>>>>> necesites.
>>>>> Un buen sitio es en el método Free() del formulario. Ponlo así:
>>>>>
>>>>> METHOD Free() INLINE ::oMiFont:Destroy(), Super:Free()
>>>>>
>>>>> y no tendrás que preocuparte de nada más.
>>>>>
>>>>> --
>>>>> Un saludo,
>>>>>
>>>>> José F. Giménez
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>
>>
>>
>
>
Por cierto, creo que se puede simplificar bastante tu código de pintado:
METHOD ArrayBrowse1Column1DrawCell( oSender, cText, nClrText, nClrPane,
lHighLite, hDC, aRect ) CLASS TForm1
if cText = "10002"
SelectObject( hDC, ::oFontNegreta:Handle )
Else
SelectObject( hDC, ::oFontNormal:Handle )
EndIf
Un saludo
"Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje
news:43cb8acc$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Xevi,
>
> El problema se produce porque has creado los fonts en la cláusula INIT, y
> después de la optimización de Walter, dicho código sólo se evalua una vez,
> la primera vez que se instancia un objeto de la clase. Segundas
> instanciaciones sólo recogen el valor que tiene la DATA, pero no se
> ejecuta de nuevo el código INIT.
>
> Por lo tanto, tan sólo tienes que crear los fonts en otro sitio y te
> funcionará correctamente. Te recomiendo que utilices unicamente constantes
> en la inicialización de DATAs de clases.
>
> Un saludo,
>
> "Xevi" <xevicomas@terra.es> escribió en el mensaje
> news:43cb697f$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>
>> Ignacio,
>>
>> Adjunto lo tienes.
>> Me he limitado a incluir un Browse en el Test MDI de Xailer.
>> Verás que al abrirlo la primera vez, funciona correctamente, el segundo
>> registro está en negrita, pero si cierras la ventana y la vuelves a
>> abrirla, ya NO se pinta la fuente del registro segundo en negrita.
>>
>>
>> Un Saludo,
>> Xevi.
>>
>>
>> "Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje
>> news:43cb58ea$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>>
>>> Xevi,
>>>
>>> Realmente extraño. Intenta mandarnos un pequeño ejemplo.
>>>
>>> Gracias,
>>>
>>> "Xevi" <xevicomas@terra.es> escribió en el mensaje
>>> news:43cb509b$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>>>
>>>> Jose,
>>>>
>>>>
>>>> Data oFontNormal INIT TFont():Create( "MS Sans Serif", 8, 0, 400 )
>>>> Data oFontNegreta INIT TFont():Create( "MS Sans Serif", 8, 0, 700 )
>>>> Method Free() INLINE ::oFontNormal:Destroy(),
>>>> ::oFontNegreta:Destroy(),
>>>> Super:Free()
>>>>
>>>> Bien, esto funciona PERO solo una vez por formulario CHILD...
>>>> Me explico...
>>>> Tal como está, la primera vez que accedo al Form SI funciona el cambio
>>>> de
>>>> fuentes,
>>>> PERO cierro el CHILD y lo vuelvo a abrir y ya NO funciona el cambio de
>>>> fuentes, por mas que cierre/abra el mismo formulario.
>>>> He probado de destruir las fuentes en el método OnDestroy pero lo
>>>> mismo.
>>>>
>>>> Si no destruyo las fuentes funciona SIEMPRE que accedo al formulario.
>>>>
>>>> Y digo, pienso, me pregunto...
>>>> ¿A que puede ser debido???
>>>> ¿es obligatorio que destruya esas Datas???
>>>> ¿No se destruyen solas al finalizar el Formulario???
>>>>
>>>> Gracias.
>>>>
>>>> Un Saludo,
>>>> Xevi.
>>>>
>>>>
>>>> "Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el
>>>> mensaje
>>>> news:[email=43c812a2@ozsrvnegro.ozlan.local...]43c812a2@ozsrvnegro.ozlan.local...[/email]
>>>>>
>>>>> Xevi,
>>>>>
>>>>>> Ya lo he logrado...
>>>>>> Como me pensaba... creando el tipo de font en uan variable... la
>>>>>> cargo
>>>>>> como me has escrito... y YATA !!!
>>>>>
>>>>> Exactamente. Pero no te olvides de destruirla cuando ya no la
>>>>> necesites.
>>>>> Un buen sitio es en el método Free() del formulario. Ponlo así:
>>>>>
>>>>> METHOD Free() INLINE ::oMiFont:Destroy(), Super:Free()
>>>>>
>>>>> y no tendrás que preocuparte de nada más.
>>>>>
>>>>> --
>>>>> Un saludo,
>>>>>
>>>>> José F. Giménez
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>
>>
>>
>
>
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
Browse ... TBrwColumn:OnDrawCell
Ignacio,
Efectivamente, se puede simplificar ese ejemplo como bien dices, ahora bien,
como lo que he hecho es un copy/paste de mi aplicación, me quedé con algo
del condicionante If/endif creado originalmente, jejeje... falta de
depuración de mi ejemplo.
Un saludo,
Xevi.
"Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje
news:43cb8c2e$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>
> Xevi,
>
> Por cierto, creo que se puede simplificar bastante tu código de pintado:
>
> METHOD ArrayBrowse1Column1DrawCell( oSender, cText, nClrText, nClrPane,
> lHighLite, hDC, aRect ) CLASS TForm1
>
> if cText = "10002"
> SelectObject( hDC, ::oFontNegreta:Handle )
> Else
> SelectObject( hDC, ::oFontNormal:Handle )
> EndIf
>
> Un saludo
>
> "Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje
> news:43cb8acc$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>> Xevi,
>>
>> El problema se produce porque has creado los fonts en la cláusula INIT, y
>> después de la optimización de Walter, dicho código sólo se evalua una
>> vez, la primera vez que se instancia un objeto de la clase. Segundas
>> instanciaciones sólo recogen el valor que tiene la DATA, pero no se
>> ejecuta de nuevo el código INIT.
>>
>> Por lo tanto, tan sólo tienes que crear los fonts en otro sitio y te
>> funcionará correctamente. Te recomiendo que utilices unicamente
>> constantes en la inicialización de DATAs de clases.
>>
>> Un saludo,
>>
>> "Xevi" <xevicomas@terra.es> escribió en el mensaje
>> news:43cb697f$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>>
>>> Ignacio,
>>>
>>> Adjunto lo tienes.
>>> Me he limitado a incluir un Browse en el Test MDI de Xailer.
>>> Verás que al abrirlo la primera vez, funciona correctamente, el segundo
>>> registro está en negrita, pero si cierras la ventana y la vuelves a
>>> abrirla, ya NO se pinta la fuente del registro segundo en negrita.
>>>
>>>
>>> Un Saludo,
>>> Xevi.
>>>
>>>
>>> "Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el
>>> mensaje news:43cb58ea$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>>>
>>>> Xevi,
>>>>
>>>> Realmente extraño. Intenta mandarnos un pequeño ejemplo.
>>>>
>>>> Gracias,
>>>>
>>>> "Xevi" <xevicomas@terra.es> escribió en el mensaje
>>>> news:43cb509b$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>>>>
>>>>> Jose,
>>>>>
>>>>>
>>>>> Data oFontNormal INIT TFont():Create( "MS Sans Serif", 8, 0, 400 )
>>>>> Data oFontNegreta INIT TFont():Create( "MS Sans Serif", 8, 0, 700 )
>>>>> Method Free() INLINE ::oFontNormal:Destroy(),
>>>>> ::oFontNegreta:Destroy(),
>>>>> Super:Free()
>>>>>
>>>>> Bien, esto funciona PERO solo una vez por formulario CHILD...
>>>>> Me explico...
>>>>> Tal como está, la primera vez que accedo al Form SI funciona el cambio
>>>>> de
>>>>> fuentes,
>>>>> PERO cierro el CHILD y lo vuelvo a abrir y ya NO funciona el cambio de
>>>>> fuentes, por mas que cierre/abra el mismo formulario.
>>>>> He probado de destruir las fuentes en el método OnDestroy pero lo
>>>>> mismo.
>>>>>
>>>>> Si no destruyo las fuentes funciona SIEMPRE que accedo al formulario.
>>>>>
>>>>> Y digo, pienso, me pregunto...
>>>>> ¿A que puede ser debido???
>>>>> ¿es obligatorio que destruya esas Datas???
>>>>> ¿No se destruyen solas al finalizar el Formulario???
>>>>>
>>>>> Gracias.
>>>>>
>>>>> Un Saludo,
>>>>> Xevi.
>>>>>
>>>>>
>>>>> "Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el
>>>>> mensaje
>>>>> news:[email=43c812a2@ozsrvnegro.ozlan.local...]43c812a2@ozsrvnegro.ozlan.local...[/email]
>>>>>>
>>>>>> Xevi,
>>>>>>
>>>>>>> Ya lo he logrado...
>>>>>>> Como me pensaba... creando el tipo de font en uan variable... la
>>>>>>> cargo
>>>>>>> como me has escrito... y YATA !!!
>>>>>>
>>>>>> Exactamente. Pero no te olvides de destruirla cuando ya no la
>>>>>> necesites.
>>>>>> Un buen sitio es en el método Free() del formulario. Ponlo así:
>>>>>>
>>>>>> METHOD Free() INLINE ::oMiFont:Destroy(), Super:Free()
>>>>>>
>>>>>> y no tendrás que preocuparte de nada más.
>>>>>>
>>>>>> --
>>>>>> Un saludo,
>>>>>>
>>>>>> José F. Giménez
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>
>>
>
>
>
Efectivamente, se puede simplificar ese ejemplo como bien dices, ahora bien,
como lo que he hecho es un copy/paste de mi aplicación, me quedé con algo
del condicionante If/endif creado originalmente, jejeje... falta de
depuración de mi ejemplo.
Un saludo,
Xevi.
"Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje
news:43cb8c2e$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>
> Xevi,
>
> Por cierto, creo que se puede simplificar bastante tu código de pintado:
>
> METHOD ArrayBrowse1Column1DrawCell( oSender, cText, nClrText, nClrPane,
> lHighLite, hDC, aRect ) CLASS TForm1
>
> if cText = "10002"
> SelectObject( hDC, ::oFontNegreta:Handle )
> Else
> SelectObject( hDC, ::oFontNormal:Handle )
> EndIf
>
> Un saludo
>
> "Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje
> news:43cb8acc$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>> Xevi,
>>
>> El problema se produce porque has creado los fonts en la cláusula INIT, y
>> después de la optimización de Walter, dicho código sólo se evalua una
>> vez, la primera vez que se instancia un objeto de la clase. Segundas
>> instanciaciones sólo recogen el valor que tiene la DATA, pero no se
>> ejecuta de nuevo el código INIT.
>>
>> Por lo tanto, tan sólo tienes que crear los fonts en otro sitio y te
>> funcionará correctamente. Te recomiendo que utilices unicamente
>> constantes en la inicialización de DATAs de clases.
>>
>> Un saludo,
>>
>> "Xevi" <xevicomas@terra.es> escribió en el mensaje
>> news:43cb697f$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>>
>>> Ignacio,
>>>
>>> Adjunto lo tienes.
>>> Me he limitado a incluir un Browse en el Test MDI de Xailer.
>>> Verás que al abrirlo la primera vez, funciona correctamente, el segundo
>>> registro está en negrita, pero si cierras la ventana y la vuelves a
>>> abrirla, ya NO se pinta la fuente del registro segundo en negrita.
>>>
>>>
>>> Un Saludo,
>>> Xevi.
>>>
>>>
>>> "Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el
>>> mensaje news:43cb58ea$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>>>
>>>> Xevi,
>>>>
>>>> Realmente extraño. Intenta mandarnos un pequeño ejemplo.
>>>>
>>>> Gracias,
>>>>
>>>> "Xevi" <xevicomas@terra.es> escribió en el mensaje
>>>> news:43cb509b$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>>>>
>>>>> Jose,
>>>>>
>>>>>
>>>>> Data oFontNormal INIT TFont():Create( "MS Sans Serif", 8, 0, 400 )
>>>>> Data oFontNegreta INIT TFont():Create( "MS Sans Serif", 8, 0, 700 )
>>>>> Method Free() INLINE ::oFontNormal:Destroy(),
>>>>> ::oFontNegreta:Destroy(),
>>>>> Super:Free()
>>>>>
>>>>> Bien, esto funciona PERO solo una vez por formulario CHILD...
>>>>> Me explico...
>>>>> Tal como está, la primera vez que accedo al Form SI funciona el cambio
>>>>> de
>>>>> fuentes,
>>>>> PERO cierro el CHILD y lo vuelvo a abrir y ya NO funciona el cambio de
>>>>> fuentes, por mas que cierre/abra el mismo formulario.
>>>>> He probado de destruir las fuentes en el método OnDestroy pero lo
>>>>> mismo.
>>>>>
>>>>> Si no destruyo las fuentes funciona SIEMPRE que accedo al formulario.
>>>>>
>>>>> Y digo, pienso, me pregunto...
>>>>> ¿A que puede ser debido???
>>>>> ¿es obligatorio que destruya esas Datas???
>>>>> ¿No se destruyen solas al finalizar el Formulario???
>>>>>
>>>>> Gracias.
>>>>>
>>>>> Un Saludo,
>>>>> Xevi.
>>>>>
>>>>>
>>>>> "Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el
>>>>> mensaje
>>>>> news:[email=43c812a2@ozsrvnegro.ozlan.local...]43c812a2@ozsrvnegro.ozlan.local...[/email]
>>>>>>
>>>>>> Xevi,
>>>>>>
>>>>>>> Ya lo he logrado...
>>>>>>> Como me pensaba... creando el tipo de font en uan variable... la
>>>>>>> cargo
>>>>>>> como me has escrito... y YATA !!!
>>>>>>
>>>>>> Exactamente. Pero no te olvides de destruirla cuando ya no la
>>>>>> necesites.
>>>>>> Un buen sitio es en el método Free() del formulario. Ponlo así:
>>>>>>
>>>>>> METHOD Free() INLINE ::oMiFont:Destroy(), Super:Free()
>>>>>>
>>>>>> y no tendrás que preocuparte de nada más.
>>>>>>
>>>>>> --
>>>>>> Un saludo,
>>>>>>
>>>>>> José F. Giménez
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>
>>
>
>
>
Browse ... TBrwColumn:OnDrawCell
Incluso se puede simplificar más!!!
METHOD ArrayBrowse1Column1DrawCell( oSender, cText, nClrText, nClrPane,
lHighLite, hDC, aRect ) CLASS TForm1
SelectObject( hDC, If( cText = "10002", ::oFontNegreta:Handle,
::oFontNormal:Handle ) )
Un Saludo,
Xevi.
"Xevi" <xevicomas@terra.es> escribió en el mensaje
news:[email=43cb9844@ozsrvnegro.ozlan.local...]43cb9844@ozsrvnegro.ozlan.local...[/email]
>
>
> Ignacio,
>
> Efectivamente, se puede simplificar ese ejemplo como bien dices, ahora
> bien, como lo que he hecho es un copy/paste de mi aplicación, me quedé con
> algo del condicionante If/endif creado originalmente, jejeje... falta de
> depuración de mi ejemplo.
>
>
> Un saludo,
> Xevi.
>
>
> "Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje
> news:43cb8c2e$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>
>> Xevi,
>>
>> Por cierto, creo que se puede simplificar bastante tu código de pintado:
>>
>> METHOD ArrayBrowse1Column1DrawCell( oSender, cText, nClrText, nClrPane,
>> lHighLite, hDC, aRect ) CLASS TForm1
>>
>> if cText = "10002"
>> SelectObject( hDC, ::oFontNegreta:Handle )
>> Else
>> SelectObject( hDC, ::oFontNormal:Handle )
>> EndIf
>>
>> Un saludo
>>
>> "Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje
>> news:43cb8acc$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>> Xevi,
>>>
>>> El problema se produce porque has creado los fonts en la cláusula INIT,
>>> y después de la optimización de Walter, dicho código sólo se evalua una
>>> vez, la primera vez que se instancia un objeto de la clase. Segundas
>>> instanciaciones sólo recogen el valor que tiene la DATA, pero no se
>>> ejecuta de nuevo el código INIT.
>>>
>>> Por lo tanto, tan sólo tienes que crear los fonts en otro sitio y te
>>> funcionará correctamente. Te recomiendo que utilices unicamente
>>> constantes en la inicialización de DATAs de clases.
>>>
>>> Un saludo,
>>>
>>> "Xevi" <xevicomas@terra.es> escribió en el mensaje
>>> news:43cb697f$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>>>
>>>> Ignacio,
>>>>
>>>> Adjunto lo tienes.
>>>> Me he limitado a incluir un Browse en el Test MDI de Xailer.
>>>> Verás que al abrirlo la primera vez, funciona correctamente, el segundo
>>>> registro está en negrita, pero si cierras la ventana y la vuelves a
>>>> abrirla, ya NO se pinta la fuente del registro segundo en negrita.
>>>>
>>>>
>>>> Un Saludo,
>>>> Xevi.
>>>>
>>>>
>>>> "Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el
>>>> mensaje news:43cb58ea$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>>>>
>>>>> Xevi,
>>>>>
>>>>> Realmente extraño. Intenta mandarnos un pequeño ejemplo.
>>>>>
>>>>> Gracias,
>>>>>
>>>>> "Xevi" <xevicomas@terra.es> escribió en el mensaje
>>>>> news:43cb509b$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>>>>>
>>>>>> Jose,
>>>>>>
>>>>>>
>>>>>> Data oFontNormal INIT TFont():Create( "MS Sans Serif", 8, 0, 400 )
>>>>>> Data oFontNegreta INIT TFont():Create( "MS Sans Serif", 8, 0, 700 )
>>>>>> Method Free() INLINE ::oFontNormal:Destroy(),
>>>>>> ::oFontNegreta:Destroy(),
>>>>>> Super:Free()
>>>>>>
>>>>>> Bien, esto funciona PERO solo una vez por formulario CHILD...
>>>>>> Me explico...
>>>>>> Tal como está, la primera vez que accedo al Form SI funciona el
>>>>>> cambio de
>>>>>> fuentes,
>>>>>> PERO cierro el CHILD y lo vuelvo a abrir y ya NO funciona el cambio
>>>>>> de
>>>>>> fuentes, por mas que cierre/abra el mismo formulario.
>>>>>> He probado de destruir las fuentes en el método OnDestroy pero lo
>>>>>> mismo.
>>>>>>
>>>>>> Si no destruyo las fuentes funciona SIEMPRE que accedo al formulario.
>>>>>>
>>>>>> Y digo, pienso, me pregunto...
>>>>>> ¿A que puede ser debido???
>>>>>> ¿es obligatorio que destruya esas Datas???
>>>>>> ¿No se destruyen solas al finalizar el Formulario???
>>>>>>
>>>>>> Gracias.
>>>>>>
>>>>>> Un Saludo,
>>>>>> Xevi.
>>>>>>
>>>>>>
>>>>>> "Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el
>>>>>> mensaje
>>>>>> news:[email=43c812a2@ozsrvnegro.ozlan.local...]43c812a2@ozsrvnegro.ozlan.local...[/email]
>>>>>>>
>>>>>>> Xevi,
>>>>>>>
>>>>>>>> Ya lo he logrado...
>>>>>>>> Como me pensaba... creando el tipo de font en uan variable... la
>>>>>>>> cargo
>>>>>>>> como me has escrito... y YATA !!!
>>>>>>>
>>>>>>> Exactamente. Pero no te olvides de destruirla cuando ya no la
>>>>>>> necesites.
>>>>>>> Un buen sitio es en el método Free() del formulario. Ponlo así:
>>>>>>>
>>>>>>> METHOD Free() INLINE ::oMiFont:Destroy(), Super:Free()
>>>>>>>
>>>>>>> y no tendrás que preocuparte de nada más.
>>>>>>>
>>>>>>> --
>>>>>>> Un saludo,
>>>>>>>
>>>>>>> José F. Giménez
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>>
>
>
>
>
METHOD ArrayBrowse1Column1DrawCell( oSender, cText, nClrText, nClrPane,
lHighLite, hDC, aRect ) CLASS TForm1
SelectObject( hDC, If( cText = "10002", ::oFontNegreta:Handle,
::oFontNormal:Handle ) )
Un Saludo,
Xevi.
"Xevi" <xevicomas@terra.es> escribió en el mensaje
news:[email=43cb9844@ozsrvnegro.ozlan.local...]43cb9844@ozsrvnegro.ozlan.local...[/email]
>
>
> Ignacio,
>
> Efectivamente, se puede simplificar ese ejemplo como bien dices, ahora
> bien, como lo que he hecho es un copy/paste de mi aplicación, me quedé con
> algo del condicionante If/endif creado originalmente, jejeje... falta de
> depuración de mi ejemplo.
>
>
> Un saludo,
> Xevi.
>
>
> "Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje
> news:43cb8c2e$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>
>> Xevi,
>>
>> Por cierto, creo que se puede simplificar bastante tu código de pintado:
>>
>> METHOD ArrayBrowse1Column1DrawCell( oSender, cText, nClrText, nClrPane,
>> lHighLite, hDC, aRect ) CLASS TForm1
>>
>> if cText = "10002"
>> SelectObject( hDC, ::oFontNegreta:Handle )
>> Else
>> SelectObject( hDC, ::oFontNormal:Handle )
>> EndIf
>>
>> Un saludo
>>
>> "Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje
>> news:43cb8acc$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>> Xevi,
>>>
>>> El problema se produce porque has creado los fonts en la cláusula INIT,
>>> y después de la optimización de Walter, dicho código sólo se evalua una
>>> vez, la primera vez que se instancia un objeto de la clase. Segundas
>>> instanciaciones sólo recogen el valor que tiene la DATA, pero no se
>>> ejecuta de nuevo el código INIT.
>>>
>>> Por lo tanto, tan sólo tienes que crear los fonts en otro sitio y te
>>> funcionará correctamente. Te recomiendo que utilices unicamente
>>> constantes en la inicialización de DATAs de clases.
>>>
>>> Un saludo,
>>>
>>> "Xevi" <xevicomas@terra.es> escribió en el mensaje
>>> news:43cb697f$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>>>
>>>> Ignacio,
>>>>
>>>> Adjunto lo tienes.
>>>> Me he limitado a incluir un Browse en el Test MDI de Xailer.
>>>> Verás que al abrirlo la primera vez, funciona correctamente, el segundo
>>>> registro está en negrita, pero si cierras la ventana y la vuelves a
>>>> abrirla, ya NO se pinta la fuente del registro segundo en negrita.
>>>>
>>>>
>>>> Un Saludo,
>>>> Xevi.
>>>>
>>>>
>>>> "Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el
>>>> mensaje news:43cb58ea$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>>>>
>>>>> Xevi,
>>>>>
>>>>> Realmente extraño. Intenta mandarnos un pequeño ejemplo.
>>>>>
>>>>> Gracias,
>>>>>
>>>>> "Xevi" <xevicomas@terra.es> escribió en el mensaje
>>>>> news:43cb509b$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>>>>>
>>>>>> Jose,
>>>>>>
>>>>>>
>>>>>> Data oFontNormal INIT TFont():Create( "MS Sans Serif", 8, 0, 400 )
>>>>>> Data oFontNegreta INIT TFont():Create( "MS Sans Serif", 8, 0, 700 )
>>>>>> Method Free() INLINE ::oFontNormal:Destroy(),
>>>>>> ::oFontNegreta:Destroy(),
>>>>>> Super:Free()
>>>>>>
>>>>>> Bien, esto funciona PERO solo una vez por formulario CHILD...
>>>>>> Me explico...
>>>>>> Tal como está, la primera vez que accedo al Form SI funciona el
>>>>>> cambio de
>>>>>> fuentes,
>>>>>> PERO cierro el CHILD y lo vuelvo a abrir y ya NO funciona el cambio
>>>>>> de
>>>>>> fuentes, por mas que cierre/abra el mismo formulario.
>>>>>> He probado de destruir las fuentes en el método OnDestroy pero lo
>>>>>> mismo.
>>>>>>
>>>>>> Si no destruyo las fuentes funciona SIEMPRE que accedo al formulario.
>>>>>>
>>>>>> Y digo, pienso, me pregunto...
>>>>>> ¿A que puede ser debido???
>>>>>> ¿es obligatorio que destruya esas Datas???
>>>>>> ¿No se destruyen solas al finalizar el Formulario???
>>>>>>
>>>>>> Gracias.
>>>>>>
>>>>>> Un Saludo,
>>>>>> Xevi.
>>>>>>
>>>>>>
>>>>>> "Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el
>>>>>> mensaje
>>>>>> news:[email=43c812a2@ozsrvnegro.ozlan.local...]43c812a2@ozsrvnegro.ozlan.local...[/email]
>>>>>>>
>>>>>>> Xevi,
>>>>>>>
>>>>>>>> Ya lo he logrado...
>>>>>>>> Como me pensaba... creando el tipo de font en uan variable... la
>>>>>>>> cargo
>>>>>>>> como me has escrito... y YATA !!!
>>>>>>>
>>>>>>> Exactamente. Pero no te olvides de destruirla cuando ya no la
>>>>>>> necesites.
>>>>>>> Un buen sitio es en el método Free() del formulario. Ponlo así:
>>>>>>>
>>>>>>> METHOD Free() INLINE ::oMiFont:Destroy(), Super:Free()
>>>>>>>
>>>>>>> y no tendrás que preocuparte de nada más.
>>>>>>>
>>>>>>> --
>>>>>>> Un saludo,
>>>>>>>
>>>>>>> José F. Giménez
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>>
>
>
>
>