begin process at 2010 03 20 16:57:32
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Trucs & Astuces

 > UTILISER LE STYLE XP DE D1 À D7 (ASTUCE)

UTILISER LE STYLE XP DE D1 À D7 (ASTUCE)


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Trucs & Astuces Niveau :Débutant Date de création :27/02/2004 Vu / téléchargé :9 052 / 1 188

Auteur : costello

Ecrire un message privé
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

Les Membres Club peuvent 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


 Sources du même auteur

Source avec Zip Source avec une capture LECTEUR DE TEXTE AU FORMAT MIRC
Source avec Zip Source avec une capture COPIE DE COULEUR MULTI-FORMAT (UTILITAIRE)
Source avec Zip TZIP: COMPOSANT POUR FICHIERS ZIP/SFX TRÈS FACILE D'ACCÈS
ROUTINES DIVERSES ET UTILES SUR CHAÎNES DE CARACTÈRES

 Sources de la même categorie

FONCTION DE CONVERSION DE MILLISECONDES EN HH:MM:SS:MMM par vyseR
Source avec Zip Source avec une capture UTILISER UNE DLL INCLUSE EN RESSOURCES par Bacterius
Source avec Zip Source avec une capture IMAGE DANS UN TDBGRID par HAFTARIFOUAD
Source avec Zip Source avec une capture [ASTUCE] COMMENT VOIR UN ITEM, D'UNE LISTBOX, TRONQUÉ DANS U... par cirec
Source avec Zip Source avec une capture MESSAGEDLG PERSONNALISÉ par HAFTARIFOUAD

Commentaires et avis

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 :)

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+

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.

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+

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...

Commentaire de Nerolph le 05/03/2004 17:55:47

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

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 ?

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...

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.

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...

Commentaire de michelw le 05/04/2004 12:02:04

Ca ne marche pas avec Windose ME

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)

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

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...)

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 !!!!!!!!!

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

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

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.

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.

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.

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

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 ?

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.

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 :(

Commentaire de grandvizir le 21/05/2005 09:57:49

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

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.

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)

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 ?

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 ?

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.

Commentaire de informatixo le 07/10/2005 20:30:40

oki et bien tampis. Merci quand même.

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.      

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 !

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 !
>

:(

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.

Commentaire de MUSTAPH_A le 21/08/2007 15:48:19

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

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...

Comparez les prix


HTC Magic

Entre 429€ et 429€

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,624 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales