![]() |
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. |
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.
|
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 |
Re: Unitübergreifend auf Formelemente zugreifen
Zitat:
Delphi-Quellcode:
deine Funktion ansprechen.
main.EineFunktion()
In main muss EineFunktion dann aber public sein, oder sie muss globaldefiniert sein |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz