Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Kein direkter Zugriff auf Framekomponenten? (https://www.delphipraxis.net/88487-kein-direkter-zugriff-auf-framekomponenten.html)

Salomon 16. Mär 2007 07:58


Kein direkter Zugriff auf Framekomponenten?
 
Moin zusammen,
warum kann ich nicht direkt von einem Frame auf die Komponenten eines anderen Frames zugreifen?

Beispiel:

Form1 - Unit 1
Frame2 - unit 2
Frame3 - Unit 3

z.b. geht in Unit2 nicht folgendes:
Delphi-Quellcode:
Frame3.label1.caption := 'bla';
Ich muss dann immer den "Umweg" über die Form wo der Frame drauf angezeigt wird nehmen. z.B.
Delphi-Quellcode:
Form1.Frame3.label1.caption := 'bla';
Warum ist das so?

Thanx
Marcus

sirius 16. Mär 2007 08:02

Re: Kein direkter Zugriff auf Framekomponenten?
 
Weil in der Unit 3 nur die Klasse implementiert wird. Die Unit hat aber keine Variable/Zeiger auf diese Klasse. Diesen bekommt erst das Formular indem du das Frame einbindest. du kannst es ja auch mehrmals einbinden, in verschiedene Formulare mit verschiedenen Eigenschaften.

Bernhard Geyer 16. Mär 2007 08:03

Re: Kein direkter Zugriff auf Framekomponenten?
 
Stell dir vor du hast Frame3 auf 2 verschiedenen Formularen liegen (was ja möglich ist und auch ein Grund für die Einführung von Frames war)? Welcher Instanz von Frame3 soll den nun verwendet werden?

Grundsätzlich scheind es das du einige Grundkonzepte von Objektorientierung noch nicht verstanden hast.
Der Zugriff auf Form1. ... funktioniert auch nur wenn Form1 per automatische Formularerstellung erstellt wurde. Ansonsten kracht es.

Salomon 16. Mär 2007 08:57

Re: Kein direkter Zugriff auf Framekomponenten?
 
@Bernhard Geyer: Was Objektorientierte Programmierung ist, ist mir von den Grundlagen her klar. In der Praxis fehlt mir da noch die Übung. Jetzt ist die Sache aber schon klarer. Der Frame wird ja in der Klassendefinition der Form1 eingebunden.

Danke euch beiden!

yörsch 16. Mär 2007 09:34

Re: Kein direkter Zugriff auf Framekomponenten?
 
Es ist wohl der unterschied zwischen Klasse und Instanz auf den es hier an kommt!
Ob da visuelle komponenten beteiligt sind, ist völlig egal...

Bernhard Geyer 16. Mär 2007 09:39

Re: Kein direkter Zugriff auf Framekomponenten?
 
Zitat:

Zitat von Salomon
In der Praxis fehlt mir da noch die Übung. Jetzt ist die Sache aber schon klarer. Der Frame wird ja in der Klassendefinition der Form1 eingebunden.

Das Problem das viele haben ist auch das Delphi hier viel abnimmt und im Hintergrund erledigt. Einer dieser Erleichterungen ist die automatische Erstellung von Formularen mit versorgung der FormXXX-Variable. Es ist nicht gerade selten das diese globalen Variablen kreuz und quer im Projekt verwendet werden und bei umstellung auf einem etwas dynamischeren Programmaufbau (erstellung Formulare nur bei bedarf oder mehrere Instanzen) kracht es an Tausend stellen.

Salomon 16. Mär 2007 10:39

Re: Kein direkter Zugriff auf Framekomponenten?
 
@Bernhard Geyer: Das stimmt. Bei meheren Forms funktioniert das automatisch. Aber nur weil Delphi hier vorarbeit leistet.

@yörsch: Ich muss ja auf die eine Instanz des Frames zugreifen, die im Beispiel die Form1 erzeugt hat, da auf ihr die visuelle Frame Komponente liegt. Irgendwie habe ich gar nicht daran gedacht das ich ja mehrere Instanzen des Frames erzeugen kann, da ich den Frame nur auf einer Form verwende...


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:19 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