AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ListBox - "OnChange" gesucht

Ein Thema von NicoleWagner · begonnen am 16. Jun 2020 · letzter Beitrag vom 17. Jun 2020
Antwort Antwort
NicoleWagner

Registriert seit: 6. Jul 2010
167 Beiträge
 
Delphi XE3 Professional
 
#1

AW: ListBox - "OnChange" gesucht

  Alt 16. Jun 2020, 15:38
Danke für die Idee. Das wäre ein dorniger Weg, weil es viele Methoden sind. Trotzdem ein gangbarer, wenn es keinen anderne Weg gäbe. Ich müsste in jede einzelne Methode diese Zeile einfügen.
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.739 Beiträge
 
Delphi 6 Enterprise
 
#2

AW: ListBox - "OnChange" gesucht

  Alt 16. Jun 2020, 15:51
Setzt du zufällig auch TActionList ein?
Ralph
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: ListBox - "OnChange" gesucht

  Alt 16. Jun 2020, 16:36
Danke für die Idee. Das wäre ein dorniger Weg, weil es viele Methoden sind. Trotzdem ein gangbarer, wenn es keinen anderne Weg gäbe. Ich müsste in jede einzelne Methode diese Zeile einfügen.
Eigentlich sollte es für das Befüllen der ListBox nur eine zentrale Methode geben die von allen anderen Methoden aufgerufen wird. Demzufolge müsstest du dann nur an einer Stelle das Label oder den Button oder was auch immer aktualisieren.

Ohne deinen genauen Code jetzt zu kennen ist es natürlich schwierig Tipps zu geben. Aber für mich hört sich das ein bisschen danach an, als ob ein Refactoring nicht schaden könnte.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.360 Beiträge
 
Delphi 12 Athens
 
#4

AW: ListBox - "OnChange" gesucht

  Alt 16. Jun 2020, 17:21
Die ListBox selber bietet keine direkten Notification hierfür, drum hat die TListBox auch kein Event.
https://docs.microsoft.com/en-us/win...-notifications

Wenn/da die ListBox ausschließlich vom eigenen Programm (Delphi) geändert wird, könntest du dich in ListBox.Items reinhängen, was ein TStrings-Nachfahre ist (quasi eine TStringList).
Bei einer ComboBox ist diese Instanz schön gekapselt und lässt sich über eine überschreibbare GetItemsClass leicht austauschen,
aber bei der ListBox ist das leider echt bescheiden implementiert und es wird nicht leicht den Constructor und darin das TListBoxStrings.Create zu ersetzen, um dort die Methoden Insert und Delete zu überschreiben und das neue Event auszulösen.


Bliebe also noch auf Messages zu lauschen.
CB_ADDSTRING und WM_DELETEITEM, wobei Bearbeiten/Ändern über Delete+Insert behandelt wird, also nur Add und Delete zu beachten sind.

Da diese Messages aber über SendMessage laufen, hilft TApplicationEvents.OnMessage nicht, da dort nur PostMessage ankommt und auch nur, wenn es über die MainLoop der VCL eintrudelt. (ist grade eine andere Message-Behandlung aktiv, wie z.B. im MSDN-Library durchsuchenMessageBox, dann geht OnMessage garnicht)
Somit läuft es hier wohl eher auf einen MessageHook hinaus.


Oder eben sich das Event selbst zu implementieren, bei seiner (einen) eigenen ListBox-Befüll-Prozedur.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (16. Jun 2020 um 18:00 Uhr)
  Mit Zitat antworten Zitat
NicoleWagner

Registriert seit: 6. Jul 2010
167 Beiträge
 
Delphi XE3 Professional
 
#5

AW: ListBox - "OnChange" gesucht

  Alt 16. Jun 2020, 20:02
@himitsu: Danke für die Idee und auch die Links, die mich wieder etwas gelehrt haben, wie dieses Ding mit den bunten Bildern (PC) funktioniert.

Danke auch allen anderen für die Antworten.
Nein, es gibt keine Action List.

Sondern da ist ua. eine Edit-Zeile, die es mir erlaubt, Zeilen "reinzuholen" und "auszutauschen" und "löschen".... Das alles mit Icons. Als ich genau hinsah, waren es nur drei Click-Events die die Box auch veränderten. Was hin- und herkopiert wird, verändert den Listbox-Inhalt nicht.
In die drei Methoden habe ich jetzt die Zeile für die neue Caption hineingeschrieben. Ist ganz nett geworden. Ich sehe sofort, ob ich ungesicherte Inhalte habe oder nicht.
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: ListBox - "OnChange" gesucht

  Alt 17. Jun 2020, 07:20
Lagere doch wie von mir vorgeschlagen die Procedure zum Hinzufügen der Items in eine neue Procedure aus. In dieser Procedure setzt du das Label.
In den Klick Events löschst du den Code der mit der neuen Procedure identisch ist und rufst diese stattdessen auf. Zukünftig brauchst du dann immer nur noch an einer Stelle etwas zu ändern.
Die Procedure braucht dann am Parameter eine Ziel-ListBox und den Text der zur Anzeige benutzt werden soll.

Erweiterungsmöglichkeit (wird noch nicht benötigt):
Später kannst du diese Procedure dann ganz leicht überladen damit du an das ListBox Item auch noch ein Objekt mit anhängen kannst.

Stichwort: DRY (Don't Repeat Yourself)
  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 06:24 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