![]() |
Ansprechen dynamisch erzeugter objekte
Hi,
ich hab ein Problem und zwar habe ich eine PageControl die automatisch Tabsheets erstellt auf denen sich ListViews befinden. Die namen der Tabsheets und listviews werden aus einer Typisierten Datei geholt in welche der User Datensätze integrieren kann. So die ListViews heißen dann immer so MyListView.Name := ListView+name; nun möchte ich aus einer anderen procedure auf diese ListView zugreifen und zwar mach ich das so n := 'ListView'+name; n.clear; dann sagt er jedcoh zu wenig parameter. woran liegts? oder muß davor noch die pagecontrol? pagecontrol1.pages[i].objekt.clear? und dann noch ne kleine frage FindComponent bei pagecontrol um meine Tabsheets zu finden was gibt das aus? eine indexzahl? um das Tabsheet anzusprechen? Greetz Master_BB |
Re: Ansprechen dynamisch erzeugter objekte
FindComponent gibt einen Zeiger auf das Objekt mit dem angegbenen Namen zurück oder nil, falls es kein solches gibt.
Entsprechend müsste auch dein Zugriff auf die ListView in etwa so aussehen:
Delphi-Quellcode:
var lst: TListView;
//... lst := MeinTabsheet.FindComponent('ListView' + name); if lst <> nil then lst.clear; |
Re: Ansprechen dynamisch erzeugter objekte
hey Niko thx,
jedoch klappts noch nicht weil MeinTabsheet ja auch dynamisch erstellt ist. Ich wollte dein beispiel darauf umwälzen jedoch fehlt noch nen kleines stück.
Delphi-Quellcode:
das prob ist ich weiß ja nicht welche page es ist, und findcomponent oder so gibts da nicht, soweit wie diese komische funktions vorrausschau nach dem . es immer anzeigt.
var myTabSheet:TTabSheet;
... myTabSheet := PageControl1.Page[0] //? |
Re: Ansprechen dynamisch erzeugter objekte
Wenn du das aktive Tabsheet herausfinden willst, schau dir mal ActivePage an. Sonst habe ich dich leider nicht richtig verstanden... :saD:
|
Re: Ansprechen dynamisch erzeugter objekte
ja die page der pagecontrol ist nohc nicht aktiv.
ok nochmal ganz ausführlich 1 Typisierte Datei mit folgenden Datensätzen - Filme - Sichtbar True - Trailer - Sichtbar False - Serien - Sichtbar True (extra boolische variablen des Records) Eine zählschleife erstellt nun von Sichtbar True TabSheets auf der Pagecontrol mit dem namen Filme udn Serien. Darauf werden ListViews erstellt mit dem namen "ListViewFilme" und "ListViewSerien". und jetzt möchte ihc ListViewFilme.clear und noch weiteres machen. mit Nikos lösung kann man auf die listview zugreifen wenn man in einer variable das tabsheet hat. listview und tabsheet sind beide dynamisch erstellt und ich kann nicht auf die Listview zugreifen da lst := MeinTabsheet.FindComponent('ListView' + name); if lst <> nil then lst.clear; MeinTabsheet ist noch nicht definiert. wie kann ich das tun? erstellt wurden die tabsheets in einer anderen procedure und das soll auch so bleiben. |
Re: Ansprechen dynamisch erzeugter objekte
Ich habs gerade noch mal ausprobiert.
FindComponent findet nicht nur die direkt, sondern alle irgendwie untergeordneten Objekte. Damit kannst du einfach schreiben:
Delphi-Quellcode:
var lst: TListView;
//... lst := MeinForm.FindComponent('ListView' + name) as TListView; if lst <> nil then lst.clear; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:28 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