![]() |
Wohin mit den Nicht-Visuellen Komponenten?
Hallo Kollegen,
wohin packt ihr eure Nicht-Visuellen Komponeneten im Form-Designer? Ich habe davon mittlerweile ein gutes Dutzend auf der Form liegen, und ziehe sie bei jeder Gelegenheit zur Seite, weil sie eigentlich überall nur stören (andere Dinge verdecken, die man gerade bearbeitet). Haben die erfahrenen Delphianer einen Workaround? Fragt sich und grüßt Jazzman |
AW: Wohin mit den Nicht-Visuellen Komponenten?
Lies mal die Hilfe zu
![]() |
AW: Wohin mit den Nicht-Visuellen Komponenten?
Du könntest die Komponenten einfach auf ein Datenmodul packen. Es heisst zwar Datenmodul aber muss nicht nur Datenkomponenten enthalten!
EDIT: Grrrr. Hat der rote Kasten Urlaub??? |
AW: Wohin mit den Nicht-Visuellen Komponenten?
*Hihi* schneller :zwinker:
|
AW: Wohin mit den Nicht-Visuellen Komponenten?
oder selbst im Quellcode erzeugen - das hat dann sogar den Vorteil, dass diese nicht als Komponenten installiert werden müssen; dadurch kann man die Libs dann leichter projektweise updaten.
|
AW: Wohin mit den Nicht-Visuellen Komponenten?
Dann muss man aber auch alle Einstellungen im Code setzen
|
AW: Wohin mit den Nicht-Visuellen Komponenten?
Ein ganz klares: Kommt drauf an. Komponenten, die primär für GUI Funktionalitäten zuständig sind (dazu würde ich z.B. eine ActionList zählen) dann gehören sie für mich auf die Form. Hast du allerdings Dinge, wie DBConnection, Datasets (über Datasources müsst ich nochmal nachdenken, wo die für mich hingehören) kann man die in ein DataModule packen. Allein um Wiederverwendbarkeit und Trennung von GUI und BL zu gewährleisten.
P.S. Ich hasse das Erzeugen von Komponenten im Code, wenn man sie auch im Designer platzieren könnte... |
AW: Wohin mit den Nicht-Visuellen Komponenten?
Merci! :wink:
Gruß Jazzman |
AW: Wohin mit den Nicht-Visuellen Komponenten?
Zitat:
Also gerade Actionlisten enthalten, zumindest meiner Meinung nach, doch grosse Teile des Business-Logik. Fügt man diese in ein Datenmodul ein so hat man die Logik in diesem Modul "gesammelt" und von der GUI, also dem Formular, getrennt. (wobei z.B. OnUpdate-Methoden eventuell da eine "Grauzone" darstellen) |
AW: Wohin mit den Nicht-Visuellen Komponenten?
Zitat:
Bei größeren Projekten wird das allerdings auch unübersichtlich, wenn man das nicht gut kapselt. Deshalb ist es nicht so eindeutig was wo sinnvoll ist... Klar ist jedenfalls eins: Um die Oberflächen an sich von deren Logik sowie der Businesslogik und den Daten zu trennen, macht es Sinn alles auszulagern was nur geht. Wenn man das über mehrere Schichten macht, kann man leicht die Oberfläche auswechseln ohne deren Logik mit auswechseln zu müssen. // EDIT: Zitat:
|
AW: Wohin mit den Nicht-Visuellen Komponenten?
Ich würde die nichtvisuellen Komonenten auch möglichst in Datamodule oder auch auf normale Forms, die nie angezeigt werden auslagern.
Wenn es nicht geht (z.B. Mainmenu hab ich noch nicht versucht) dann kann man GExperts installieren, mit dem man diese Komponenten bei Bedarf sichtbar/unsichtbar machen kann. |
AW: Wohin mit den Nicht-Visuellen Komponenten?
Ein Menü ist ja auch irgendwie visuell
|
AW: Wohin mit den Nicht-Visuellen Komponenten?
Das MainMenu hatte ich früher in einem DataModule liegen. Angezeigt wurde es ganz normal im MainForm.
Ich fand aber praktisch, dass das Icon während der Designzeit nicht auf dem Formular rumlag. Diese Konstellation hat jedoch während der Entwicklung ständig die MainForm-Höhe verringert... Das Formular wurde immer beim Öffnen (oder war es Speichern?) des Projektes um 20 Pixel oder so verkleinert. |
AW: Wohin mit den Nicht-Visuellen Komponenten?
Hmm bei einem Projekt habe ich eine feste Form Höhe von 200px. Diese lege ich im OnCreate der Form fest. Im Form Designer ist die Form höhe 400px und im Bereich 201-400px liegen solchen Dinge :)
Hatte auch das Problem das immer alles verdeckt wurde. Aber das mit dem Datamodule ist mit Sicherheit die bessere Variante :P |
AW: Wohin mit den Nicht-Visuellen Komponenten?
Zitat:
|
AW: Wohin mit den Nicht-Visuellen Komponenten?
Zitat:
Da sich die Größe der Titelleiste und der Rahmen ändern kann. Außerdem beschränkt man so die Benutzer, welche die Form skalieren wollen. |
AW: Wohin mit den Nicht-Visuellen Komponenten?
Zitat:
Ich muss das aber etwas erweitern bzw. relativieren : Don't do something at runtime, if you don't know, how much you need. Also, wenn man zur Designtime nicht genau weiss, wieviele Komponenten man braucht, dann werden die eben zur Laufzeit erzeugt. Dafür einen sinnvollen Einsatzzweck zu haben ist gar nicht so einfach. Allerdings habe ich ein Beispiel wo es kaum anders geht : Touchscreen zur Warenerfassung. Zuerst stehen da die Warengruppen auf der Form als Panele. Ist eine ausgewählt, dann sollen die Artikel angezeigt werden etc. Wieviele Panele es gibt, das hängt dann davon ab, wieviele Warengruppen/Artikel angelegt sind. Für das Ganze wird dann eine Form mit Panelen zugekleistert. Dabei muss alles codemässig gesetzt werden : die Koordinaten, der Name, Caption, OnClick usw., eben alles vom Programm. Da die Anzahl der Datensätze zur Designtime nicht bekannt ist, kann ich also auch nicht einfach zur Designtime eine gewisse Anzahl an Panelen auf die Form klatschen und sie in Position bringen. Zur Frage an sich : alles gehört dahin, wo die Programmlogik auch ist. Sollte dieser Touchscreen z.B. noch einen Timer brauchen für Uhrzeitanzeige oder so, dann kommt der auch auf die entsprechende Form und nicht etwa in ein Datamodul, nur weil er nichtvisuell ist. Ich habe sogar 4 Datamodule, weil nur eines überlaufen würde. :lol: Was jetzt wo drin ist, das hängt einzig und allein von der Programmlogik ab. Oder vom Typ. Stored Procedures sind z.B. überwiegend in einem Datamodule. D.h. die sind nicht zwingend da, meistens jedoch schon. Und es gibt noch anderes nichtvisuelles, nicht nur Komponenten. Irgendwelche Funktionen etc. Die kommen in eigene Unit. Das ist dann so was wie Netto, Brutto usw. Umgekehrt rum gibts auch Datasets direkt auf einer Form. Das wäre dann so etwas, was nur die eine Form betrifft. Warum soll ich auch noch damit das Datamodul belästigen ? :cyclops: P.S.: was heisst übrigens "gutes Dutzend" ? Von was ? Das kann man ja wirklich locker in die Ecke schieben. :mrgreen: |
AW: Wohin mit den Nicht-Visuellen Komponenten?
Allgemeines geht ins DataModul und sonst neige ich zu einem Panel am unteren Formularrand, was auf visible=false gestellt ist. Man kann dann sogar Bereiche unterteilen mit SubPanels. Aber das ist nur bei wenigen großen Projekten nötig.
|
AW: Wohin mit den Nicht-Visuellen Komponenten?
Zitat:
|
AW: Wohin mit den Nicht-Visuellen Komponenten?
Zitat:
![]() |
AW: Wohin mit den Nicht-Visuellen Komponenten?
Du könntest die Komponenten auch mit den GExperts ausblenden / verstecken.
|
AW: Wohin mit den Nicht-Visuellen Komponenten?
Das Auslagern macht nur dann Sinn, wenn die entsprechenden Komponenten mehrfach benutzt werden können/sollen und dabei nicht zum Sperrkriterium werden, wenn von der Form mehrere Instanzen benötigt werden.
Beispiel: Habe ich ein Formular zur Suche in einer Datenbank und die Query für die Suche in einem DatenModul, dann greift jede Formular Instanz auf die zur DesignTime verbundene DatenModul Instanz zu. Um das zu umgehen, müsste man für jede Form Instanz eine Instanz vom DatenModul erzeugen und die Verbindungen zu den Komponenten der Form Instanz herstellen (DBGrid, DBEdits, etc.) Und wehe man vergisst eine zur DesignTime eingestellte Verbindung. Aus diesem Grund würde bei mir diese QueryKomponente nebst DataSource auf das Formular kommen und nicht ausgelagert in einem DatenModul. |
AW: Wohin mit den Nicht-Visuellen Komponenten?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:52 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