Imagine que você precise definir uma altura específica de uma linha em um DBGrid, a primeira linha, por exemplo.
Você vai no código e coloca:
DBGrid1.RowHeights[ 0 ]:= 50;
Você compila e vê que deu erro informando que não existe tal propriedade. Daí você pensa: se no StringGrid tem por que não tem no DBGrid?
A resposta é: essa propriedade existe, mas é protegida.
Mostrarei aqui como acessá-la, mas lembre-se de que essa não é uma técnica muito recomendada, se a propriedade está protegida deve ter um bom motivo.
Mas vamos lá!
Na Unit do Form que contém o DBGrid vamos declarar uma nova classe antes da declaração da classe do Form, ficando o código assim:
type
TMeuDBGrid = class(TDBGrid);
type
TForm1 = class(TForm)
.
.
.
Feito isso, para acessar a propriedade protegida, no caso a altura da linha, vamos fazer um typecast do DBGrid:
TMeuDBGrid(DBGrid1).RowHeights[ 0 ]:= 50;
Você compila e.... funciona!!!
Isso vale para outras propriedades e componentes.
Mas como dito antes, não é uma técnica recomendada, por isso, use por sua conta e risco.
Pesquise no Blog
quinta-feira, 17 de janeiro de 2008
Acessando propriedades protegidas de um componente
Postado por
Dnv-X
às
17:42
Marcadores: Componentes, Intermediário, Propriedades
Assinar:
Postar comentários (Atom)
Um comentário:
Só para enriquecer:
Vale a pena ressaltar que as propriedades protegidas são apenas para uso interno e seu acesso fora da unit não costuma ter mto sentido.
Este macete funciona pq os atributos e métodos protegidos de uma classe são acessíveis para seus filhos.
Note que isso não funciona para atributos privados.
Postar um comentário