Einzelnen Beitrag anzeigen

Popov
(Gast)

n/a Beiträge
 
#1

Kann mir das einer mit ListBoxDrawItem und odFocused erklären

  Alt 14. Feb 2012, 16:06
Wieder mal etwas wo ich 'ne viertel Stunde meines Lebens damit vergeudet habe, weil ich etwas schon zig mal gemacht habe und wo es dieses mal plötzlich nicht klappt.

Und zwar geht es drum den Fokus aus der ListBox zu entfernen, was ich übrigens schon einige Male gemacht habe. Anscheinend nur zufällig richtig.

Überschreibe ich den Fokus mit DrawFocusRect vor Canvas.TextRect, bleibt er sichtbar, mache ich es danach, ist er weg. Anscheinend zeichnet TextRect den Fokus. Nur steht in der OH nichts von einem Flag der das bewirkt. Weiß einer mehr?
Delphi-Quellcode:
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
  with (Control as TListbox) do
  begin
    //if odFocused in State then Canvas.DrawFocusRect(Rect); //klappt nicht

    Canvas.TextRect(Rect, Rect.Left, Rect.Top, Items[Index]);
    
    if odFocused in State then Canvas.DrawFocusRect(Rect); //klappt
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin //Beispielfüllung
  ListBox1.Style := lbOwnerDrawFixed;
  for i := 0 to 10 do
    ListBox1.Items.Add(DateTimeToStr(Now));
end;
  Mit Zitat antworten Zitat