Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi eigene VCL-Komponente. soll Datenstruktur mit liefern ?? (https://www.delphipraxis.net/128478-eigene-vcl-komponente-soll-datenstruktur-mit-liefern.html)

EccoBravo 30. Jan 2009 14:31


eigene VCL-Komponente. soll Datenstruktur mit liefern ??
 
Hallo,

dieses ist eine etwas verworrene Frage, aber ich weiss hier nicht weiter:

Stellt Euch vor,
ein Hauptformular-Unit wird durch eine andere Unit bedient.

Nebenbei habe ich mir eine VCL-Komponente geschrieben, die mir gleichzeitig die Datenstruktur (Typen Classes, Objects) für mein Programm (für Hauptformular-Unit und bedienendes Unit gleichfalls) zur Verfügung stellt.

Ganz prima, ich kann aus der bedienenden Unit die Datenstruktur der VCL-Komponente über deren Properties mitbenutzen und sozusagen diese Komponente mit Dateninhalten versorgen.

Das Verlockende war, daß meine Datenstruktur (Typen Classes, Objects) der VCL-Komoponente mit der im Programm nötigen Datenstruktur übereinstimmen, und ich somit die nochmaligen Deklarationen spare.

Nun aber das Problem
wenn ich diese VCL-Komponente aus der Toolpatelle in mein Hauptformular-Unit ziehe.
Dort wird von der VCL-Komponente und all seinen gekapselten Daten eine eigene Instanz verwendet (nicht die Instanz, die von der Hilfsunit genutzt wird), und nichts ist von meinen Daten mehr vorhanden.

Das verlockende und schöne, was ich eigentlich nutzen wollte, ist die Funktionsweise der gekapselten Methoden, in denen ziemlich viel im Hintergrund laufen kann.
So brauche ich mit meiner VCL-Komponente nur einmal ein Bild zeichnen, und dieses wird jedesmal bei Änderung einer Variablen aktualisiert.
Wenn ich Datenstruktur und VCL-Komponenten strikt trennen würde, müsste ich sonst jedesmal nach Variableninhaltänderung die Aktualisierung der Zeichnung im Code anschubsen.

Ich hoffe dass Ihr meine Problembeschreibung einigermassen verstehen könnt.

Vielleicht hat da jemand eine geniale Idee, mit der ich in obiger Problematik leicht pflegbaren Code machen kann.

Danke und Grüße

EB

shmia 30. Jan 2009 15:04

Re: eigene VCL-Komponente. soll Datenstruktur mit liefern ??
 
Was macht die VCL Komponente genau?
Viele Programmierer (mich eingeschlossen) mach(t)en den Fehler eine Komponente zu entwickeln,
obwohl diese Komponente so speziell ist, dass sie nur in einer einzigen Anwendung funktionieren kann.

Ein Komponente macht nur dann Sinn, wenn sie im Prinzip in jeder Anwendung ihren Dienst verrichten könnte.
Ansonsten sollte man die Komponente als ganz normale Klasse in einer eigenen Unit anlegen. (und nicht von TComponent ableiten).

Wenn dann ein Objekt diese Klasse von zwei (oder mehr) Formularen angesprochen werden soll, dann gibt es zwei Lösungsmöglichkeiten:
1.) man implementiert die Klasse als Singleton
2.) das Hauptformular erzeugt eine Instanz der Klasse und gibt einen Objektzeiger an jedes andere Formular, das auch Zugriff braucht, weiter.

EccoBravo 30. Jan 2009 15:11

Re: eigene VCL-Komponente. soll Datenstruktur mit liefern ??
 
Danke,

über den 2. Vorschlag werde ich mal nachdenken.


Danke und ein schönes WE

EB


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:18 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