AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Wie den Namen einer dynamisch erzeugten Komponente ermitteln
Thema durchsuchen
Ansicht
Themen-Optionen

Wie den Namen einer dynamisch erzeugten Komponente ermitteln

Ein Thema von Glühwürmchen · begonnen am 27. Jul 2005 · letzter Beitrag vom 28. Jul 2005
Antwort Antwort
Benutzerbild von Glühwürmchen
Glühwürmchen

Registriert seit: 31. Okt 2003
Ort: Pfinztal
156 Beiträge
 
Delphi 2010 Professional
 
#1

Wie den Namen einer dynamisch erzeugten Komponente ermitteln

  Alt 27. Jul 2005, 16:27
Folgende Situation:
Ich habe ein Formular auf dem ein Panel liegt. Nun wird zur Laufzeit ein DBGRid erzeugt und auf diesem Panel platziert. Anschließend wird aus einer Auswahl von an die Hundert ClientDataSets eines oder mehrere ausgewählt und mit dem DBGRid verbunden.

Eigentlich benötige ich die Namen dieser ClientDataSets.
Ich glaube mir wäre schon geholfen, wenn ich den Namen des DBGRid's herausfinden könnte.

Hat jemand eine Idee, wie ich das eine oder das andere bewerkstelligen kann?
Gruß Glühwürmchen
<><
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Wie den Namen einer dynamisch erzeugten Komponente ermit

  Alt 27. Jul 2005, 16:39
Hi,

der Name einer Komponente wird im Form-Designer der IDE automatisch vorbelegt - und nur da. Hast du denn bei der dynamischen Erzeugung deiner Komponenten auch einen Namen vergeben? Das ist recht ungewöhnlich. Im Normalfall identifizierst du deine dynamischen Komponenten auf andere Weise.

Ganz allgemein findest du jede Komponente über die Methode FindChildControl(name) oder du suchst rekursiv in der Eigenschaft Controls eines Component-Containers (z.B. deine Form).

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von Glühwürmchen
Glühwürmchen

Registriert seit: 31. Okt 2003
Ort: Pfinztal
156 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Wie den Namen einer dynamisch erzeugten Komponente ermit

  Alt 28. Jul 2005, 14:07
Habe jetzt folgenden Lösungsansatz:

Zunächst mal vorweg:
Ich habe ein Panel mit Namen „pnlList“. Darauf wird zur Laufzeit unter anderem das besagte dbGrid dynamisch platziert.

Ich habe mich dann langsam vorgetastet und festgestellt, daß zur Laufzeit auf „pnlList“ eine Komponente[34] liegt – eine Form – und auf dieser wiederum mein dbGrid. Das dbGrid ist dann Komponente[22].

Nun hat ein dbGrid ja normalerweise die Eigenschaft „DataSource“.
Wenn ich aber versuche auf diese Eigenschaft zuzugreifen meldet bereits der Compiler Bedenken an:

dsIrgendwas := pnlList.Components[34].(Components[22]). DataSource;  [Fehler] Main.pas(1856): E2029 Bezeichner erwartet, aber '(' gefunden

dsIrgendwas := pnlList.Components[34].TDbGrid(Components[22]).DataSource;  [Fehler] Main.pas(1856): E2003 Undefinierter Bezeichner: 'TDbGrid'

dsIrgendwas := pnlList.Components[34].Components[22] as TDBGrid.DataSource;  [Fehler] Main.pas(1856): E2096 Methodenbezeichner erwartet

dsIrgendwas := pnlList.Components[34].(Components[22] as TDBGrid).DataSource;  [Fehler] Main.pas(1856): E2029 Bezeichner erwartet, aber '(' gefunden


Was mache ich denn falsch?
Gruß Glühwürmchen
<><
  Mit Zitat antworten Zitat
Igotcha

Registriert seit: 22. Dez 2003
544 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Wie den Namen einer dynamisch erzeugten Komponente ermit

  Alt 28. Jul 2005, 14:11
Die benötigten Klassen von dynamisch zu erstellenden Komponenten musst Du schon von Hause aus in die uses-Klausel aufnehmen.

Gruß Igotcha
  Mit Zitat antworten Zitat
Benutzerbild von Glühwürmchen
Glühwürmchen

Registriert seit: 31. Okt 2003
Ort: Pfinztal
156 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Wie den Namen einer dynamisch erzeugten Komponente ermit

  Alt 28. Jul 2005, 14:17
Die Klasse DBGrid wird eingebunden.
Gruß Glühwürmchen
<><
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: Wie den Namen einer dynamisch erzeugten Komponente ermit

  Alt 28. Jul 2005, 14:25
Hallo,

wenn das wirklich so ist, dass du ein DGrid auf einer Form platziert hast, und diese Form zur Laufzeit auf das Panel pnlList klebst, dann ist der Zugriff auf die DataSource folgendermaßen:

Delphi-Quellcode:
var
  ds: TDataSource;
  grid: TDBGrid;
  frm: TDeineForm;
begin
  frm := pnlList.Components[34] as TDeineForm;
  grid := frm.Components[22] as TDBGrid;
  ds := grid.DataSource;
end;
marabu
  Mit Zitat antworten Zitat
Benutzerbild von Glühwürmchen
Glühwürmchen

Registriert seit: 31. Okt 2003
Ort: Pfinztal
156 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Wie den Namen einer dynamisch erzeugten Komponente ermit

  Alt 28. Jul 2005, 14:50
Das funzt soweit.
Danke schön.

Jetzt muß ich nur noch sehen, ob mich das weiterbringt....
Gruß Glühwürmchen
<><
  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 00:26 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