AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi FindComponent für dynamische Komponente auf dyn. Formular
Thema durchsuchen
Ansicht
Themen-Optionen

FindComponent für dynamische Komponente auf dyn. Formular

Ein Thema von BetaBot · begonnen am 5. Jan 2008 · letzter Beitrag vom 5. Jan 2008
Antwort Antwort
BetaBot

Registriert seit: 6. Mai 2007
35 Beiträge
 
Turbo Delphi für Win32
 
#1

FindComponent für dynamische Komponente auf dyn. Formular

  Alt 5. Jan 2008, 19:56
Hallo Gemeinde,

hier mein 'grausiges' Problem.
Ich habe ein MainForm (Form1). Von dem aus erstelle ich zur Laufzeit Form2. Auf Form2 erstelle ich eine PageControl, auf dieser 5 TabSheets und auf jedem TabSheet ein StringGrid.
Wenn ich jetzt von Form1 aus versuche mit
(Form2.FindComponent('StringGrid' + IntToStr(x))as TStringGrid).Cells[0,0] := 'mein Text'; etwas in diese StringGrids zu schreiben, kommt jedes Mal eine 'Access Violation'. Ich bin frustriert und ratlos.

Hoffe mir kann geholfen werden.

Danke im Voraus.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: FindComponent für dynamische Komponente auf dyn. Formula

  Alt 5. Jan 2008, 20:01
Wer ist Owner der ereugten Komponente?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: FindComponent für dynamische Komponente auf dyn. Formula

  Alt 5. Jan 2008, 20:04
1, Wenn du schon dynamisch Formular und Komponenten erstellst dann nimm bitte vernünftige Namen. TForm1 (bzw. Form1) ist 'ne IDE-Vorgabe und sollte geändert werden. TMainForm oder TFormLoader oder ähnliches ist verständlicher und sagt im Groben aus was das Formular macht.

2, Nimm niemals bei dynamisch erstellten Formularen die von der IDE angelegte globale Variable im interface-Abschnitt. Am besten löscht du diese gleiche damit du nicht in versuchung kommst.

3, Auch für deine dynamisch erstellten Komponenten überleg dir einen besseren "Merkmechanismus" (z.B. Array of TPageControl, ...) um nicht auf die FindComponent-Methode zurückfallen zu müssen

4, Greif nicht Kreuz- & Quer- auf die verschiedenen Fomularelemente von anderen Formularen darauf zu. Definier dir Zugriffsmethoden (z. B. procedure SetGridCell(Index, x, y: Integer; const Text: String);


Dein Fehler wird mit Punkt 2 zusammenhängen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
BetaBot

Registriert seit: 6. Mai 2007
35 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: FindComponent für dynamische Komponente auf dyn. Formula

  Alt 5. Jan 2008, 20:13
Hallo MKinzler,

Owner Form2 ist Keiner (self), Pagecontrol ist Form2, Tabsheet ist Pagecontrol und StringGrid ist Keiner (self).

Mit Owner meinst du doch das hinter Create und nicht parent, oder?

Sorry für meine Laiensprache.
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: FindComponent für dynamische Komponente auf dyn. Formula

  Alt 5. Jan 2008, 20:18
Mit dem owner stellst du genau die Liste in den von Tcomponent (also alle die du verwendest) abgeletet Klassen her, auf die du mittels Findcomponent zugreifst.
Deswegen ist es für Findcomponent, dass du im Constrcutor auch immer den für dich gewünschten Owner angibst. Und "self" ist nicht "kein owner" (das wäre nil) sondern die Komponente in der du dich gerade befindest.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
BetaBot

Registriert seit: 6. Mai 2007
35 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: FindComponent für dynamische Komponente auf dyn. Formula

  Alt 5. Jan 2008, 20:22
Also wenn sollte ich den nun als Owner für Form2, pagecontrol, tabsheet und stringgrid angeben, damit ich mit findcomponent zum Ziel gelange?
Oder kann man das nicht pauschal sagen?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: FindComponent für dynamische Komponente auf dyn. Formula

  Alt 5. Jan 2008, 20:35
Wenn du später Form2 befragst muss es Form2 sein
Markus Kinzler
  Mit Zitat antworten Zitat
5. Jan 2008, 20:37
Dieses Thema wurde von "Dax" von "Neuen Beitrag zur Code-Library hinzufügen" nach "VCL / WinForms / Controls" verschoben.
FF - Falsches Forum
BetaBot

Registriert seit: 6. Mai 2007
35 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: FindComponent für dynamische Komponente auf dyn. Formula

  Alt 5. Jan 2008, 21:07
ES FUNTIONIERT!!

Vielen Dank an MKinzler und alle anderen für eure schnellen Antworten.

Tolles Forum!
  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 21:17 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