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
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>>
>
>
>
>