Styl Windows XP

brodny

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

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

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

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.

A nie lepiej dac na forme komponent XPManifest?

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

i co mam z tym zrobić??

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

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?

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?

Jak piszesz o tych stylach, to moze mógłbys napisac jak zrobic screena w Delphi. Na odpowiedz czekam pod mailem [email protected]

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

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.

Ale fajne własnie oto mi chodziło _____

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

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

Bardzo się postarał nasz Dytmaniaczek

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.