Programowanie w języku Delphi » Artykuły

Styl Windows XP

  • 2005-12-20 08:27
  • 16 komentarzy
  • 772 odsłony
  • Oceń ten tekst jako pierwszy
Jak zrobić, aby w naszej aplikacji działały wizualne style z Windows XP? Niestety, nie działają one od razu (nie ma nic za darmo :-) ). Wystarczy jeden pliczek tekstowy wstawiony do zasobów aplikacji i już możemy się cieszyć stylami Windows XP. Utwórz więc plik tekstowy i nazwij go "XpXML.Txt". Powinien mieć on taką treść:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
<assemblyIdentity 
   name="Hacx.Simple.Xp.Resource" 
   processorArchitecture="x86" 
   version="1.1.0.0" 
   type="win32"/> 
<description>Windows Shell</description> 
<dependency> 
   <dependentAssembly> 
      <assemblyIdentity 
         type="win32" 
         name="Microsoft.Windows.Common-Controls" 
         version="6.0.0.0" 
         processorArchitecture="x86" 
         publicKeyToken="6595b64144ccf1df" 
         language="*" 
      /> 
   </dependentAssembly> 
</dependency>
</assembly>


Pola name, version i description możesz zmieniać, natomiast pole publicKeyToken lepiej zostaw w spokoju. Teraz przygotuj plik "XpRes.Rc" (w dowolnym edytorze tekstowym, np. w Notatniku) i uzupełnij go tak:

1 24 "XpXML.txt"

Teraz tylko dodaj zasób do projektu. To 24 jest wspólną liczbą deklarowaną przez Microsoft informującą Windows.Shell, że aplikacja ma mieć Wizualne Style Windows. Teraz tylko skompiluj program i dobrej zabawy!

Łukasz Brodny
Delphi Page
www.delphi.host.sk
[email protected]

16 komentarzy

BoZzDoG 2009-09-05 20:35

Nawet nie trzeba umieszczać komponentu. Wystarczy do listy modułów dodać XPMan i samo przestawi program na wygląd systemowy. Tyle, że z kolorowaniem komponentów jest lipa.

BTW... BitBnt też obsługują styl Windowsowski.

TScripter 2007-11-13 11:24

A nie lepiej dac na forme komponent XPManifest?

maciejplonski 2006-04-11 16:01

RLINK32: Error reading file "C:\Documents and Settings\Maciek\Pulpit\Pisarz\XpRes.rc"

i co mam z tym zrobić??

kabriolet 2006-03-15 14:35

Niestety umieszczenie pliku xml jako *.exe.manifest też nie zamienia
wszystkiego (na przykład biblioteki RX). Może ktoś wie jak zrobić, aby
przyciski z tej biblioteki (np. TSpeedItem komponentu TSpeedBar)
też miały wygląd XP.
Cały czas próbuję znaleźć dokładny opis jak to jest robione w XP, że
kontrolki mają inny wygląd, ale bez powodzenia.
Moim zdaniem są to opcje podczas kreowania kontrolki
CreateWindowEX, ale jakie ???

SeaSoft 2006-01-30 15:07

Te komponenty należą do grupy TGraphicControl i są rysowane przez procedury umieszczone w modułach Delphi, a nie systemu. Nie jest możliwe osiągnięcie takiego efektu, chyba, że zaprogramujecie własną kontrolkę graficzną. Tak zrobiłem buttony do BEU 2.

BTW: Nie wiem tylko, czemu GroupBox pozostaje taki sam. Również jest generowany przez Delphi?

BatSk8 2006-03-11 15:46

Oj ludzie, można zrobić to prościej i zamienić nawet GroupBox, bo on nie jest generowany przez Delphi. Znalazłem taki artykuł:
http://www.bilsoftware.com/cplusplus-aplikacja_bez_formy,_luna-6.html
na samym dole jest jak uzyskać taki efekt innym sposobem. Co prawda artykuł dotyczy C++, ale działa to także w Delphi. Tworzymy plik .manifest tak jak jest tam napisane, a w nim mały kod XML. No i efektem jest zamiana wszystkiego

Venomx 2005-07-25 04:27

Ok. wszystko działa ale są komponenty które dalej pozostają standardowe np. GroupBox, SpeedButton, BitBtn, RadioGroup.
Czy istnieje jakiś sposób aby te komponenty także nabrały nowych barw?

migajek 2003-12-21 13:52

Słuchaj to cosik  nie działa (mam Delphi7) probawalem wszystkiego i nic!

brodny 2003-05-07 09:24

Jak pewnie się domyślacie, w Delphi 7 wystarczy wstawić komponent. I jeszcze jedno: BitButtony, SpeedButtony itp. mają obsługę styli XP - fajnie to wygląda.

AMS 2003-03-03 21:46

Ale fajne własnie oto mi chodziło _____________________________

aZgon 2003-01-11 12:14

No i to że to działa tylko na WIN XP to trzeba dodać na samym początku artykułu ...
Bo ja się nie potrzebnie męczyłem :)

brodny 2003-01-11 14:32

Myślałem, że to jest jasne ;)

Drajwer 2002-12-14 13:10

ja takie cuś zrobiłem i niemogło mi sie programu uruchomić:( więc zrobiłem nazwaprogramu.exe.manifest jak uruchomiłem to działało ! tak mi sie to spodobało że zrobiłem program to takich generowania:P

fujara 2002-10-24 15:54

Bardzo się postarał nasz Dytmaniaczek

maginott 2002-10-16 16:01

Ja pozwole sobie dodac ze takie rozwiazanie dziala tylko na komputerach z zainstalowanym XP i ustawionym stylem graficznym rowniez na XP :)
Dla jasnosci, kiedys na grupie bylo sporo nieporozumien z tego tytulu.