Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Cambiar color de texto del TAdvEdit cuando está desactivado (https://www.clubdelphi.com/foros/showthread.php?t=92796)

strelok 06-02-2018 13:51:34

Cambiar color de texto del TAdvEdit cuando está desactivado
 
Hola,

el componente de TMS, TAdvEdit,permite configurar colores tales como:
- FocusColor
- FocusFontColor
- FocusBorderColor
- DisabledColor

pero no existe un "DisabledFontColor", necesito cambiar ese gris que me pone por defecto ¿como puedo solucionarlo?, además también me gustaría cambiar la descripción que aparece en los Edits, es decir, la propiedad EmptyText

Neftali [Germán.Estévez] 06-02-2018 15:09:19

Pues si el componente no tiene propiedades para ello, lo más facil es derivar el componente y crear uno tuyo al que le añadas las propiedades necesarias.
En el FTP, en esta sección, tienes un poar de manuales sobre cómo crear componentes que paso a paso te describen los pasos.
  • Crear componentes paso a paso
  • Crear componentes paso a paso.

strelok 06-02-2018 16:04:04

No lo veo viable, ya que tendría que cambiar manualmente más de 2000 TAdvEdits en todo el programa, ahora mismo estoy leyendo de ClassHelper, parece que podría agregar esas funcionalidades a la clase base ¿sabrías algo al respecto?

oscorm 06-02-2018 16:14:09

Creo que lo que te dice Neftali es que metas código en el TAdvEdit para que coloree según lo que tu quieras.
Si lo haces, todos los TAdvEdit se comportarán como tu quieres a partir de la compilación.
Yo lo tengo resuelto evidentemente a mi manera usando un componente derivado de TEdit ....
procedure CMEXIT(var Message :TMessage); message CM_EXIT;
procedure CMENTER(var Message :TMessage); message CM_ENTER;
procedure WMPaint(var Message: TWMPaint); message WM_Paint;

Espero te valga la idea como ayuda

strelok 06-02-2018 18:24:19

Entré al componente indicado y efectivamente está asignando gris en el caso de la propiedad EmptyText, es decir, puedo personalizar ese, sin embargo, el color del texto cuando el componente está desactivado no está, debe ser a mas bajo nivel, que decepción.

Las últimas versiones de Delphi siguen teniendo componentes así?:confused::eek:

oscorm 06-02-2018 19:25:45

TadvEdit es un componente de la suite TMS . He estado mirando el código y lo tienes chupado.
Código Delphi [-]
constructor TAdvEdit.Create(AOwner: TComponent);
var
  VerInfo: TOSVersioninfo;
  i: integer;

begin
  inherited Create(aOwner);
  FFocusColor := clNone;
  FFocusFontColor := clWindowText;
  FNormalColor := clWindow;
  FFontColor := self.Font.Color;
  FBorderColor := clNone;
  FModifiedColor := clHighLight;
  FErrorColor := clRed;
  FErrorFontColor := clWhite;
  FURLColor := clBlue;
  FDisabledColor := clSilver;
  FFlatParentColor := True;
  FFlatLineColor := clBlack;
 .......
Asi que pones los colores que tu creas convenientes en donde toque y a correr.

strelok 07-02-2018 09:24:33

Cita:

Empezado por oscorm (Mensaje 524373)
TadvEdit es un componente de la suite TMS . He estado mirando el código y lo tienes chupado.
Código Delphi [-]
constructor TAdvEdit.Create(AOwner: TComponent);
var
  VerInfo: TOSVersioninfo;
  i: integer;

begin
  inherited Create(aOwner);
  FFocusColor := clNone;
  FFocusFontColor := clWindowText;
  FNormalColor := clWindow;
  FFontColor := self.Font.Color;
  FBorderColor := clNone;
  FModifiedColor := clHighLight;
  FErrorColor := clRed;
  FErrorFontColor := clWhite;
  FURLColor := clBlue;
  FDisabledColor := clSilver;
  FFlatParentColor := True;
  FFlatLineColor := clBlack;
 .......
Asi que pones los colores que tu creas convenientes en donde toque y a correr.

¿chupado? no entendí.
Lo solucioné mirando el código interno, me di cuenta que reemplaza el del formulario si llamas a "Init", por ende, mi código estaba casi perfecto, solo faltaba una línea.
miEditdeTMS.Init;

Que ganas de pegarme un tiro jajaja, días perdidos con esto

oscorm 07-02-2018 13:20:24

Perfecto, asunto solucionado!!!


La franja horaria es GMT +2. Ahora son las 09:24:00.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi