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