AGB  ·  Datenschutz  ·  Impressum  







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

Ansprechen dynamisch erzeugter objekte

Ein Thema von Master_BB · begonnen am 11. Jun 2004 · letzter Beitrag vom 12. Jun 2004
Antwort Antwort
Master_BB

Registriert seit: 17. Mai 2003
285 Beiträge
 
Delphi 7 Professional
 
#1

Ansprechen dynamisch erzeugter objekte

  Alt 11. Jun 2004, 16:40
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
  Mit Zitat antworten Zitat
Niko

Registriert seit: 23. Jun 2003
416 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Ansprechen dynamisch erzeugter objekte

  Alt 11. Jun 2004, 16:56
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;
"Electricity is actually made up of extremely tiny particles called electrons, that you cannot see with the naked eye unless you have been drinking." (Dave Barry)
  Mit Zitat antworten Zitat
Master_BB

Registriert seit: 17. Mai 2003
285 Beiträge
 
Delphi 7 Professional
 
#3

Re: Ansprechen dynamisch erzeugter objekte

  Alt 12. Jun 2004, 00:54
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:
var myTabSheet:TTabSheet;

...
 myTabSheet := PageControl1.Page[0] //?
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.
  Mit Zitat antworten Zitat
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#4

Re: Ansprechen dynamisch erzeugter objekte

  Alt 12. Jun 2004, 07:01
Wenn du das aktive Tabsheet herausfinden willst, schau dir mal ActivePage an. Sonst habe ich dich leider nicht richtig verstanden... :saD:
Alexander
  Mit Zitat antworten Zitat
Master_BB

Registriert seit: 17. Mai 2003
285 Beiträge
 
Delphi 7 Professional
 
#5

Re: Ansprechen dynamisch erzeugter objekte

  Alt 12. Jun 2004, 15:47
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.
  Mit Zitat antworten Zitat
Niko

Registriert seit: 23. Jun 2003
416 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Ansprechen dynamisch erzeugter objekte

  Alt 12. Jun 2004, 16:55
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;
"Electricity is actually made up of extremely tiny particles called electrons, that you cannot see with the naked eye unless you have been drinking." (Dave Barry)
  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 08:41 Uhr.
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