Fórum Novas propriedades num Componente, será que posso fazer? #319481
19/04/2006
0
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
Curtir tópico
+ 0Posts
19/04/2006
Renato.pavan
Colega,
Como vc faz pra mudar a cor da fonte do Edit ou DBEdit qdo deixa ele enable := False?
Obrigado
Renato.
Gostei + 0
19/04/2006
Michael
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
Gostei + 0
19/04/2006
Titanius
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
Gostei + 0
20/04/2006
Michael
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
Gostei + 0
25/04/2006
Renato.pavan
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
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)