AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Unitübergreifend auf Formelemente zugreifen

Ein Thema von meisteralex · begonnen am 8. Dez 2005 · letzter Beitrag vom 9. Dez 2005
Antwort Antwort
meisteralex

Registriert seit: 22. Nov 2005
173 Beiträge
 
#1

Unitübergreifend auf Formelemente zugreifen

  Alt 8. Dez 2005, 18:07
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.
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Unitübergreifend auf Formelemente zugreifen

  Alt 8. Dez 2005, 18:23
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.
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#3

Re: Unitübergreifend auf Formelemente zugreifen

  Alt 9. Dez 2005, 09:16
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
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Unitübergreifend auf Formelemente zugreifen

  Alt 9. Dez 2005, 09:24
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 mitmain.EineFunktion() deine Funktion ansprechen.
In main muss EineFunktion dann aber public sein, oder sie muss globaldefiniert sein
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  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 01:21 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