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 Zugriff auf dyn. generiertes Frame im aktiven TabSheet (https://www.delphipraxis.net/21968-zugriff-auf-dyn-generiertes-frame-im-aktiven-tabsheet.html)

Schnitzel 10. Mai 2004 20:51


Zugriff auf dyn. generiertes Frame im aktiven TabSheet
 
Hi und guten Abend <slang>alle mitternand</slang> :)

ich hab ein kleines Problem - ein logik-Problem...

Ich habe ein PageControl in dem ich zur Laufzeit dynamisch TabSheets generieren kann. In diese TabSheets erstelle ich dann dynamisch generierte Frames. In diesen Frames steckt ein Edit-Feld, auf das ich zugreifen möchte...
Nochmal langsam: Ich starte mein Programm.(alles etwas vereinfacht dargestellt ;)) Ich klicke auf "TabSheet erstellen" und create ein TabSheet. Gleichzeitig create (wenn das mal nicht im Duden steht ;)) ich ein Frame und pappe es in das TabSheet.
Jetzt möchte ich in der Hauptapplikation auf einen Button klicken und das Edit-Feld in dem Frame, dass im aktuell angezeigeten TabSheet steckt, ändern.

*puh* Ich hoffe, ihr versteht, was ich meine - vielleicht stehe ich etwas auf dem Schlauch, aber ich wüsste jetzt echt nicht, wie ich das anstelle (ich habe eben fast eine halbe Stunde auf dem Klo darüber nachgedacht, aber .. nix :gruebel: )

Vielen Dank schonmal und noch einen schönen Abend!

Viele Grüße

Schnitzel 16. Mai 2004 19:47

Re: Zugriff auf dyn. generiertes Frame im aktiven TabSheet
 
Okay, ich denke ich kann das irgendwie mit Tags regeln...
Ich kann ja beim Createn dem TabSheet ein Tag geben und das Frame dadrinne so nennen - dann müsste es gehen, aber:

Wenn ich jedesmal ein neues Frame create "frame1, frame2, frame3. .." dann sind irgendwann mal die Zahlen zu Ende - das ist ein Problem.
Wie könnte ich das verhindern? (irgendwie dem Programm mittendrin beibringen, welche Zahlen es neu verwenden kann?)

Gruß

toms 16. Mai 2004 19:49

Re: Zugriff auf dyn. generiertes Frame im aktiven TabSheet
 
Hi,

Du könntest über FindComponent() das Edit Control suchen.

Schnitzel 16. Mai 2004 19:55

Re: Zugriff auf dyn. generiertes Frame im aktiven TabSheet
 
Ja, das hatte ich ja vor, nur irgendwann mal bin ich bei Frame9999999... (ist jetzt ne Fiktive Zahl ;)) angekommen und was dann?
Dann muss ich mich im Schrank verstecken :)

toms 16. Mai 2004 19:57

Re: Zugriff auf dyn. generiertes Frame im aktiven TabSheet
 
Nehmen wir mal ruhig an, dass gar nicht so viele Frames erzeugt werden können. (wegen den Windows Ressourcen)

Schnitzel 16. Mai 2004 20:14

Re: Zugriff auf dyn. generiertes Frame im aktiven TabSheet
 
Das Problem ist aber, dass im Laufe des "Programmlebens" die Frames natürlich auch wieder Terminiert werden und neue generiert werden. -Also ein ewiges generieren, Terminieren usw...
Da das aber unkontolliert (also vom User abhängig) passiert, ist das blöd :(

Schnitzel 16. Mai 2004 21:11

Re: Zugriff auf dyn. generiertes Frame im aktiven TabSheet
 
Okay, jetzt wirds kriminell:

Delphi-Quellcode:
var
tmp_Frame: TMYFRAME;
begin
tmp_Frame := TMYFRAME(FindComponent('Frame' + inttostr(PageControl1.ActivePage.Tag)));
showmessage(tmp_Frame.Framevariable);
das showmessage gibt mir eine Exception (EAccessViolation) - warum das jetzt? Die Variable existiert innerhalb des Frames und da steckt auch was drin .. ??

Schnitzel 16. Mai 2004 22:38

Re: Zugriff auf dyn. generiertes Frame im aktiven TabSheet
 
Okay, ich habs jetzt - FindComponent funktioniert nicht
Ich suche nach "Frame1" und es gibt ein "Frame1" nur tmp_Frame ist nach FindComponent = nil - versteh einer das...

EDIT: Was mich auch etwas stutzig macht ist die Tatsache, dass ich zur Laufzeit soviele Frames mit dem Namen "Frame1" createn kann, wie ich will - macht Delphi gar nix aus - ist das normal?

Schnitzel 16. Mai 2004 23:28

Re: Zugriff auf dyn. generiertes Frame im aktiven TabSheet
 
Juhu - teilweise geht's jetzt:
ich muss Frame.create(Application) machen, damit das Frame am Application hängt. Nur so kann ich mit Application.FindComponent das Frame finden :)

Danke schonmal - manchmal muss man sich einfach nur mal irgendwo ausheulen :)

PS Das Problem mit den Zahlen die irgendwann zu hoch werden, hab ich allerdings immernoch :(

dh-clfs 3. Nov 2006 17:46

Re: Zugriff auf dyn. generiertes Frame im aktiven TabSheet
 
Hallo erstmal,

ich glaube, dass es hier am besten zu passt. Ich habe vor zur Laufzeit in einem PageControl x Tabsheets zu erzeugen die als Inhalt auf die gleiche Frame-Klasse zugreifen sollen.
Die Erstellung der Tabsheets funktioniert soweit, jedoch erhalte ich eine Fehlermeldung beim Erstellen des Frames.

FM" Das objekt kann nicht erzeugt werden, da bereits der Name verwendet wird".

Danke für die Hilfe im voraus.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:31 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 by Thomas Breitkreuz