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/)
-   -   Frame in mehreren Delphiversionen nutzen (https://www.delphipraxis.net/177115-frame-mehreren-delphiversionen-nutzen.html)

Jumpy 17. Okt 2013 10:00

Frame in mehreren Delphiversionen nutzen
 
Hallo,

es soll aus zwei separaten Programmen auf die selbe Datenmenge zugegriffen werden. Eines der Programme wird gerade neu in D2010 erstellt, das andere ist eine alte D6 Anwendung, wo das dazukommen soll. Es geht nur um eine einzige Bildschirmmaske und ich hab zunächst überlegt einfach ein Form zu machen und das in beiden Delphi-Versionen zu benutzen, mein mich aber zu erinnern, dass es da gemecker Seitens der IDE gibt, weil die Forms ggf. andere Eigenschaften haben in den Versionen.

Daher die Frage: Wie ist es mit einem Frame. Kann ich den in z.B. D6 erstellen und so wie er ist auch in D2010 benutzen oder gibt es da auch Änderungen in den Delphi-Versionen?

Bernhard Geyer 17. Okt 2013 10:08

AW: Frame in mehreren Delphiversionen nutzen
 
Die Richtung Alte-IDE-Version -> Neue Vesion sollte (solange man nix verwendet was es nicht mehr gibt) (fast) immer gehen.

Uwe Raabe 17. Okt 2013 10:10

AW: Frame in mehreren Delphiversionen nutzen
 
Im Prinzip sind die Probleme identisch. Allerdings sollte in D6 erstellen und in D2010 verwenden durchaus gehen. Umgekehrt ist wohl schwieriger. In jedem Fall solltest du das Frame in D2010 einmal öffnen bevor du compilierst, damit die IDE die Eigenschaften anpassen kann. Danach kannst du es aber in D6 wohl nicht mehr so ohne weiteres öffnen. Eventuell können dir dabei aber die DevExtensions von Andy helfen.

himitsu 17. Okt 2013 10:20

AW: Frame in mehreren Delphiversionen nutzen
 
Wenn du dafür sorgst, daß in der DFM keine Property vorhanden sind, die nicht von beiden DelphiVersionen verstanden werden, dann gibt es da eigentlich keine Probleme.
Das Selbe gilt natürlich auch für den Code, den beide Versionen verstehen müssen.
- Vorallem die Uses-Klausel, mit den neuen NameSpaces und womöglich verschobenem RTL/VCL-Code, der jetzt in anderen Units steckt. Aber hier kann man ja mit IFDEFs etwas nachhelfen.

Entweder du editierst diesen Frame dann möglichst nur im alten Delphi (es gibt im neuen Delphi vermutlich weniger Probleme mit dem alten Code)
oder du leitest das TFrame nochmal ab, bevor du es verwendest und setzt die problemeatischen Property dort auf "stored False". (notfalls die jeweils unbekannten Property mit IFDEF gekapselt)


Bei TForm gibt es auch kaum Unterschiede.
Früher wurde da aber Width und Height gespeichert, was total blöd war, wenn sich der Rahmen/Style des Fensters je Windowsversion unterscheidet
und jetzt wird da ClientWidth und ClientHeight verwendet, aber das neue Delphi kommt auch noch mit Width und Height klar. (so halbwegs ... mit Anchors gibt es ja immer mal Probleme)



PS: Das Selbe gilt eigentlich auch für die Komponenten auf der Form/Frame, welche ebenfalls unterschiedliche Eigenschaften enthalten können.
Aber da gibt es so einige, welche sich sagen "Verwende nie etwas direkt und packe immer einen eigenen Wrapper drumrum" ... also mindestens einmal ableiten, selbst wenn man "jetzt" noch nichts anpasst.

PPS: Ich mag diese
Delphi-Quellcode:
{$IFDEF VER180}
nicht, da sie sich nur auf eine ganz bestimmte Version beziehen und keine Bereich erlauben.
Sowas wie Version >= 18 geht da einfach nicht. (OK, außer man definiert sich weitere DEFINITIONEN, aber mit jeder neuen Delphiversion muß man sowas sinnlos anpassen und darf blos nichts vergessen)

Und verwende sehr ungern
Delphi-Quellcode:
{$IFNDEF ...}
, da man das N so gern übersieht.

Delphi-Quellcode:
{$IF CompilerVersion < 18.0}
und
Delphi-Quellcode:
{$IF CompilerVersion >= 18.0}
ist da doch schöner.





Ach ja, im Endeffekt kann es natürlich auch einfacher sein, das doch einfach doppelt zu führen.
Da mußt du dann nur bei Änderungen das jeweils im anderen Delphi öffnen, die Änderungen anpassen lassen und es dann unter dem jeweils anderen Dateinamen abspeichern.


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