Ver Mensaje Individual
  #5  
Antiguo 29-10-2015
josepicd josepicd is offline
Miembro
 
Registrado: jun 2015
Posts: 57
Reputación: 9
josepicd Va por buen camino
Bueno, gracias de nuevo a todos. El metodo paint del TEdit no se puede sobreescribir ya que no lo implementa el componente para ello, deberia heredar mi nuevo componente desde mas arriba TCustomEdit o aun mas, no lo he mirado.

Bueno el caso es que no queria complicarme mucho y tampoco soy partidario de ir implementando componentes a diestro y siniestro asi que al final he hecho lo siguiente por si alguien lo necesita. Simplemente cuando me place llamo a este procedimiento que lo unico que hace es repintar encima poniendome en rojo la letra numero "idx".

Código Delphi [-]
procedure TMyEdit.settonica( idx : integer);
var
 fCanvas: Tcanvas;
 i, p, t: integer;
 st, st2: string;
 left : integer;
 c, c2: char;
begin
 try
   fcanvas := tcontrolcanvas.Create;
   TcontrolCanvas(fcanvas).Control := Self;
   fcanvas.Brush.Color := Brush.Color;
   fcanvas.font := font;
   st := Text;
   st2 := uppercase(Text);
   p := ((self.Width - fcanvas.TextWidth(st)) div 2)-2;
   t := ((self.Height - fcanvas.TextHeight(st)) div 2)-3;
   for i := 1 to length(st) do begin
     c := st[i];
     c2 := st2[i];  
       if i = idx  then fcanvas.Font.Color := clred
                     else fcanvas.Font.Color := clblack;
     fcanvas.TextOut(p, t, c);
     P := P + fcanvas.TextWidth(c);
   end;
 finally
   fcanvas.Free;
 end;
end;
Responder Con Cita