Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Trucos (https://www.clubdelphi.com/foros/forumdisplay.php?f=52)
-   -   Cambiar el rectángulo de Foco en un TListBox (https://www.clubdelphi.com/foros/showthread.php?t=80759)

dec 10-09-2006 16:29:48

Cambiar el rectángulo de Foco en un TListBox
 
Probablemente este truco pueda servir para otros controles. Se trata de cambiar el rectángulo que aparece alrededor de un elemento seleccionado en un "TListBox", en este caso:

Código Delphi [-]
procedure TForm1.ListBox1DrawItem(Control: TWinControl;
  Index: Integer; Rect: TRect; State: TOwnerDrawState);
begin
  with Control as TListBox do
  begin
    Canvas.Brush.Style := bsSolid;
    Canvas.Brush.Color:= clWhite;
    Canvas.Pen.Style := psSolid;
    Canvas.Pen.Color := clRed;
    Canvas.Pen.Width := 1;

    if odSelected in State then
      Canvas.Rectangle(Rect)
    else
      Canvas.FillRect(Rect);

    /*
      Aquí está la clave del asunto:
      Si tenemos el foco, lo dibujamos nosotros primero
    */
    if odFocused in State then
      Canvas.DrawFocusRect(Rect);

    Canvas.Font.Color := clBlack;
    Canvas.TextOut(Rect.Left + 1, Rect.Top + 1, Items[Index]);
  end;
end;

roman 10-09-2006 16:29:49

El título de este truco es incorrecto (ListView)

dec 10-09-2006 16:37:28

Ya está arreglado. Gracias Román. ;)


La franja horaria es GMT +2. Ahora son las 01:03:41.

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