Bueno pues, ya si nos vamos a estos extremos, la forma
verdaderamente correcta es:
Código:
unit UPGrid;
interface
uses
Classes, DBGrids;
type
TUPGrid = class(TDBGrid)
public
property Col;
property Row;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('BDE', [TUPGrid]);
end;
end.
Y ya con la nueva componente en la paleta utilizar ésta en lugar de la original DBGrid.
El hecho de que en una misma unidad puedan accederse a las propiedades privadas y protegidas de otra clase (lo que habilita el truco) se debe a la forma en que Delphi
implementa las clases
amigas que tienen otros lenguajes como C++.
En el truco original le estamos diciendo al compilador que TUPGrid es una clase
amiga de TCustomGrid y después le hacemos creer que DBGrid es de dicha clase
amiga.
Pero este truco es completamente válido como lo demuestra el hecho de que podamos derivar un componente e instalarlo en la paleta.
Aquí la disyunción sería la siguiente:
Si vamos a utilizar estas propiedades protegidas (Row y Col) una sóla vez entonces lo más adecuado es el truco; pero si vamos a estar utilizándolas regularmente lo mejor es derivar la componente e instalarla.
// Saludos