Fórum Novas propriedades num Componente, será que posso fazer? #319481

19/04/2006

0

Olá amigos, queria incluir nos componentes TEdit e TDBEdit, ou qualquer variação deles as seguintes propriedades:

DisableColor, DisableFontColor

Para que? Pra quando o Enabled deles estiverem como False, eles mudarem de cor, faço isso manualmente, então pensei em incluir isso no próprio Edit.

Então eis minha pergunta, é melhor eu criar um outro componente para isso, ou arrumar um jeito de incluir isso no componente do proprio delphi? No caso, como faria?


Desde já agradeço.

[]s


Titanius

Titanius

Responder

Posts

19/04/2006

Renato.pavan

Para que? Pra quando o Enabled deles estiverem como False, eles mudarem de cor, faço isso manualmente, então pensei em incluir isso no próprio Edit.


Colega,

Como vc faz pra mudar a cor da fonte do Edit ou DBEdit qdo deixa ele enable := False?

Obrigado

Renato.


Responder

Gostei + 0

19/04/2006

Michael

Olá [b:1fbd60d1f8]titanius[/b:1fbd60d1f8]!

Uma vez fiz um componente derivado de [b:1fbd60d1f8]TMaskEdit [/b:1fbd60d1f8]que tinha vários recursos extras, e um deles era exatamente esse que vc quer: mudar a cor do controle qdo [b:1fbd60d1f8]Enabled [/b:1fbd60d1f8]for igual a [b:1fbd60d1f8]False[/b:1fbd60d1f8].

Vc tem duas opções: ou cria uma nova classe derivada de [b:1fbd60d1f8]TEdit [/b:1fbd60d1f8]- ou [b:1fbd60d1f8]TMaskEdit [/b:1fbd60d1f8]- e implementa a nova propriedade; ou, se estiver usando o Delphi 2005/2006, pode usar o recurso adicionado à Delphi Language nessa versões chamado [b:1fbd60d1f8]Class Helper[/b:1fbd60d1f8]. Ele permite que sejam adicionados novas funcionalidades à classes existentes. Saiu um artigo sobre este feature em alguma edição do final do ano passado da revista ClubeDelphi. Não lembro de cabeça qual agora... :-(

Seja qual for o caminho que vc escolher, se tiver dúvidas, poste aqui. ;-)

[]´s


Responder

Gostei + 0

19/04/2006

Titanius

Fala ae Michael... vc eh o cara dos componentes.. :roll:

Estava pensando... Seria ´mais fácil´ (repare nas aspas :D ) eu criar um componente derivado, pois tenho vários sistemas em D7, e não poderia usar o recurso que vc mencionou...

Você poderia me dar um exemplo de como eu faço isso?


[]s


Responder

Gostei + 0

20/04/2006

Michael

Desculpe pela resposta tardia, mas estou meio enrolado por aqui...

Bom, vc só precisa interceptar a mensagem [b:72ccfa4028]CM_FONTCHANGED[/b:72ccfa4028] no seu componente - que precisa derivar de [b:72ccfa4028]TControl[/b:72ccfa4028], ainda que indiretamente - e na rotina de tratamento setar a cor do componente para àquela definida para ser usada qdo [b:72ccfa4028]Enabled [/b:72ccfa4028]for igual a [b:72ccfa4028]False[/b:72ccfa4028]. Veja:

TMeuComponente = class(TEdit)
  ...
  protected
    procedure CMEnabledChanged(var Message: TMessage); message CM_ENABLEDCHANGED;
  ...
end;

...

procedure TMeuComponente.CMEnabledChanged(var Message: TMessage); message CM_ENABLEDCHANGED;
begin
  if Enabled then
    Color := FCorOriginalSalva
  else
    Color := FCorDesativado;

  Invalidate;
end;


Note que vc vai precisar salvar a cor original do componente para poder restaurá-la depois.

Qualquer dúvida, é só postar... ;-)

[]´s


Responder

Gostei + 0

25/04/2006

Renato.pavan

Olá amigos, queria incluir nos componentes TEdit e TDBEdit, ou qualquer variação deles as seguintes propriedades: DisableColor, DisableFontColor Para que? Pra quando o Enabled deles estiverem como False, eles mudarem de cor, faço isso manualmente, então pensei em incluir isso no próprio Edit. Então eis minha pergunta, é melhor eu criar um outro componente para isso, ou arrumar um jeito de incluir isso no componente do proprio delphi? No caso, como faria? Desde já agradeço. []s


Colega, vc poderia me dizer como vc faz pra mudar a cor da fonte de um edit por exemplo, quando sua propriedade enabled estiver setada como false?

Desde ja agradeço

Renato


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar