Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Oberfläche speichern und danach erweitern (https://www.delphipraxis.net/200141-oberflaeche-speichern-und-danach-erweitern.html)

freimatz 23. Mär 2019 10:53

Oberfläche speichern und danach erweitern
 
Sorry, mir fiel kein besserer Betreff ein.

Also: Ich habe eine große Anwendung mit einem Menüband mit zig. Reitern die wiederum Gruppen und diese viele Knöpfe und anderes enthalten. Das Menüband entspricht vom Stil dem von Office und ist realisiert mit DevExpress.
Nun kann ein Anwender dieses Menüband konfigurieren wie z.B. Knöpfe der Schnellauswahl hinzufügen, Befehle zu irgend einer Gruppe hinzufügen, Knöpfe löschen etc. Das wird dann in einer Datei "Barmanager.ini" gespeichert und beim nächsten Programmstart wieder geladen. Soweit so gut.

Nun möchte ich dem Reiter Hilfe einige weitere Symbole hinzufügen und diese in einer weiteren Gruppe organisieren. Gedacht, getan. Wenn ich nun die Anwendung neu installiere und starte klappt alles prächtig.
Wenn aber von einer Vorversion noch eine Barmanager.ini da ist wird die geladen und meine neuen Knöpfe erscheinen nicht, die sind ja da nicht drin. Noch schlimmer ist es wenn ich neue Gruppen anlege, dann werden die Inhalte in die falschen Gruppen einsortiert, weil in der ini die nur durchnummeriert werden.

Was hilft ist die Datei vorher zu löschen. Dies bedeutet jedoch dass alle Einstellungen, die ein Anwender möglicherweise gemacht hat, weg sind. :cry:

Seitens DevExpress wird nur das Löschen empfohlen.
Das alles selber zur Laufzeit zu machen beim Versionswechsel ist aufgrund der extrem komplexen Struktur mir zu aufwendig.

Noch irgendwelche Ideen?

HolgerX 23. Mär 2019 11:44

AW: Oberfläche speichern und danach erweitern
 
Hmm..

Eine Option währe eine Versionierung..

Spricht, ein zusätzlicher Eintrag in diese INI mit einer Versionsnummer.
Wenn die App geladen und somit seine Menüs generiert wurden, dann kannst Du bei einer neuen Version deiner App schauen, mit welcher die INI als letztes erzeugt wurde und deine 'neuen' Gruppen manuell hinzufügen, wenn die Version in der ini 'alt' ist.

Dies hinzufügen wird nur einmal gemacht und mit dem nächsten Speichern sind deine neuen Gruppen + aktuelle Version in der INI.

Inwieweit dies direkt mit DevExpress möglich ist, weiß ich nicht, eventuell die Lade/Speicherroutine der INI überschreiben..

Ups, überlesen ..
Zitat:

Zitat von freimatz (Beitrag 1428469)
Das alles selber zur Laufzeit zu machen beim Versionswechsel ist aufgrund der extrem komplexen Struktur mir zu aufwendig.


freimatz 23. Mär 2019 12:28

AW: Oberfläche speichern und danach erweitern
 
Das mit der Version in meiner eigenen ini mache ich schon. Ich kann also erkennen ob der Versionswechsel erfolgt.
Der Inhalt der "Barmanger.ini" wird komplett von DevExpress erzeugt.

:shock: Habe gerade geschaut wie gross denn so eine ist - 4598 Zeilen

DieDolly 23. Mär 2019 20:35

AW: Oberfläche speichern und danach erweitern
 
Zitat:

Der Inhalt der "Barmanger.ini" wird komplett von DevExpress erzeugt.

Habe gerade geschaut wie gross denn so eine ist - 4598 Zeilen
Wäre es eine Überlegung wert das Laden und speichern der GUI nochmal zu überdenken? Ohne Vollautomatismus und alles manuell? Das hat sich bei mir immer bewährt.
Und so oft ändert man die GUI während der Entwicklung oder den Aufbau am Ende des Tages ja auch nicht.

haentschman 24. Mär 2019 09:44

AW: Oberfläche speichern und danach erweitern
 
Moin...:P
Zitat:

realisiert mit DevExpress
...du sitzt im gleichen Boot. :? Ich habe ein Projekt übernommen wo die komplette GUI in "Layouts" gespeichert wird. (Bar, Grids, LayoutControls).
In diesem Zusammenhang habe ich die gleichen Probleme. Wenn ich im Layout eine Eingabe hinzufüge, ist sie im "Layout" nicht zu sehen. :evil: Das heißt für die User die Layouts neu zusammenbauen... Grade in der Entwicklung, wo auch der Workflow geändert wird, traue ich mir nicht zu sagen, "Einmal das Layout neu!".

Fazit:
Wenn ich es könnte, würde ich die GUI statisch gestalten. Dieser Zirkus mit "vom User anzupassen"...Wenn man sonst keine Probleme hat, kann man das machen. :?

Aviator 24. Mär 2019 11:26

AW: Oberfläche speichern und danach erweitern
 
Ich finde anpassbare Oberflächen für den User ein super Feature. Klar, für den Programmierer ist das um so mehr Aufwand.

Aber wäre es nicht möglich, die "Standardeinstellungen" die durch dich als Entwickler implementiert werden in eine eigene Datei zu speichern und dann alle Einstellungen vom User in eine separate Datei? Diese könnte dann im Nachgang eventuell gemerged werden. So werden die User Einstellungen bei jedem Update beibehalten und die Systemeinstellungen können erweitert werden.

Klar wäre das dann Programmieraufwand, aber wenn man sein Programm so gestalten und flexibel sein will, dann muss man eben Zeit investieren. Dieses Erweitern von Funktionen kenne ich von einer großen Software. Dort kann man seine eigenen (erweiterten) Lösungen an bestehende anhängen. Ist eigentlich ein ganz gutes Konzept.


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