Ver Mensaje Individual
  #1  
Antiguo 10-09-2006
Avatar de Kimero
Kimero Kimero is offline
Miembro
 
Registrado: sep 2006
Ubicación: el país de nestor
Posts: 12
Reputación: 0
Kimero Va por buen camino
[gdi] Cambiar DrawFocusRectangle

la verdad q ya no se q mas intentar, quiero cambiar el rectangulo de foco a una linea solida, y tal vez cambiar el color (pero con la linea solida ya me alcanza)

las últimas 6 horas de google fueron bastardas, basicamente quiero cambiar:


a esto:


en principio no parece tan complejo, asignar un TPen al canvas del listbox y listo (tambien estoy cambiando el relleno, por eso asigno un TBrush también):

Código Delphi [-]
procedure TForm1.listaDrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
var
  pincel: TBrush;
  lapiz: TPen;
begin
  with Control as TListBox do
  begin
    pincel := TBrush.Create();
    pincel.Color := clGray;
    pincel.Style := bsSolid;
    Canvas.Brush := pincel;

    lapiz := TPen.Create;
    lapiz.Style := psSolid;
    lapiz.Mode := pmBlack;
    lapiz.Color := clRed;
    lapiz.Width := 1;
    Canvas.Pen := lapiz;

    Canvas.DrawFocusRect(Rect);
    Canvas.FillRect(Rect);

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

por que me ignora entonces? no hay absolutamente nada que pueda cambiar el comportamiento, sin embargo el brush del mismo ejemplo va perfecto [cambia el azul tipico a gris]

DrawFocusRect solo pide un Trect por lo q _deberia_ tomar el pen q esta usando el canvas, que es lo que estoy errando ?

socorro

Última edición por Kimero fecha: 10-09-2006 a las 08:38:52.
Responder Con Cita