Ver Mensaje Individual
  #5  
Antiguo 21-09-2006
sur-se sur-se is offline
Miembro
 
Registrado: may 2003
Posts: 212
Reputación: 24
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