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 Formular (Dialog) zur Laufzeit designen. (https://www.delphipraxis.net/151541-formular-dialog-zur-laufzeit-designen.html)

stekohl 22. Mai 2010 10:29


Formular (Dialog) zur Laufzeit designen.
 
Hallo Leute,

ich habe da mal eine Frage.

Ich möchte gerne ein Anwendung für meine Firma schreiben.

Folgende Funktionen:

a.) Stammdaten (Kunden,Geräte,Prüfungen..etc) bekomme ich selber in den Griff. Datenbank wird Postgresql oder Firebird. Datenbankstruktur ist schon soweit fertig. Replizierung wird aller wahrscheinlichkeit manuell von der Software bewerkstelligt. Ansonsten wäre nur die neuer Beta von Postgre von sich aus Replizierbar. Allerdings ist Firbird, evtl. ja auch SQL Lite aufgrund der Nutzbarkeit als embedded Datenbank sehr Atraktiv. Evtl. mal ein paar empfehlungen von Euch. Sollte auf jeden Fall erstmal ein freie Datenbank sein.

b.) Datenübernahme von Geräten per XML. Ist soweit auch schon ok. Prüfdatenübernahme vom Prüfgerät per RS-232. Auchf fertig

c.) Dokumentation zu den einzelnen Geräten. Auch fertig.

d.) Individueller Entwurf von Prüf- und Wartungsberichten. Zur Laufzeit. Soll heißen: Bestimmte User haben die Möglichkeit Berichte zu erstellen.
Die sollen wie folgt aussehen:
Freier Entwurf der Datenstruktur, basierend auf bestehenden Stammdaten.
Freier Entwurf von Eingabedialogen, basierend auf die vorher entworfene Datenstruktur.
Freier Entwurf von Reporten, basierend auf die Engabedialoge.
Hier liegt mein Problem: Das mit der offenen Datenstruktur möchte ich mit 5 festen Felder (Geräte,user..etc) und ??. Ja entwerfe ich zur Laufzeit Datenbanktabellen ?? Halte ich für sehr kritisch. Möchte da lieber etwas Universales haben. Evtl. ja eine Datenbank mit beschriebenen festen Feldern mit einem großen Textfeld in dem die Prüfdaten als XML geschrieben werden. Ist das sinnvoll?
Dialoge zur Laufzeit zu erzeugen, dass der User die vorhandenen vorher definierten Felder frei auf einem Workplace positionieren kann, halte ich bis jetzt für mein größtes Problem. Wie soll ich das machen? Kann man den Dialogstream einfach als Stream in einer Datenbank speichern. (Idealerweise für jeden entworfenen Bericht als Dialog und Report. Oder muß ich alle verwendeten Dialog und Reportelemente mit den entsprechenden Daten in einer Datenbank definieren. Was natürlich weitaus komplexer wäre.

e.) Terminkalender, TODO --> habe ich mit TMS Komponenten berwerkstelligt, die ich seit Jahren nutze und immer wieder upgrade. Extrem flexibel und wandlungsfähig. Da bin ich einfach zu faul für, etwas neu zu entwickeln was andere schon besser gemacht haben.;-)


Lösungsvorschläge könnten natürlich auch schon bestehende VCL's sein. Bitte aber keine mit 5 stelligen Anschaffungspreis. ;-)

Gruß,

Stephan

olaf 23. Mai 2010 08:29

Re: Formular (Dialog) zur Laufzeit designen.
 
Hallo,

Postgre und Firebird sind sehr gute kostenlose Multiuserdatenbanken. SQL Lite ist extrem langsam beim schreiben. Bei 10000 inserts kannst du dir fast eine rauchen gehen.

Olaf

mkinzler 23. Mai 2010 08:47

Re: Formular (Dialog) zur Laufzeit designen.
 
Zudem eignet sich SQLite eher für lokale Singleuser- oder read-only Config-Datenbanken
Von FireBird gibt s auch eine embedded Variante, welche parallel zur Serverversion eingesetzt werden kann (Skalierbarkeit)

Neumann 23. Mai 2010 11:38

Re: Formular (Dialog) zur Laufzeit designen.
 
Hallo,

wir entwickeln zur Zeit etwas derartiges; dabei werden von einer Applikation Daten erzeugt und z. B. in einer Firebird - Datenbank (kein Muß) zunächst zwischengespeichert. Eine weitere Applikation schickt die Daten an einen Webserver, wo sie in einer MySQL-Datenbank landen.
Die Kommunikation mit dem Webserver geht in beide Richtungen, das Verbindungstool kann auch Daten vom Webserver holen oder von diesem explizit gesendete Nachrichten empfangen und in die lokale Datenbank eintragen.
Die beiden Programme sind mit Delphi programmiert.

Das Interface für den User des Backoffice wird mit Flash und PHP programmiert; wobei wir die Flash-Applikation frei designen können, mit Dialogen, Eingabefeldern, Listen und Anbindung an Datenbankfeldern usw. Auch die Generierung von Reports ist möglich. Das ist komplett ohne Ahnung von Flash machbar. Entsprechende Tools haben wir auch dazu entwickelt.

Das Ganze ist zur Zeit noch im Betastatus; aber die Entwicklung geht schnell voran. Bei Interesse bitte melden, ich kann dann noch mehr Infos liefern.

Gruß

Ralf (rs(at)es-kassen.de

stekohl 31. Mai 2010 16:33

Re: Formular (Dialog) zur Laufzeit designen.
 
Danke Leute für die ersten Tipps.

Die Info von Ralf ist natürlich sehr interessant, da meine PHP Fähigkeiten stark gegen null gehen, halte ich das erst einmal für nicht meinen Ansatz. Trotzdem danke, komme ich nicht weiter werde ich dich fragen.

Ich hatte das so vor:
Feste Anzahl Datenbanken (Kunden,Geräte,Protokolle,Protokol-daten) so in etwa.
Ganz einfach referenziel indexiert. Kunde-->Geräte-->Protokolle-Daten per seperater Indexdatenbanken.

Kunden und Geräte enthalten einfach nur die entsprechenden Daten. Unter Protokolle werden die entworfenen Protokolle hinterlegt. Sowie die Beziehungen zu den Gerätetypen. Der eigentliche Entwurf soll in Memofeldern als XML gespeichert werden oder als Formularstream gespeichert werden. Ich denke so bin ich am flexibelsten. Das gefüllte Protokoll wird dann auch in der Datei Protokol-Daten mit Kunden und Gerätedaten als XML gespeichert.

Meinen jetzigen Entwicklungsstatus Alpha zu nennen wäre gestrunzt. Bis jetzt lote ich noch aus, inwieweit ich zur Laufzeit Formulare und Reporte gestalten kann. Wenn ich merke, dass das Projekt in Richtung Traumschloß und Elfenland geht, naja ich bin Realist. Werde mir nicht Monate für Nüße um die Ohren schlagen, wenn es danach eh nix bring.

Wer Ideen zu dem Thema hat, auch gerne Komponenten die ich verwenden kann, bitte was schreiben.
Ich weiß für viele ist es ein Sakrileg auf vertige Komponenten zurück zugreifen, dass müsse man alles selber schreiben.

Ich bin da eher pragmatisch (oder auch zu faul) ich schreibe nicht die 200'te RS-232 Komponente wenn die 199 anderen es schon besser gelöst haben. Dafür ist das Leben zu kurz und für das fertige Produkt (respektive dem Kunden) auch egal.

Gruß,

Stephan

ak-ac 31. Mai 2010 19:15

Re: Formular (Dialog) zur Laufzeit designen.
 
Faul ist nicht schlecht, in den Komponenten steckt schon eine Menge Arbeit wenn Sie gut gemacht sind.

Habe gute Erfahrung mit einer Layout-Komponente von DevExpress gemacht, damit geht auch die Umstellung zur Laufzeit. Und wenn du dann noch neue Felder dynamisch hinzufügst klappt das schon.

Ansonsten DBExpress mit MySQL ist einfach und gut...

stekohl 31. Mai 2010 23:22

Re: Formular (Dialog) zur Laufzeit designen.
 
Zitat:

Zitat von ak-ac
Faul ist nicht schlecht, in den Komponenten steckt schon eine Menge Arbeit wenn Sie gut gemacht sind.

Habe gute Erfahrung mit einer Layout-Komponente von DevExpress gemacht, damit geht auch die Umstellung zur Laufzeit. Und wenn du dann noch neue Felder dynamisch hinzufügst klappt das schon.

Ansonsten DBExpress mit MySQL ist einfach und gut...

Das meinte ich ja. Mit faul meine ich ja nicht das die Programmierer dieser VCL's faul sind. Die sollen schon den Lohn für ihre Arbeit bekommen. Die TMS Componenten habe ich ja auch nicht geschenkt bekommen. ;-)

Die VCL die Du da angesprochen hast ist evtl. genau das richtige. Leider ist die DEMO wirklich nur eine DEMO. Wäre da glücklicher, wenn die Komponente zur Laufzeit Hinweise zum Demomode ausgeben würde. Da kann ich besser Testen ob ich das so in mein Programm bekomme. Der Preis ist ok. Nur wie gesagt, ist ein wenig "Katze im Sack".
Ich weiß zum Beispiel nicht, inweiweit ich die erstellten Formulare in einer Datenbank speichern kann und ob sich daraus auch brauchbare Reporte generieren lassen.

Aber erstmal danke für den Tipp

Gruß,

Stephan

ak-ac 1. Jun 2010 08:13

Re: Formular (Dialog) zur Laufzeit designen.
 
klar, mut zur faulheit ;o))

Die Komponente kann das in Dateien/Registry speichern und das passt ja auch in die DB rein.

Der einzige Punkt ist dann wohl, dass du die Felder, die später hinzukommen, manuell auf das Formular packen musst, aber das ist eigentlich easy.

stekohl 3. Jun 2010 09:22

Re: Formular (Dialog) zur Laufzeit designen.
 
Zitat:

Zitat von ak-ac
klar, mut zur faulheit ;o))

Die Komponente kann das in Dateien/Registry speichern und das passt ja auch in die DB rein.

Der einzige Punkt ist dann wohl, dass du die Felder, die später hinzukommen, manuell auf das Formular packen musst, aber das ist eigentlich easy.

Jau, habe mir ExpressLayout gekauft, tolle VCL. Genau das was ich gesucht habe. Jetzt muß ich aus diesem frei gestallteten Dialog nur noch entsprechend frei gestaltbare Reporte erstellen können.


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