Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-09-2006
sur-se sur-se is offline
Miembro
 
Registrado: may 2003
Posts: 212
Poder: 21
sur-se Va por buen camino
Cambiar el color de la fuente en campos deshabilitados

Hola.
Cuando deshabilito un campo edit, este adopta un color de fuente gris y me gustaría poder controlarlo para que dejarlo en negro u otro color.
Tengo un componente hecho heredado de él, y me gustaría poder configurar el campo cuando queda deshabilitado.

Un saludo.
Responder Con Cita
  #2  
Antiguo 21-09-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
TEdit deriva de TControl y TControl tiene el procedimiento SetEnabled de acceso a la propiedad Enabled como virtual, por lo tanto deberías poder sobreescribirlo.

Prueba a sobreescribir este procedimiento (override) en tu componente y cambiar el color de la fuente después de llamar al inherited.

¿Me expliqué bien?
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 21-09-2006
sur-se sur-se is offline
Miembro
 
Registrado: may 2003
Posts: 212
Poder: 21
sur-se Va por buen camino
No funciona eso. Es lo primero que hice, pero no va. Parece que al pintar el componente tiene fijado ese color de fuente.
¿La alternativa parece que pasará por pintar yo el texto dentro del campo y con el color del font correcto?

Un saludo.
Responder Con Cita
  #4  
Antiguo 21-09-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por sur-se
¿La alternativa parece que pasará por pintar yo el texto dentro del campo y con el color del font correcto?
Parece el siguiente paso (a mi así de pronto no seme ocurre otro); Puedes probar con alguno de estos:

Código Delphi [-]
procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
procedure WMNCPaint(var Message: TMessage); message WM_NCPAINT;

Ambos en TWinControl.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 21-09-2006
sur-se sur-se is offline
Miembro
 
Registrado: may 2003
Posts: 212
Poder: 21
sur-se Va por buen camino
Bueno, pues al final lo he hecho de la forma siguiente:

Código:
type 
  TMiEdit = class(TEdit)
...

procedure WMPAINT(var Msg : TMessage); message WM_PAINT;

....

procedure TMiEdit.WMPAINT(var Msg: TMessage);
begin
     inherited;
     if not enabled then Pintar_Texto;
end;

procedure TMiEdit.Pintar_Texto;
var
    DC : HDC;
    Canvas: TCanvas;
    ps: TPaintStruct;
    CallEndPaint: Boolean;
    R:TRect;
begin
    DC := GetWindowDC(Self.Handle);
    R:=ClientRect;
    CallEndPaint := False;
    Canvas:=TCanvas.Create;
    try
      if DC <> 0 then
      begin
        Canvas.Handle := DC;
        ps.fErase := true;
      end
      else
      begin
        BeginPaint(Handle, ps);
        CallEndPaint:= True;
        Canvas.handle := ps.hdc;
      end;
      if ps.fErase then Perform(WM_ERASEBKGND, Canvas.Handle, 0);
      SaveDC(canvas.handle);
      try
        Canvas.Brush.Style := bsClear;
        Canvas.Font := Font;
        Canvas.Font.Color := clBlack;
        Canvas.TextRect(R,3,3,text);
      finally
        RestoreDC(Canvas.Handle, - 1);
      end;
    finally
      if CallEndPaint then
        EndPaint(handle, ps);
      Canvas.Free;
      ReleaseDC(Self.handle,DC);
    end;
end;
Así va bien.
Salu2.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
cambiar Color de la fuente de un Tdbedit nenufer OOP 8 26-05-2006 16:30:52
Cambiar el color de la fuente chipsoni Varios 2 24-04-2006 13:52:12
Cambiar color de fuente de un String Grid. alfredosg19 OOP 2 27-03-2005 18:48:10
Cambiar la fuente, el color del texto y su tamaño en un tmemo gaska OOP 1 06-05-2004 19:09:02
Color de fuente en Edit !!! vpepen Varios 4 05-12-2003 13:01:42


La franja horaria es GMT +2. Ahora son las 12:34:11.


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
Copyright 1996-2007 Club Delphi