AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein TListBox ListBox1MouseActivate ItemIndex?
Thema durchsuchen
Ansicht
Themen-Optionen

TListBox ListBox1MouseActivate ItemIndex?

Ein Thema von Glados · begonnen am 20. Aug 2017 · letzter Beitrag vom 21. Aug 2017
Antwort Antwort
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.643 Beiträge
 
Delphi 12 Athens
 
#1

AW: TListBox ListBox1MouseActivate ItemIndex?

  Alt 21. Aug 2017, 15: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
 
#2

AW: TListBox ListBox1MouseActivate ItemIndex?

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

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.643 Beiträge
 
Delphi 12 Athens
 
#3

AW: TListBox ListBox1MouseActivate ItemIndex?

  Alt 21. Aug 2017, 16:49
Wenn der Array-Index für dieses Item nun False ist, dann soll der ItemIndex der ListBox nicht auf das angeklickte Item gesetzt werden.
Hier ein Beispiel, bei dem alle ungeraden Zeilen nicht angewählt werden können:

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 Odd(idx) then begin
    MouseActivate := maNoActivateAndEat;
  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
 
#4

AW: TListBox ListBox1MouseActivate ItemIndex?

  Alt 21. Aug 2017, 17:05
maNoActivaeAndEat Das hat geholfen!

Ich habe es nun so umgesetzt:
ListBox-OnMouseActive wird bei Mausklick als erstes ausgelöst. Dort prüfe ich, ob das angeklickte Item selektiert werden kann. Wenn nicht, wird maNoActivaeAndEat gesetzt.
Darf das Item selektiert werden (maNoActivaeAndEat nicht gesetzt), wird automatisch in ListBox-OnClick gesprungen. Sonst nicht. Funktioniert einwandfrei danke.
  Mit Zitat antworten Zitat
Antwort Antwort


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 17:17 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