![]() |
TListBox ListBox1MouseActivate ItemIndex?
Ich quäle mich gerade etwas ab und weiß nicht wie ich weiterkommen.
Kann man irgendwie im ListBox1MouseActivate-Event an den Index des Items kommen, das man angeklickt hat? |
AW: TListBox ListBox1MouseActivate ItemIndex?
Eventuell kannst mit den X,Y-Werten und
Delphi-Quellcode:
was erreichen. Ich weiß nur gerade nicht, ob X,Y relativ zu Client oder Screen sind.
ItemAtPos
|
AW: TListBox ListBox1MouseActivate ItemIndex?
|
AW: TListBox ListBox1MouseActivate ItemIndex?
Zitat:
|
AW: TListBox ListBox1MouseActivate ItemIndex?
Zitat:
Delphi-Quellcode:
ListBox1.Items[ListBox.ItemIndex]
Sollte das nicht die Lösung sein? |
AW: TListBox ListBox1MouseActivate ItemIndex?
Nein.
Denn während des Activate der Maus (ListBox1MouseActivate-Event) ist ListBox.ItemIndex noch nicht auf das neue, angeklickte Item, gesetzt. Genau das ist das Problem. Mein Ziel erklärt: ich möchte beim Klick auf ein Item erst ein paar Prüfungen durchführen, ob das Item überhaupt den Index bekommen darf. Das funktioniert aktuell in OnClick natürlich super. Nur ab und zu sieht man halt noch, wie das neu angeklickte Item selektiert wird und dann (gewollt) wieder zum alten zurückspringt. |
AW: TListBox ListBox1MouseActivate ItemIndex?
Wie schon oben erwähnt, bietet
![]()
Delphi-Quellcode:
procedure TForm207.ListBox1MouseActivate(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y, HitTest:
Integer; var MouseActivate: TMouseActivate); var idx: Integer; begin idx := ListBox1.ItemAtPos(Point(X, Y), true); if idx >= 0 then begin // mach was mit Item idx end; end; |
AW: TListBox ListBox1MouseActivate ItemIndex?
Hilft leider und komischerweise auch nicht.
Das MouseActivate-Event wird nach meinen Tests noch vor dem Zeichnen des Selected-Rectangles aufgerufen. Wenn eine Bedingung in dem Event Zutrifft, rufe ich Exit auf und setze das neue ItemIndex erst gar nicht. Ich glaube hier müsste ich wohl eher im DrawItem ansetzen und irgendwie das Zeichnen des Selected-Rectangles unterbinden oder? |
AW: TListBox ListBox1MouseActivate ItemIndex?
Zitat:
Zitat:
|
AW: TListBox ListBox1MouseActivate ItemIndex?
Ich habe eine ListBox, wo ich die Items selber Zeichne.
Manchmal sind gewisse Items "deaktiviert". Ich ändere nur das Font zu Grau und Style zu Italic. In einem Boolean-Array halte ich den Index der "deaktivierten" Items fest. Klicke ich nun auf ein Item prüfe ich, ob dieses "aktiviert" oder "deaktiviert" ist (ich gucke einfach nach dem Index im Array nach). Wenn der Array-Index für dieses Item nun False ist, dann soll der ItemIndex der ListBox nicht auf das angeklickte Item gesetzt werden. Ist das der Fall (Item "deaktiviert"), wird also aktuell im OnClick der ItemIndex auf das zuletzt angewählte Item zurückgesetzt. Und genau hier sieht man ab und zu trotzdem, wie das "deaktivierte" Item kurzzeitig "selektiert" wird und die Selektion dann wieder zum alten Item zurückspringt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:15 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz