Como Pintar Controls usando classes superiores ?

Delphi

14/10/2004

Olá Amigos estou criando um componente que em um determinado momento vai mudar o color de alguns controls...só que estou com o seguinte problema...
Não queria fazer isso :
TComboBox(objeto).color:=clred;
TDBComboBox(objeto).color:=clred;
TRxDBComboBox(objeto).color:=clred;
Gostaria de saber se tem como usar as classes superiores dos objetos para pintar .
[u:07ff8b7ae0]Exemplos:[/u:07ff8b7ae0]
TCustomComboBox
TCustomListBox
TCustomEdit
TCustomMemo
Porém naum dá pra usar a propriedade Color(ela está protected)...tem outra maneira de fazer isso(usando canvas naum dá) ?


Alexandresbo2

Alexandresbo2

Curtidas 0

Respostas

Fórum Vini

Fórum Vini

14/10/2004

Porém naum dá pra usar a propriedade Color(ela está protected)...

Isso não é problema! :lol:
type
  TCustomComboBoxHack = class(TCustomComboBox)
  end;
...
begin
  TCustomComboBoxHack(MeuComboBox).Color:= clRed;
  ...
end;

tem outra maneira de fazer isso(usando canvas naum dá) ?

Tem sim, usando TControlCanvas..
var C: TControlCanvas;
begin
  C:= TControlCanvas.Create;
  C.Control:= ListBox1;
  // Aqui vem o codigo da pintura
  C.Free;
end;

O único problema de usar isso é que quando o controle é repintado pelo windows, a sua pintura sai.. Se você se interessar, eu posto o código pra driblar isso...:wink:

Esprto ter ajudado,
Vinicius;


GOSTEI 0
Ipc$

Ipc$

14/10/2004

Outra solução seria:
type TMControl = class(TControl);

TMControl(Objeto).color := clred;



GOSTEI 0
Alexandresbo2

Alexandresbo2

14/10/2004

Valew IPC$ deu certinho


GOSTEI 0
POSTAR