Fórum Dúvida sobre POO: Encapsulamento #399723
25/04/2011
0
Boa noite amigos,
Estou com uma dúvida sobre POO:
A classe TStringGrid possui a propriedade Options, que me permite
configurar algumas características do TStringGrid, entre essas características está
o GoColMoving.
Eu estava precisando utilizar essa propriedade no TDBGrid, mas o TDGrid
não possui, então cheguei a duas soluções:
1ª Implementação - Fiz um casting com a classe TStringGrid no evento
Onshow do form:
2ª Implementação - Criei um classe herdando de TCustomGrid:
No evento OnShow do form utilizei o seguinte código:
A minha dúvida está na segunda implementação, pois, a propriedade Options
na classe TCustomGrid está definida como protected, então achei que de acordo
com os conceitos de escopo(public, private, protected) da POO eu não deveria “enxerga-la” em outra Classe.
Porque estou podendo manipular(enxergar) a propriedade Options conforme
a 2ª implementação?
Obrigado!
TStringGrid(DBGrid1).Options := TStringGrid(DBGrid1).Options - [goColMoving];
type MyCustomGrid: class(TCustomGrid);
MyCustomGrid(DBGrid1).Options := MyCustomGrid(DBGrid1).Options - [goColMoving];
Rafael Pimenta
Curtir tópico
+ 0
Responder
Posts
26/04/2011
Marcos Rocha
Você deve estar procurando algo do tipo
http://www.delphi3000.com/articles/article_2000.asp?SK=
http://www.delphi3000.com/articles/article_2000.asp?SK=
Responder
Gostei + 0
26/04/2011
André Silveira
Normalmente, você não pode acessar membros protegidos de um objeto. Mas Delphi deixa você acessar membros protegidos se o objeto foi definido na mesma unit. Assim, você pode definir um objeto derivado e fazer a mudança de tipo onde quer usar o membro protegido.
Seria algo assim:
THackControl = class(TCustomEdit) end;
Depois de definir esta classe, você pode acessar todos membros protegidos de TCustomEdit, com objetos de classe derivadas com um código como esse:
THackControl(MyEdit).Color := clBlack;
Seria algo assim:
THackControl = class(TCustomEdit) end;
Depois de definir esta classe, você pode acessar todos membros protegidos de TCustomEdit, com objetos de classe derivadas com um código como esse:
THackControl(MyEdit).Color := clBlack;
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)