AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein TListBox ListBox1MouseActivate ItemIndex?

TListBox ListBox1MouseActivate ItemIndex?

Ein Thema von Glados · begonnen am 20. Aug 2017 · letzter Beitrag vom 21. Aug 2017
Antwort Antwort
Seite 1 von 2  1 2   
Glados
(Gast)

n/a Beiträge
 
#1

TListBox ListBox1MouseActivate ItemIndex?

  Alt 20. Aug 2017, 21:59
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?
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
8.931 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: TListBox ListBox1MouseActivate ItemIndex?

  Alt 20. Aug 2017, 22:43
Eventuell kannst mit den X,Y-Werten und ItemAtPos was erreichen. Ich weiß nur gerade nicht, ob X,Y relativ zu Client oder Screen sind.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.504 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: TListBox ListBox1MouseActivate ItemIndex?

  Alt 20. Aug 2017, 22:46
Hift der Link hier?
Hier
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#4

AW: TListBox ListBox1MouseActivate ItemIndex?

  Alt 20. Aug 2017, 22:49
Hift der Link hier?
Hier
Ich kann ehrlich gesagt keinen Zusammenhang zwischen meinem Problem und diesem Thread finden.
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.504 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: TListBox ListBox1MouseActivate ItemIndex?

  Alt 20. Aug 2017, 22:53
Hift der Link hier?
Hier
Ich kann ehrlich gesagt keinen Zusammenhang zwischen meinem Problem und diesem Thread finden.
Dort steht unter anderem:

ListBox1.Items[ListBox.ItemIndex]
Sollte das nicht die Lösung sein?
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#6

AW: TListBox ListBox1MouseActivate ItemIndex?

  Alt 20. Aug 2017, 22:55
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.

Geändert von Glados (20. Aug 2017 um 22:59 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
8.931 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: TListBox ListBox1MouseActivate ItemIndex?

  Alt 21. Aug 2017, 09:42
Wie schon oben erwähnt, bietet ItemAtPos hier eine einfache Möglichkeit:

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;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#8

AW: TListBox ListBox1MouseActivate ItemIndex?

  Alt 21. Aug 2017, 16:41
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?
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
8.931 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: TListBox ListBox1MouseActivate ItemIndex?

  Alt 21. Aug 2017, 16:56
Hilft leider und komischerweise auch nicht.
Was hilft nicht? Liefert der Code nicht den Index des angeklickten Items?

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?
Hier kann ich dir leider nicht mehr folgen. Kannst du mal im Detail erklären, was du vorhast?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#10

AW: TListBox ListBox1MouseActivate ItemIndex?

  Alt 21. Aug 2017, 17:08
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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf