AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi XE/: StringList OnChange Ereignis reagiert nicht
Thema durchsuchen
Ansicht
Themen-Optionen

XE/: StringList OnChange Ereignis reagiert nicht

Offene Frage von "Kralle"
Ein Thema von Kralle · begonnen am 7. Feb 2015 · letzter Beitrag vom 9. Feb 2015
Antwort Antwort
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.869 Beiträge
 
Delphi 12 Athens
 
#1

AW: XE/: StringList OnChange Ereignis reagiert nicht

  Alt 8. Feb 2015, 07:49
Ich glaube nach der Schilderung nicht so recht, dass eine TStringList wirklich eine passende Lösung ist. Ich würde eine eigene Klasse erstellen, z.B. auch von TStringList abgeleitet. Die kannst du dann den anderen Objekten (Frames etc.) bei der Erstellung mitgeben (statt dass diese auf ein offenbar globales Datenmodul zugreifen müssen).

Im Setter des Zielobjekts, z.B. deines Frames, registriert sich der Frame dann für das OnChange. Das wiederum kann dann sinnvollerweise besser ein (selbst hinzugefügtes) Multicast-Event sein, an dem sich auch mehrere Listener registrieren können. Dann brauchst du dich nicht auf ein OnChange beschränken und alle können das Ereignis behandeln.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Kralle

Registriert seit: 31. Okt 2004
Ort: Bremerhaven
355 Beiträge
 
Delphi XE7 Professional
 
#2

AW: XE/: StringList OnChange Ereignis reagiert nicht

  Alt 8. Feb 2015, 08:10
Hallo Jaenicke,

Ich glaube nach der Schilderung nicht so recht, dass eine TStringList wirklich eine passende Lösung ist. Ich würde eine eigene Klasse erstellen, z.B. auch von TStringList abgeleitet. Die kannst du dann den anderen Objekten (Frames etc.) bei der Erstellung mitgeben (statt dass diese auf ein offenbar globales Datenmodul zugreifen müssen).

Im Setter des Zielobjekts, z.B. deines Frames, registriert sich der Frame dann für das OnChange. Das wiederum kann dann sinnvollerweise besser ein (selbst hinzugefügtes) Multicast-Event sein, an dem sich auch mehrere Listener registrieren können. Dann brauchst du dich nicht auf ein OnChange beschränken und alle können das Ereignis behandeln.
Deine Lösungsidee ist für mich Ein Böhmisches Dorf.

Sorry, aber das liegt ausserhalb dessen was ich weiß wie man es umsetzt.

Gruß HEiko
OS: Windows 10 Professional, Delphi XE7 Pro SP1 +(Mobilpack & FireDAC)

Geändert von Kralle ( 8. Feb 2015 um 13:44 Uhr)
  Mit Zitat antworten Zitat
Kralle

Registriert seit: 31. Okt 2004
Ort: Bremerhaven
355 Beiträge
 
Delphi XE7 Professional
 
#3

AW: XE/: StringList OnChange Ereignis reagiert nicht

  Alt 8. Feb 2015, 13:44
Moin,

anbei mal eine abgespeckte Version dessen was ich mache mit den Kommentaren was nicht geht bzw. für das ich noch keine Lösung gefunden habe.

Gruß Heiko
Angehängte Dateien
Dateityp: zip Datenaustausch-Test.zip (2,82 MB, 15x aufgerufen)
OS: Windows 10 Professional, Delphi XE7 Pro SP1 +(Mobilpack & FireDAC)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.869 Beiträge
 
Delphi 12 Athens
 
#4

AW: XE/: StringList OnChange Ereignis reagiert nicht

  Alt 8. Feb 2015, 15:28
Ich schaue es mir an sobald ich Zeit habe, bin erst einmal unterwegs.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.869 Beiträge
 
Delphi 12 Athens
 
#5

AW: XE/: StringList OnChange Ereignis reagiert nicht

  Alt 8. Feb 2015, 22:04
Im Anhang mal eine funktionierende Variante.

Ich würde allerdings sehr dazu raten nicht eine einfache Stringliste zu nehmen. Viel einfacher sind echte Properties in der Datenklasse. Da ich nicht wusste was du da für Daten hast, konnte ich das schlecht passend umbauen. Beispiel:
Delphi-Quellcode:
type
  TExampleData = class
  private
    var
      FDisplayText: string;
  public
    property DisplayText: string read FDisplayText write FDisplayText;
  end;

// und dann benutzen:
// statt:
  FData.Strings[3] := 'bla';
// dann besser:
  FData.DisplayText := 'bla';
Auf die Weise hast du nicht irgendwelche Zeilen in einer Liste, sondern direkt die konkreten Bezeichnungen für die Daten...

Zum Speichern und Laden kannst du die Daten dann natürlich in eine TStringList schreiben, wenn du keine bessere Lösung (XML, eigenes Format, ...) benötigst.
Angehängte Dateien
Dateityp: 7z Datenaustausch-Test_new.7z (5,9 KB, 2x aufgerufen)
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Kralle

Registriert seit: 31. Okt 2004
Ort: Bremerhaven
355 Beiträge
 
Delphi XE7 Professional
 
#6

AW: XE/: StringList OnChange Ereignis reagiert nicht

  Alt 9. Feb 2015, 15:22
Hallo Jaenicke,

Im Anhang mal eine funktionierende Variante.
Danke. Da habe ich jetzt die nächsten Tage erstmal was zu lesen, analysieren und zu verstehen.

Gruß
Heiko
OS: Windows 10 Professional, Delphi XE7 Pro SP1 +(Mobilpack & FireDAC)
  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 10:09 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 by Thomas Breitkreuz