Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi XE/: StringList OnChange Ereignis reagiert nicht (https://www.delphipraxis.net/183827-xe-stringlist-onchange-ereignis-reagiert-nicht.html)

Kralle 7. Feb 2015 11:18

XE/: StringList OnChange Ereignis reagiert nicht
 
Hallo,

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

Jetzt habe ich im Hauptformular eine
Delphi-Quellcode:
TStringList
definiert und auch eine Ereignisroutine für das
Delphi-Quellcode:
OnChange
-Ereignis dieser Liste.
In den einzelnen
Delphi-Quellcode:
Frames
kann ich zwar Zugriffe auf die Liste definieren, aber das
Delphi-Quellcode:
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
Delphi-Quellcode:
OnChange
-Ereignis nicht?

Gruß Heiko

Sir Rufo 7. Feb 2015 11:24

AW: XE/: StringList OnChange Ereignis reagiert nicht
 
Du hast aber schon
Delphi-Quellcode:
MyStringlist.OnChange := MyStringlistChange;
irgendwo stehen?

Kralle 7. Feb 2015 12:30

AW: XE/: StringList OnChange Ereignis reagiert nicht
 
Hallo Sir Rufo,

Zitat:

Zitat von Sir Rufo (Beitrag 1289115)
Du hast aber schon
Delphi-Quellcode:
MyStringlist.OnChange := MyStringlistChange;
irgendwo stehen?

Nein.
Wo platziere ich das am besten?
Im
Delphi-Quellcode:
OnCreate
des Hauptformulares ?

Gruß Heiko

jaenicke 7. Feb 2015 12:31

AW: XE/: StringList OnChange Ereignis reagiert nicht
 
Am besten dort wo du auch die Stringliste erzeugst. ;-)

Sir Rufo 7. Feb 2015 12:42

AW: XE/: StringList OnChange Ereignis reagiert nicht
 
Zitat:

Zitat von Kralle (Beitrag 1289120)
Hallo Sir Rufo,

Zitat:

Zitat von Sir Rufo (Beitrag 1289115)
Du hast aber schon
Delphi-Quellcode:
MyStringlist.OnChange := MyStringlistChange;
irgendwo stehen?

Nein.
Wo platziere ich das am besten?
Im
Delphi-Quellcode:
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)
Zitat:

Zitat von jaenicke (Beitrag 1289121)
Am besten dort wo du auch die Stringliste erzeugst. ;-)

Genau da ist ein guter Platz :thumb:

Kralle 7. Feb 2015 13:00

AW: XE/: StringList OnChange Ereignis reagiert nicht
 
Hallo Jaenicke,

Zitat:

Zitat von jaenicke (Beitrag 1289121)
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

Kralle 7. Feb 2015 13:52

AW: XE/: StringList OnChange Ereignis reagiert nicht
 
Hallo,

Zitat:

Zitat von Sir Rufo (Beitrag 1289125)
  • 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)
Zitat:

Zitat von jaenicke (Beitrag 1289121)
Am besten dort wo du auch die Stringliste erzeugst. ;-)

Genau da ist ein guter Platz :thumb:

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

jaenicke 8. Feb 2015 06:49

AW: XE/: StringList OnChange Ereignis reagiert nicht
 
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.

Kralle 8. Feb 2015 07:10

AW: XE/: StringList OnChange Ereignis reagiert nicht
 
Hallo Jaenicke,

Zitat:

Zitat von jaenicke (Beitrag 1289192)
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

Kralle 8. Feb 2015 12:44

AW: XE/: StringList OnChange Ereignis reagiert nicht
 
Liste der Anhänge anzeigen (Anzahl: 1)
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


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:48 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz