Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

UTILISER LE STYLE XP DE D1 À D7 (ASTUCE)


Information sur la source

Catégorie :Trucs & Astuces Niveau : Débutant Date de création : 27/02/2004 Vu / téléchargé: 8 318 / 1 151

Note :
5,67 / 10 - par 3 personnes
5,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (37)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
Peut être le saviez vous déjà, en tout cas je n'ai pas pu chercher cette source sur le site car au moment où j'ai essayé, il y avait apparamment une panne de serveur ou je ne sais quoi: impossible de faire la recherche.
Excusez-moi donc d'avance si une telle source a déjà été postée.

En effet ceci est plus une astuce qu'un véritable code!
Elle consiste simplement à utiliser un fichier appelé WindowsXP.res (qui donne le style aux composants)
pour cela, regardez dans le zip de cette source (j'ai mis le fichier .res)

il suffit simplement d'écrire la ligne suivante, après "implementation" :
{$R WindowsXP.res}

...à condition que le fichier se trouve bien dans un répertoire spécifié dans la liste des répertoires de la bibliothèque, ou tout simplement dans le répertoire du programme.

Testé avec Delphi 5 (ça marche), mais la screenshot que j'ai prise est avec Delphi 7 car j'ai du formatter mon disque et je n'ai pas réinstallé Delphi 5 (ma vie n'est-elle pas passionnante?)
Il suffit de regarder la screenshot pour s'apercevoir que je n'ai absolument pas utilisé le TXPManifest ni l'unité XPMan...
 

Source

  • var IsConcluant: boolean;
  • try
  • IsConcluant := DoTestCode( tc_BRIEFLY );
  • if IsConcluant then ShowMessage('Merci de poster un commentaire pour confirmer la validité de l''astuce!');
  • except
  • on EPasContent do ShowMessage('Merci de poster un commentaire histoire qu''on puisse résoudre le problème !');
  • end;
var IsConcluant: boolean;

try
  IsConcluant := DoTestCode( tc_BRIEFLY );
  if IsConcluant then ShowMessage('Merci de poster un commentaire pour confirmer la validité de l''astuce!');
except
  on EPasContent do ShowMessage('Merci de poster un commentaire histoire qu''on puisse résoudre le problème !');
end;

Conclusion

je considère cette astuce de niveau débutant, puisqu'il n'y a qu'une seule ligne à ajouter...
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • main.dfmTélécharger ce fichier [Réservé aux membres club]1 708 octets
  • main.pasTélécharger ce fichier [Réservé aux membres club]Voir ce fichier832 octets
  • WindowsXP.resTélécharger ce fichier [Réservé aux membres club]648 octets
  • XPStyle.dprTélécharger ce fichier [Réservé aux membres club]Voir ce fichier185 octets
  • XPStyle.exeTélécharger ce fichier [Réservé aux membres club]169 472 octets
  • XPStyle.resTélécharger ce fichier [Réservé aux membres club]876 octets

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de costello le 27/02/2004 21:50:02

je suis bête... pour une ligne, j'étais pas obligé de mettre un code source entier...

enfin bon, comme ça vous avez un joli exemple :)

signaler à un administrateur
Commentaire de papyvore le 29/02/2004 19:15:22

bonjour
houai ! c'est bien mais je vois pas l'interet pour D7 ??
c'est déja dans le composant XPmanifest
a+

signaler à un administrateur
Commentaire de jmp77 le 01/03/2004 10:53:33

Salut,
Juste pour information je voudrais savoir si l'exe aura l'aspect xp uniquement en fonctionnement sous win xp ou également sous un autre os. Car je viens d'essayer en win 2000 et ma fenetre de change pas?

merci et A+,
JMP.

signaler à un administrateur
Commentaire de papyvore le 01/03/2004 13:28:08

bonjour
sous xp pro
l'EXE joint dans le zip ,a l'execution a le même aspect qu'une
fenêtre XP.
la fenêtre ne change pas
a+

signaler à un administrateur
Commentaire de costello le 01/03/2004 18:30:41

si mes explications ne sont pas assez claires, voici un résumé: cette astuce a le même effet que le composant TXPManifest de Delphi 7, mais il est utilisable sur toutes les versions de Delphi.
Il donne un style XP aux boutons et aux autres composants...

signaler à un administrateur
Commentaire de Nerolph le 05/03/2004 17:55:47

Mais est-ce que ça marche aussi sous Windows 98 ??

signaler à un administrateur
Commentaire de Delphiprog le 06/03/2004 19:20:09 administrateur CS

En clair, ça a le look Xp à condition de faire fonctionner le logiciel sous XP. :o(
Quelle est l'origine de ce fichier WindowsXp.res ?

signaler à un administrateur
Commentaire de costello le 07/03/2004 01:44:45

normalement vous devriez déjà avoir ce fichier WindowsXP.res quelque part sur votre disque... je l'ai trouvé par hasard dans les répertoires /Borland/ (je ne sais plus ou! -ô_ô-) et je me suis dit que ça devait avoir un lien avec le XPManifest...

signaler à un administrateur
Commentaire de Delphiprog le 07/03/2004 08:29:01 administrateur CS

Merci pour ces précisions.
En tous cas, ce n'est pas livré ni avec les versions antérieures à Delphi 7 ni avec les versions antérieures à Windows XP.
Faudra que je regarde ce que contient ce fichier windowsxp.res.

signaler à un administrateur
Commentaire de costello le 07/03/2004 15:16:47

bonne idée (que je n'ai pas eu)
personnellement j'adore ResourceHacker comme éditeur/hacker de ressources...

signaler à un administrateur
Commentaire de michelw le 05/04/2004 12:02:04

Ca ne marche pas avec Windose ME

signaler à un administrateur
Commentaire de costello le 05/04/2004 12:15:20

y'a vraiment des gens pas très fut-fut................
lisez les explications de la source et ses commentaires!!!

(grr)

signaler à un administrateur
Commentaire de GreatWizard le 22/04/2004 17:38:11

C:\Program Files\Borland\Delphi7\Source\Vcl\XPMan.pas
C:\Program Files\Borland\Delphi7\Source\WindowsXP.*

Ca revient au même d'utiliser le fichier WindowsXP ou le composant XPMan ! :)

Voila c tout ... lol

signaler à un administrateur
Commentaire de costello le 23/04/2004 11:47:52

et le composant XPMan n'est pas inclus dans les versions de 1 à 6 de delphi !!!
voilà, vous avez peut-être compris maintenant?? (alors vraiment...)

signaler à un administrateur
Commentaire de MAURICIO le 13/08/2004 18:16:53

J' explique pour ceux qui n' ont rien pigé:
Ça marche que sous XP!
C quoi l' intérêt alors qu' il me dit l' autre :
Bem si tu as la version de Delphi inferieure à 7, tu n' as pas le composant TXPManifest Ok? Alors tu fais comme l' exemple et Hohhhhh miracle ça marche !!!!!!!!!

signaler à un administrateur
Commentaire de MAURICIO le 13/08/2004 18:18:45

En tout cas moi j' ai un bug si mon programme utilise le TXPManifest et si j' appelle une form qui est dans une de mes dlls ... L' erreur se produit en fermant l' executable : (

Si qqu' un sait pourquoi:
mauricio_box@hotmail.com

signaler à un administrateur
Commentaire de nocaoper le 19/09/2004 18:04:22

hmm, est-ce que je pourrai savoir ou l'écrire (après implant) c'est pas très clair

signaler à un administrateur
Commentaire de Technix59 le 07/10/2004 13:18:56

Delphiprog, voici le contenu du .RES
----
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
- <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity type="win32" name="DelphiApplication" version="1.0.0.0" processorArchitecture="*" />
- <dependency>
- <dependentAssembly>
  <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" publicKeyToken="6595b64144ccf1df" language="*" processorArchitecture="*" />
  </dependentAssembly>
  </dependency>
  </assembly>
----

Je pense que ça doit spécifier au compilateur la classe à utiliser pour les composants standards de Windows. Je vais creuser ça pour tenter de le faire sans passer par ce fichier .RES mais c'est pas gagné.
Il faudrait sans doute creuser dans TXPManifest que je ne possède pas étant toujours sous D6 qui me convient parfaitement. Quant à ce fameux fichier .RES, il n'était pas non plus sur mon disque. On peut donc se demander d'où provient-il???? C'est la grande question mais c'est quand même très fort.

signaler à un administrateur
Commentaire de Technix59 le 07/10/2004 13:21:41

Au fait, je viens de me rendre compte que ces posts n'étaient pas tout frais. Oups....
Celà dit, je suis tombé la dessus par hasard car c'était ma grande question du moment - L'apparence XP en D6.

signaler à un administrateur
Commentaire de Delphiprog le 07/10/2004 19:46:46 administrateur CS

Merci Technix59 pour nous avoir donné le détail du fichier WindowsXp.Res.
Pour préciser tes pensées, la seule indication exploitable par le compilateur de Delphi est qu'il doit lier la ressource WindowsXp.Res à l'exécutable.
Ce sera à Windows XP de décoder les ressources de l'exécutable et de rechercher une ressource au format XML lui indiquant comment il doit afficher les contrôles visuels.
En ce qui concerne le composant TXpManifest livré à partir de Delphi 7, il ne contient aucune propriété.
En déposant ce composant sur une fiche de votre application, l'unité XpMan est ajoutée à la clause uses.
Et que trouve t'on dans cette unité ?
Eh bien simplement la directive suivante :
{$R WindowsXp.res}

C'est tout, rien de plus.
Donc, si vous ajoutez manuellement l'unité XpMan dans une de vos fiches, vous obtiendrez le même résultat au final. Mais vous ne verrez pas le composant TXpMan sur votre fiche en mode conception.

signaler à un administrateur
Commentaire de costello le 07/10/2004 20:51:02

... c'est précisément pour cette raison que l'astuce fonctionne pour toutes les versions de Delphi32

signaler à un administrateur
Commentaire de grandvizir le 09/04/2005 11:33:58

Dans le Zip, il y a une application. Comment avez-vous fait pour qu'elle soit si légère ?

signaler à un administrateur
Commentaire de Delphiprog le 09/04/2005 13:58:46 administrateur CS

Sous Delphi 7, en utilisant les paquets d'exécution, on obtient même un exe de 18432 octets et 430080 sans utilisation de ces paquets.
Moi aussi je suis curieux de savoir comment tu as fait pour obtenir un exe de 169 472 octets.

signaler à un administrateur
Commentaire de grandvizir le 09/04/2005 14:36:57

éh éh!! C'est plus solide encore.... Avec la case à cocher des paquets, on peut faire des EXE de 30ko, pas 180. Mais là, y'a pas ces paquets de Delphi, et Dependency Walker ne montre AUCUN appel spécial à des BPL. C'est un vrai EXE autonome digne de ce nom. J'ai déjà croisé des EXE de cette taille, mais pas moyen de savoir avec quelle version :(

signaler à un administrateur
Commentaire de grandvizir le 21/05/2005 09:57:49

Le forum donne du UPX dans l'air... EXE compressé !

signaler à un administrateur
Commentaire de informatixo le 17/06/2005 17:42:10

Moi aussi je me sers de cette astuce, je précise que je suis avec delphi 7.

Quand j'exécute mon programme sous windows XP pro, il a l'apparence des contrôles XP il n'y a pas de problème.

En revanche, j'ai exécuté mon programme sous windows 2000 pro et là pas de joli contrôles façon XP. (Déception)

Alors j'ai essayé de rajouter le fichier WindowsXP.res dans le dossier qui contient l'exécutable et de le réexécuter mais c'est le même résultat.

Alors est-ce qu'il y a un moyen de retrouver nos jolis contrôles façon XP sur windows 2000 Pro ?

Il est vrai qu'une fois qu'on y a goûté, il est difficile de s'en passer.

signaler à un administrateur
Commentaire de japee le 08/07/2005 02:06:31 administrateur CS

Tout à fait concluant avec Delphi4 pro, l'exécutable tournant sous XP of course...

Merci costello !

(ainsi qu'à l'auteur inconnu du fichier WindowsXp.Res)

P-S: Resource Hacker et eXesCope m'indiquent tous les deux que l'exe fourni dans le zip est en effet compressé.

En compilant sous D4, je passe à peine 314 ko, héhé... ;o)

signaler à un administrateur
Commentaire de josswel le 16/08/2005 11:37:15

Salut
je me demandais seulement les form ont la config xp sous win xp si on utilise xpmanifest mais sous windows est possible ? sans utiliser des composant xpstyle ou du meme genre ?

signaler à un administrateur
Commentaire de josswel le 16/08/2005 11:38:33

salut oui je l'ai sur mon disk dans la lib de borland mais avec xpmanifest pourrait on avoir les meme resultats sous windows ?

signaler à un administrateur
Commentaire de cedricbi le 26/09/2005 19:07:52

Informatixo -> Tu ne peux pas avoir de composants XP avec Win 2000 ! Logique le fichier Manifest (ou plutot la resource contenue dans le .RES) ne contient que la version des composantes (ou un truc du genre) à utiliser : le version, le name et le publicKeyToken de la ligne suivante :
  <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" publicKeyToken="6595b64144ccf1df" language="*" processorArchitecture="*" />

Ainsi il n'est pas possible (à part en créant ses propres composants) d'utiliser les compo styles XP.

signaler à un administrateur
Commentaire de informatixo le 07/10/2005 20:30:40

oki et bien tampis. Merci quand même.

signaler à un administrateur
Commentaire de fanfan51 le 16/11/2006 02:36:04

Slt a tous,

Etant moi même utilisateur de D7, j'ai fait un petit prog il y a un bout de temps.

Apres avoir lu ce post j'ai donc coller un composant XPMan dans mon projet.

Et la surprise le style xp a bien ete appliqué mais j'ai perdus les couleurs de mes panels et autres composants, seul la dbgrid garde ses couleurs.

Si quelqu'un a une solution je le remercie d'avance de m'en faire part

++
ps: désolé pour les fautes je suis pas très doué en français.      

signaler à un administrateur
Commentaire de cedricbi le 18/11/2006 17:03:43

Salut Fanfan51,

Malheureusement, je ne connais pas de solution à ton problème !
Le style XP ne prend pas en compte la couleur de certain composant ainsi que d'autres propriétés. Il n'est donc pas possible de modifier la couleur de certain oomposant en utilisant les composants XP par défauts. Le seul remède est de créer soit même les composants voulus...

Bon courage !

signaler à un administrateur
Commentaire de fanfan51 le 19/11/2006 01:15:58

Slt CEDRICBI

Merci de m'avoir répondu et tu comfirme mes craintes, arff... fait ch... un composant ms si c la seul soluce.

---> en reponse au message
>Salut Fanfan51,
>
>Malheureusement, je ne connais pas de solution à ton problème !
>Le style XP ne prend pas en compte la couleur de certain >composant ainsi que d'autres propriétés. Il n'est donc pas >possible de modifier la couleur de certain oomposant en >utilisant les composants XP par défauts. Le seul remède est de >créer soit même les composants voulus...
>
>Bon courage !
>

:(

signaler à un administrateur
Commentaire de amiedz le 15/03/2007 08:56:18

Merci beaucoup,
C exactement ce que je rechercher , une astuce sans composant à ajouter , ni dll à faire entrer en jeu, c simple et efficace.
bon courage.

signaler à un administrateur
Commentaire de MUSTAPH_A le 21/08/2007 15:48:19

Mais pour quoi ne fonctionne pas avec speedbutton ou bitntn et autre composant

signaler à un administrateur
Commentaire de cedricbi le 04/09/2007 20:43:11

Je pense que c'est parce ce que, le SpeedButton et le BitButton ne sont pas de composants directements intégré par Microsoft, il doivent être en clair, gérés et créés par Delphi lui-même. Et Delphi, lui, ne prend pas en compte les différents thèmes.

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,281 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.