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 XP-Style an- und abschaltbar ? (https://www.delphipraxis.net/27920-xp-style-und-abschaltbar.html)

SHartmann 17. Aug 2004 13:25


XP-Style an- und abschaltbar ?
 
Hallo,

in Delphi 7 kann man durch einbinden von
Delphi-Quellcode:
{$R WindowsXP.res}
den Windows XP-Stil erreichen.

Ich hätte das ganze aber gerne abschaltbar, so dass am Anfang der Anwendung aus einer Ini-Datei ausgelesen wird, ob XP oder normale Darstellung.

Kann man die WindowsXP Resourcen auch irgendwie erst zur Laufzeit laden?

Gibt es irgendeine andere Möglichkeit WindowsXP erst zur Laufzeit mitzuteilen welche CommonControls-Version verwendet werden soll?

Ich kann mir gut vorstellen, dass das Umschalten von einer zur anderen Version nicht funktioniert.
Mir würde das einmalige programmgesteuerte Auswählen durchaus ausreichen.



Gruß
Stephan

MathiasSimmack 17. Aug 2004 13:32

Re: XP-Style an- und abschaltbar ?
 
Ich glaube nicht, dass das geht. Die einzige Möglichkeit wäre ein externes Manifest, dessen Endung du entsprechend setzt bzw. änderst. Aber ich halte von solchen Sachen nichts. Zumal die Common Controls 6 ja nicht nur mit dem XP-Stil zu tun haben. Es gibt auch Sonderfunktionen, die das Manifest erfordern und ohne gar nicht zur Verfügung stünden.

Wenn du mich fragst, dann lass das den User entscheiden. Sprich: er aktiviert LUNA, oder er verwendet das klassische Aussehen. Kein Grund, ihm (dem User) in der Hinsicht noch Vorschriften zu machen, wie ich finde.

SHartmann 17. Aug 2004 13:37

Re: XP-Style an- und abschaltbar ?
 
Hallo,

ich will den User ja eigentlich entscheiden lassen.
Normalerweise soll das Programm so aussehen wie es das Betriebssystem vorsieht
(also unter Win2000 normal, unter XP Luna).
Jetzt soll der Anwender die Möglichkeit haben Luna für die Anwendung abzuschalten.

Vielleicht hab ich ja was verpasst ?

Gruß
SH

elKe 17. Aug 2004 14:11

Re: XP-Style an- und abschaltbar ?
 
hm ich denke, kein User wird Luna nur für eine Anwendung nicht wollen. Luna mag man oder nicht. Entweder man aktiviert Luna oder nicht. :)

MathiasSimmack 17. Aug 2004 14:17

Re: XP-Style an- und abschaltbar ?
 
Zitat:

Zitat von SHartmann
Jetzt soll der Anwender die Möglichkeit haben Luna für die Anwendung abzuschalten.

Das macht aber nicht viel Sinn. Wie gesagt, manchmal hängt am Manifest ja nicht nur das "neue Aussehen" sondern auch eine Funktion, die ohne nicht geht. Ich hab´s schon oft gesagt, allerdings nicht zu dir, darum wiederhole ich es: Nimm die neuen List-View-Modi "Gruppierung", "Tile-View" und Spaltenmarkierung (s. Windows Explorer). Das funktioniert auch im klassischen Modus, allerdings nur, wenn das Manifest (sprich: die XML-Datei, die bei Delphi 7 in der von dir genannten Ressourcendatei steckt) vorhanden ist.

Kurz gesagt: Ich würd´s lassen. Aber das ist eben nur meine Meinung. :)

NicoDE 17. Aug 2004 14:28

Re: XP-Style an- und abschaltbar ?
 
Zudem kann es jeder Benutzer bereits für jedes Programm selbst festlegen: RMT, Eigenschaften - Kompatibilität - Visuelle Designs deaktivieren.

Stevie 17. Aug 2004 14:53

Re: XP-Style an- und abschaltbar ?
 
Ich weiß von den DevExpress-Komponenten, dass man dort einstellen kann, welchen Style sie haben sollen.
Ich guck mal nach, wie das gemacht wird.

SHartmann 17. Aug 2004 14:56

Re: XP-Style an- und abschaltbar ?
 
Ich geb Euch ja im Prinzip Recht, ich erklär Euch jetzt aber mal warum ich es trotzdem brauche :wink:
Unsere Anwendung ist ein Programmiersystem (ein bisschen wie Delphi oder VB).
Wenn unsere User jetzt unter XP entwickeln, dann sollte das Programm so aussehen, wie es der User
eingestellt hat (wohl bei 90% Luna like), so wie Ihr das auch alle geschrieben habt.
Jetzt schreibt unser User aber ein Programm, von dem er weiss, dass es bei seinen Kunden nur auf Win2000 läuft. Jetzt würde er beim Design seine designten Forms gerne so sehen wie sie sein Kunde sieht. Da ein Mischbetrieb ja nicht möglich ist, muss dann eben alles Standard gestellt werden.
Genau das ist der Punkt wo ich so einen Schalter wunderbar hätte brauchen können.

Wenn man diese Eigenschaft aber in WindowsXP selbst einstellen kann, so wie NicoDE das beschrieben hat,
kann man dieseEinstellungen einer EXE als Vorgabe mitgeben? Ähnlich der Versionsinfo?

Gruß
SH

FAlter 17. Aug 2004 15:03

Re: XP-Style an- und abschaltbar ?
 
Windows sieht so etwas vor, der User kann entscheiden, und der Programmierer muss sich nicht einmal kümmern:

Rechtsklick (.exe oder .lnk), Kompatiblität, Visuelle Designs deaktivieren.

(Kannst ja mal kucken, ob es irgendwo in der Registry gespeichert wird...)

FAlter 17. Aug 2004 15:08

Re: XP-Style an- und abschaltbar ?
 
Ach noch was, klappt nicht bei D3 Prof, aber bei D6 Pers:

1. kein Manifest verwenden
2. Komponente irgendwo unten rechts auf Form (z. B. Button)
3. AutoScroll der Form auf true
4. Programm starten
5. Form verkleinern, dass Komponente teilweide außerhalb des Bereichs liegt
6. Scrollbar erscheint und Fensterstyle verändert sich. Warum weiß ich nicht, aber das zeigt zumindest, dass es noch mehr Möglichkeiten geben müsste.

MathiasSimmack 17. Aug 2004 15:16

Re: XP-Style an- und abschaltbar ?
 
"HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" lautet der Schlüssel, in dem Windows (XP) die Programme mit deaktivierten Themes speichert.

Der Name des Eintrags ist das Programm inkl. Pfad. Der Typ ist eine Zeichenkette (REG_SZ), und sein Inhalt ist "DISABLETHEMES".


Me is very fast, huh? ;)

NicoDE 17. Aug 2004 15:34

Re: XP-Style an- und abschaltbar ?
 
Zitat:

Zitat von SHartmann
Jetzt würde er beim Design seine designten Forms gerne so sehen wie sie sein Kunde sieht.

Die Controls des 'Visuellen Designs' haben meist andere Abmaße als die des 'Standard-Designs'.
Man müsste schon die Designs wechseln um zu brauchbaren Ergebnissen zu kommen...

SHartmann 17. Aug 2004 15:50

Re: XP-Style an- und abschaltbar ?
 
Zitat:

Zitat von NicoDE
Zitat:

Zitat von SHartmann
Jetzt würde er beim Design seine designten Forms gerne so sehen wie sie sein Kunde sieht.

Die Controls des 'Visuellen Designs' haben meist andere Abmaße als die des 'Standard-Designs'.
Man müsste schon die Designs wechseln um zu brauchbaren Ergebnissen zu kommen...

genau deshalb hätte ich ja gerne diese Umschaltmöglichkeit. Über die Windows XP-oberfläche kann unser Kunde das machen, aber irgendwie ist das zu umständlich.

Ausserdem wäre es schön wenn er für die erstellte Anwendung (in der auch ein mit Delphi vorcompiliertes Exe als Runtime mit enthalten ist) schon vorgeben kann, ob Themes überhaupt zulässig sind.

Gruß
Stephan

MathiasSimmack 17. Aug 2004 17:55

Re: XP-Style an- und abschaltbar ?
 
Darf ich mal ehrlich sein? Ich habe immer noch leichte Verständnisprobleme bei dieser ganzen Geschichte.

Zitat:

Zitat von SHartmann
Jetzt schreibt unser User aber ein Programm, von dem er weiss, dass es bei seinen Kunden nur auf Win2000 läuft. Jetzt würde er beim Design seine designten Forms gerne so sehen wie sie sein Kunde sieht. Da ein Mischbetrieb ja nicht möglich ist, muss dann eben alles Standard gestellt werden.
Genau das ist der Punkt wo ich so einen Schalter wunderbar hätte brauchen können.

Nee, bei mir ist genau das der Punkt, wo ich mein XP auf die Klassik-Ansicht umschalten und dann munter entwickeln würde. Wenn ich weiß, dass das Programm für 2000 (und ausschließlich dafür) gedacht ist, dann kann ich beim Entwickeln auf die Themes verzichten.

Oder willst du mir jetzt erzählen, dass der Kunde (= Entwickler) sich durch die klassische Ansicht plötzlich nicht mehr in seinem Windows zurechtfindet? ;) Also beim allem Respekt, es ändert sich lediglich das Aussehen und evtl. bei einigen Controls die Größe. Aber selbige bleiben alle an ihrem gewohnten Platz und behalten auch ihre gewohnten Beschriftungen.

Mit dem gleichen Satz könnte ich begründen, warum ein Anwender mein Programm unter XP grundsätzlich mit dem Longhorn-Theme benutzen muss, und warum ich durch diverse Codezeilen zwangsweise verhindere, dass er Blue, Silver oder was auch immer benutzen darf.


Und wenn ich sowohl für 2000 und XP entwickle, dann muss ich damit rechnen, dass der Anwender Themes benutzt. Also werde ich mir mein Programm sowohl in der alten als auch in der neuen Ansicht anschauen. Und sollten wirklich gravierende Unterschiede im Design auftreten, dann schließe ich einen Kompromiss. Was weiß ich ... indem ich Controls ein bisschen verschiebe, bis es unter beiden Ansichten gut aussieht.
Aber ich würde keinesfalls einen Zwang ausüben und die Nutzung von Themes grundsätzlich verbieten, indem ich irgendwelche Schalter o.ä. setze.

Zitat:

Wenn man diese Eigenschaft aber in WindowsXP selbst einstellen kann, so wie NicoDE das beschrieben hat, kann man dieseEinstellungen einer EXE als Vorgabe mitgeben? Ähnlich der Versionsinfo?
Ich glaube nicht, da es ja eine Registry-Einstellung ist. Du könntest bestenfalls in einem Setup dafür sorgen, dass dieser Wert in die Registry (wo der ist, hatte ich ja schon geschrieben, aber es ist vllt. etwas untergegangen) geschrieben wird. Aber wie gesagt, das wäre schon wieder der Zwang, denn der User muss erst mal wissen, warum das Programm kein Theme benutzt und wo man das abstellen kann.

Zitat:

Zitat von NicoDE
Die Controls des 'Visuellen Designs' haben meist andere Abmaße als die des 'Standard-Designs'. Man müsste schon die Designs wechseln um zu brauchbaren Ergebnissen zu kommen...

So sehe ich das auch. Wenn man mal den o.g. Registryeintrag ausprobiert, dann ändert sich zwar das Design des Clientbereichs des Programms. Aber die Titelzeile bleibt unverändert größer (je nach eingestelltem Theme) und benutzt eben nur die alten Buttons.

Zitat:

Zitat von SHartmann
genau deshalb hätte ich ja gerne diese Umschaltmöglichkeit. Über die Windows XP-oberfläche kann unser Kunde das machen, aber irgendwie ist das zu umständlich.

Da euer Kunde aber der Entwickler ist, sollte er das auch entscheiden können. Wie gesagt, wenn ich für 2000 entwickle und unbedingt das alte Design haben muss, dann schalte ich mein komplettes XP um. Bzw. habe ich als Entwickler für 2000 ohnehin vermutlich auch einen 2000er-Rechner bzw. eine 2000er-Partition.
Und wenn ich für 2000 und XP entwickle, dann ... Ach so, das sagte ich ja schon ...

Zitat:

Ausserdem wäre es schön wenn er für die erstellte Anwendung (in der auch ein mit Delphi vorcompiliertes Exe als Runtime mit enthalten ist) schon vorgeben kann, ob Themes überhaupt zulässig sind.
Wie gesagt, davon halte ich nichts. Wenn du einen tatsächlichen Grund hast, Themes zu verbieten, dann wäre das noch okay. Aber das die Anwendung vllt. auf Windows 2000 laufen könnte, ist kein Grund. Mal abgesehen davon, dass sämtliche Theme-Verbote unter 2000 ohnehin keinen Sinn machen.


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