Hola:
Roman escribió:
Cita:
Esto, TStringGrid(DBGrid1).DefaultRowHeight:=60;
*jamás* debe hacerse.
|
Me parece demasiado categórico decir que jamás debe hacerse. Para mí es un truco muy válido cuando se sabe que la propiedad/método al que se accede pertenece a un ancestro común, como es el caso. Nos valemos de una clase que sí tiene dicha propiedad como public y que hace de "wrapper", y en realidad funciona. Se supone que si está implementada en el ancestro común es porque define un comportamiento común y válido para todas sus clases descendientes, aunqeu lo hagamos valer a través de un intermediario.
Quizás una forma más ortodoxa sería heredar un componente de TDBGrid y promover dicha propiedad a la sección public, o en caso de un método virtual, redefinirlo como public, pero es un trabajo extra que podemos evitar.
Por supuesto, este truco está supeditado a conocer de antemano la declaración de las clases que estamos manejando (para eso está el código fuente), pero eso sucede con el uso diario de componentes, su implementación puede variar de una versión a otra, y de hecho sucede, pero esa es una información de la que dispone el programador.
Ya ves, Roman, siempre dispuesto a replicarte. Espero tu contraréplica.
Un slaudo