![]() |
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 |
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ß |
Re: Zugriff auf dyn. generiertes Frame im aktiven TabSheet
Hi,
Du könntest über FindComponent() das Edit Control suchen. |
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 :) |
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)
|
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 :( |
Re: Zugriff auf dyn. generiertes Frame im aktiven TabSheet
Okay, jetzt wirds kriminell:
Delphi-Quellcode:
das showmessage gibt mir eine Exception (EAccessViolation) - warum das jetzt? Die Variable existiert innerhalb des Frames und da steckt auch was drin .. ??
var
tmp_Frame: TMYFRAME; begin tmp_Frame := TMYFRAME(FindComponent('Frame' + inttostr(PageControl1.ActivePage.Tag))); showmessage(tmp_Frame.Framevariable); |
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? |
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 :( |
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