Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Unitübergreifend auf Formelemente zugreifen (https://www.delphipraxis.net/58543-unituebergreifend-auf-formelemente-zugreifen.html)

meisteralex 8. Dez 2005 17:07


Unitübergreifend auf Formelemente zugreifen
 
Gute Abend.
Ich hab hier ein Delphi Projekt mit den Units main und functionen
main ist an Form1 gebuden.
Auf Form1, befindet sich ein Memo, welches ich aus der Unit functionen ansprechen möchte
Die Unit functionen wird in die Unit main mit uses functionen eingebunden.
wie kann ich jetzt in der Unit functionen auf formularelemente von Unit Main bzw. Form1 zugreifen
Form1.memo1.text klappt leider nicht.

leddl 8. Dez 2005 17:23

Re: Unitübergreifend auf Formelemente zugreifen
 
Du mußt in functionen auch main einbinden, sonst kann er dort natürlich Form1 auch nicht kennen. Damit das funktioniert, darfst du allerdings nicht main einfach in die Uses-Klausel schreiben, da der Compiler eine Überkreuz-Einbindung nicht erlaubt. Daher mußt du im Implementation-Teil deiner functionen-Unit ein 2. Uses-Statement schreiben und dort deine Unit main einfügen.

Der_Unwissende 9. Dez 2005 08:16

Re: Unitübergreifend auf Formelemente zugreifen
 
Hi,
auch wenn der von leddl beschriebene Weg funktioniert, ist es meiner Ansicht nach keine wirklich schöne Lösung. Es ist zwar (aus mir rätselhaften Gründen) ein überkreuz einbinden in Delphi durch interface und implementation Teil (wie beschrieben) möglich, aber eigentlich wird es generell (zu Recht) verboten.
Du würdest einfach deine Unit functionen nicht mehr ohne main benutzen können (verzichtest unnötig auf Wiedervendbarkeit).

Genauso einfach aber (imho) sauberer ist es, deine Funktion die was mit dem Memo macht einfach als Parameter ein TMemo zu geben. Wenn diese Funktion in main aufgerufen wird, kannst du dort (main kennt Form1) das entsprechende Memo übergeben. Ansonsten kannst du auch mit einer Variable in functionen arbeiten, die das Memo speichert, mit dem später gearbeitet werden soll. Wichtig ist, dass dieses Feld dann auch vor Benutzung gesetzt (<> nil) sein muss.

Gruß Der Unwissende

RavenIV 9. Dez 2005 08:24

Re: Unitübergreifend auf Formelemente zugreifen
 
Zitat:

Zitat von leddl
Du mußt in functionen auch main einbinden, sonst kann er dort natürlich Form1 auch nicht kennen. Damit das funktioniert, darfst du allerdings nicht main einfach in die Uses-Klausel schreiben, da der Compiler eine Überkreuz-Einbindung nicht erlaubt. Daher mußt du im Implementation-Teil deiner functionen-Unit ein 2. Uses-Statement schreiben und dort deine Unit main einfügen.

und dann kannst du mit
Delphi-Quellcode:
main.EineFunktion()
deine Funktion ansprechen.
In main muss EineFunktion dann aber public sein, oder sie muss globaldefiniert sein


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