AGB  ·  Datenschutz  ·  Impressum  







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

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
Seite 1 von 2  1 2   
Kralle

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

XE/: StringList OnChange Ereignis reagiert nicht

  Alt 7. Feb 2015, 12:18
Hallo,

Ich habe auf einem Haupformular ein TPageControl mit mehrern TTabSheet platziert.
Jedem TTabSheet ist ein TFrame zugewiesen.

Jetzt habe ich im Hauptformular eine TStringList definiert und auch eine Ereignisroutine für das OnChange -Ereignis dieser Liste.
In den einzelnen Frames kann ich zwar Zugriffe auf die Liste definieren, aber das OnChange -Ereignis wird nicht aufgelöst.

Das verstehe ich jetzt mal wieder nicht. Wenn ich Daten in die Liste Schreiben kann, warum reagiert dann das OnChange -Ereignis nicht?

Gruß Heiko
OS: Linux Mint 20 Cinnamon (64-Bit), Windows 10 Professional, Delphi XE7 Pro SP1 +(Mobilpack & FireDAC), Lazarus 2.1 (Freepascal 3.3.1),
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: XE/: StringList OnChange Ereignis reagiert nicht

  Alt 7. Feb 2015, 12:24
Du hast aber schon MyStringlist.OnChange := MyStringlistChange; irgendwo stehen?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Kralle

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

AW: XE/: StringList OnChange Ereignis reagiert nicht

  Alt 7. Feb 2015, 13:30
Hallo Sir Rufo,

Du hast aber schon MyStringlist.OnChange := MyStringlistChange; irgendwo stehen?
Nein.
Wo platziere ich das am besten?
Im OnCreate des Hauptformulares ?

Gruß Heiko
OS: Linux Mint 20 Cinnamon (64-Bit), Windows 10 Professional, Delphi XE7 Pro SP1 +(Mobilpack & FireDAC), Lazarus 2.1 (Freepascal 3.3.1),
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
8.178 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: XE/: StringList OnChange Ereignis reagiert nicht

  Alt 7. Feb 2015, 13:31
Am besten dort wo du auch die Stringliste erzeugst.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: XE/: StringList OnChange Ereignis reagiert nicht

  Alt 7. Feb 2015, 13:42
Hallo Sir Rufo,

Du hast aber schon MyStringlist.OnChange := MyStringlistChange; irgendwo stehen?
Nein.
Wo platziere ich das am besten?
Im OnCreate des Hauptformulares ?

Gruß Heiko
Immer daran denken:
  • Wenn man eine Methode schreibt, dann hat man eine Methode geschrieben - PUNKT
  • Wenn diese Methode aufgerufen werden soll, dann muss ich die aufrufen - PUNKT
  • Wenn diese Methode durch einen Event aufgerufen werden soll, dann muss ich dem Event das auch mitteilen, denn riechen kann der nicht und auch nicht in das Programmierer-Hirn schauen (wäre ja nicht schlecht, aber es gibt noch keine API dafür)
Am besten dort wo du auch die Stringliste erzeugst.
Genau da ist ein guter Platz
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Kralle

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

AW: XE/: StringList OnChange Ereignis reagiert nicht

  Alt 7. Feb 2015, 14:00
Hallo Jaenicke,

Am besten dort wo du auch die Stringliste erzeugst.
und da waren sie wieder meine Zwei Problem ....

Ich hatte die Stringliste in einem DatenModul erzeugt, weil nur dann alle Frames auf die StringList zu greifen können.

Wenn ich die die StringList global im Hauptformular erzeuge, dann können die Frames nicht darauf zu greifen.
Da in dem OnChange-Ereignis auf Objekte in einem Frame zugegriffen werden soll, kann ich das OnChange-Ereignis auch nicht in dem DatenModul platzieren.

Knoten im Kopf kriegend .....
Heiko
OS: Linux Mint 20 Cinnamon (64-Bit), Windows 10 Professional, Delphi XE7 Pro SP1 +(Mobilpack & FireDAC), Lazarus 2.1 (Freepascal 3.3.1),
  Mit Zitat antworten Zitat
Kralle

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

AW: XE/: StringList OnChange Ereignis reagiert nicht

  Alt 7. Feb 2015, 14:52
Hallo,

  • Wenn man eine Methode schreibt, dann hat man eine Methode geschrieben - PUNKT
  • Wenn diese Methode aufgerufen werden soll, dann muss ich die aufrufen - PUNKT
  • Wenn diese Methode durch einen Event aufgerufen werden soll, dann muss ich dem Event das auch mitteilen, denn riechen kann der nicht und auch nicht in das Programmierer-Hirn schauen (wäre ja nicht schlecht, aber es gibt noch keine API dafür)
Am besten dort wo du auch die Stringliste erzeugst.
Genau da ist ein guter Platz
Aber, dort kann Sie nicht von den Frames aufgerufen werden und im DatenModul kann Sie auch nicht auf andere Frames zu greifen.
Ich weiß diese Thema hat wir so ähnlich schon mal, aber wenn ich denke, jetzt weiß ich wie es geht kommt so ein Fall wie dieser und es geht nicht.

Gruß Heiko
OS: Linux Mint 20 Cinnamon (64-Bit), Windows 10 Professional, Delphi XE7 Pro SP1 +(Mobilpack & FireDAC), Lazarus 2.1 (Freepascal 3.3.1),
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
8.178 Beiträge
 
Delphi 10.4 Sydney
 
#8

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
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Kralle

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

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: Linux Mint 20 Cinnamon (64-Bit), Windows 10 Professional, Delphi XE7 Pro SP1 +(Mobilpack & FireDAC), Lazarus 2.1 (Freepascal 3.3.1),

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

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

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: Linux Mint 20 Cinnamon (64-Bit), Windows 10 Professional, Delphi XE7 Pro SP1 +(Mobilpack & FireDAC), Lazarus 2.1 (Freepascal 3.3.1),
  Mit Zitat antworten Zitat
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 15:58 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