![]() |
TGestureManager, mehrere Formulare damit verknüpft, Exception beim Start
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich würde gerne in meinem Programm 1x TGestureManager an zentraler Stelle verwenden und alle Formulare sind mit diesem verknüpft. Ich hab ein Beispiel angehangen um ganz einfach darzustellen was ich machen möchte. Gegeben ist ein Hauptformular (Unit1), welches dynamisch andere Formulare erzeugt und deswegen die anderen Unit-Namen im Interface-uses Teil stehen. Unit2 ist nur ein Containerformular, wo mein GestureManager liegt. Unit2 macht sonst gar nichts. Formular 3 wird von Formular 1 zur Laufzeit erstellt und hat den GestureManager aus Unit2 verknüpft. Formular2 wird immer VOR dem erstellen des Formulars3 erstellt und somit sollte Formular3 auch auf den GestureManager aus Formular2 zugreifen können. Ich hoffe ihr könnt erstmal nachvollziehen was ich machen möchte. Bitte nicht über Sinn und Zweck diskutieren, da mein konkreter Anwendungsfall viel komplexer ist aber ich es auf dieses Minimum runter gebrochen habe. Das Problem ist, dass ich in Formular 3 den GestureManager aus Formular 2 im Objektinspektor verknüpfen kann (da die Unit2 im Interface-Abschnitt der Unit3 steht) aber sobald ich den Button1 klicke und NUR das versteckte Formular mit dem GestureManager erstellen möchte, kommt schon eine Exception. Habt ihr eine Idee warum oder brauche ich wirklich für jedes Formular ein eigenen GestureManager? Das wollte ich eigentlich nicht und war der ganze Hintergedanke bei der Sache. --------------------------- Benachrichtigung über Debugger-Exception --------------------------- Im Projekt Project1.exe ist eine Exception der Klasse EListError mit der Meldung 'Eintrag nicht gefunden' aufgetreten. --------------------------- Anhalten Fortsetzen Hilfe --------------------------- Wie würdet ihr das lösen? PS: Selbst wenn man alles mit Unit3/Formular3 entfernt aus Unit1, wird die Exception geworfen beim Klick auf Button1. Das heißt das dynamische Erzeugen eines Formulars mit einem GestureManager geht gar nicht... |
AW: TGestureManager, mehrere Formulare damit verknüpft, Exception beim Start
Ich habe auch schon die Erfahrung gemacht, daß pro Form ein separater GestureManager benötigt wird. Den Grund kenne ich auch nicht wirklich.
Weiterhin scheint es manchmal zu Exceptions zu kommen, wenn man bei laufendem Programm die Bildschirmauflösung ändert. So richtig reproduzierbar habe ich das aber auch noch nicht hinbekommen. |
AW: TGestureManager, mehrere Formulare damit verknüpft, Exception beim Start
Also wenn man wirklich pro Formular ein GestureManager braucht, wäre das doch mehr als blöd oder?
Und das bei einer Entwicklungsumgebung die so viel Wert auf mobile Entwicklung legt. Wenn ich 50 Formulare habe die alle auf links und rechts Wischen reagieren sollen, will ich das doch an einer zentralen Stelle festlegen und nicht 50 mal... :evil: |
AW: TGestureManager, mehrere Formulare damit verknüpft, Exception beim Start
Ohje, es scheint wirklich so zu sein...
Auszug aus der Hilfe: Verwenden von Gesten in AnwendungenAus RAD Studio Nach oben zu So erstellen Sie eine Anwendung mit Gesten-Komponenten 3. Sie müssen jeder Komponente, die Gesten verarbeiten soll, einen Gestenmanager zuweisen: Quelle: Verwenden_von_Gesten_in_Anwendungen.htm Sorry aber das ist doch sehr unkomfortabel oder? |
AW: TGestureManager, mehrere Formulare damit verknüpft, Exception beim Start
Du köntest dir einen GestenManager ableiten, der z.B. auf Application.MainForm nach einem "globalen" GestenManager sucht und sich beim Laden der Form/DFM, bzw. beim manuellen Create, von dort die globalen Gesten besorgt/kopiert.
|
AW: TGestureManager, mehrere Formulare damit verknüpft, Exception beim Start
Zitat:
Ich habe das so gelöst, daß ich ein zentrales Form mit einem GestureManager habe, von dem dann alle anderen Forms abgeleitet sind. Dort kann man auch die gemeinsamen Gesten bereits verdrahten. Formvererbung ist ja auch in anderen Fällen genau dafür gedacht, um gemeinsamen Verhalten bzw. Aussehen von Forms zu zentralisieren. Die einzelnen Gesten und Aktionen werden für jedes Control separat im GestureManager gespeichert und somit auch von dem in die DFM gestreamt. Beim Lesen aus der DFM kommt dann ein Fehler, wenn die Controls nicht gefunden werden. Deswegen müssen die Controls existieren bevor das Streaming aus der DFM losgehen kann. Das geht natürlich nicht, wenn der GestureManager z.B. auf einem Datenmodul liegt, das vor allen anderen Forms erzeugt wird. |
AW: TGestureManager, mehrere Formulare damit verknüpft, Exception beim Start
Zitat:
|
AW: TGestureManager, mehrere Formulare damit verknüpft, Exception beim Start
Zitat:
Zitat:
Oder einmal einen GestureManager enstellen und dann per Copy&Paste auf jede andere Form drauf. (hoffen alles wird mitgenommen und bei Änderungen überall neu draufkopieren) |
AW: TGestureManager, mehrere Formulare damit verknüpft, Exception beim Start
Ok danke für eure Hinweise.
Also den GestureManager von Formular zu Formular kopieren geht natürlich aber ich muss in jedem Formular im Objektinspektor unter Touch den GestureManager verknüpfen und auch die Gestures definieren (z.B. Links nach Rechts sowie Rechts nach Links). Leider also nicht nur Copy&Paste. Ich habe auch festgestellt, dass auf einem PageControl mit mehreren Tabs und relativ vielen Komponenten auf jedem Tab, ein hinzugefügter GestureManager dazu führt, dass das "Show" des Fenster (mit dem PageControl) sehr viel länger dauert, wie das gleiche Formular nur ohne den GestureManager. Wahrscheinlich aufgrund des Streamens der Komponenten oder? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:57 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