Einzelnen Beitrag anzeigen

Sillium

Registriert seit: 9. Jul 2005
24 Beiträge
 
#1

Popupmenu in Listbox!! Repaint beim schließen!

  Alt 12. Aug 2005, 02:16
Hallo,

ich habe eine ListBox mit mehreren einträgen, der ich mit der Drawitem-Procedure Icons vor jeden eintrag zeichne.

Das klappt so weit sehr gut.
Jetzt habe ich allerdings für das ereignis rechte-mause-down über einem Eintrag ein popupmenu hinzugefügt.
Code:
procedure TForm3.tlbGamesMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);

var
  cursorpos : TPoint;
  ndx : integer;
begin
  if Button=mbRight then
  begin
    cursorpos.X := X;
    cursorpos.Y := y;
    ndx := tlbGames.ItemAtPos(cursorpos,true); // Item unter dem Cursor
    if (ndx <> -1) then
    begin
      with (Sender As TListBox) do
      begin
        Selected[ndx] := True;
        cursorpos := ClientToScreen(cursorpos); // Positionsanpassung
        PopMenu1.Popup(cursorpos.x + Left,cursorpos.Y + Top);
      end;
    end;
  end;
end;
Klappt auch noch alles wunderbar.
Doch wenn ich jetzt rechts auf einen eintrag in meiner box klicke und dann neben das popupmenu, so dass sich diese wieder schließt, sind meine Einträge in der Listbox über denen das popup gezeichnet war weg. Erst durch anklicken mit der linken Maustaste werden sie wieder sichtbar(neu gezeichnet)
Wenn ich jetzt abfragen könnte wann das popupmenu geschlossen wird könnte ich mit

Code:
tlbGames.repaint  //<----ListBox neu zeichnen!!
die Listbox neu zeichnen lassen.
Aber wie mach ich das???

Oder weiß jemand ne andere Lösung??
Hab die verschiedenen Threads zum Thema Popupmenu onclose, usw. schon gelesen. Bloß werd ich daraus nicht schlau!!

Danke
  Mit Zitat antworten Zitat