Jak mám v Delphi 7 nastavit, aby obyčejné buttony vypadaly ve Win XP "XP style"? A ne jako obyčejné hranaté tlačítka? Jde to nějak nebo je na to potřeba zvláštní komponenta?
Printable View
Jak mám v Delphi 7 nastavit, aby obyčejné buttony vypadaly ve Win XP "XP style"? A ne jako obyčejné hranaté tlačítka? Jde to nějak nebo je na to potřeba zvláštní komponenta?
V Delphi7 je na to komponenta, už nevim jaxe přesně menuje, ale je někde na konci Standard/Advanced nebo Windows.
Ta komponenta se jmenuje XPmanifest. Stačí jí vložit do formuláře a je to. Funguje to ale jenom pod XP.
Obecně stačí vytvoři soubor program.exe.manifest a ten umístit do stejného adresáře jako program.exe... Tohle pak funguje jak pro Delphi, tak pro prorgramy v C/C++, C# a podobně.. Obsah stačí obšlehnout z nějakého jiného manifestu (nějaké jsou myslím v adr. Windows/System32)...
Konecne uz viem na co je subor *.manifest
nevo staci pridat do uses Xpman, nebo tak nejak ...
Zkoušel jsem to v tom C#, ten manifest soubor jsem pojmenoval stejně jako project ale nějak to nefunguje ???Citace:
Původně odeslal Anduril
Musí se to jmenovat stejně jako exe soubor...tzn napriklad mujprogram.exe.manifest a obsah manifestu vypadá asi takto:
V C# (resp. Windows Forms) je důležité nastavit vlastnost FlatStyle ovl. prvků na "System" ...Kód:<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly
xmlns="urn:schemas-microsoft-com:asm.v1"
manifestVersion="1.0">
<assemblyIdentity
name="MujProgram"
processorArchitecture="x86"
version="1.0.0.0"
type="win32"/>
<description>program</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="x86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
Paráda, tak takhle to funguje. A jde nějak nastavit aby ve Visual Studiu byla jako výchozí hodnota FlatStyle "System"? A nejde ten manifest soubor nějak "zakompilovat" do toho .exe? Znám totiž spoustu aplikací kde tento manifest není a přesto jsou ve stylu XP
EDIT: v helpu jsem se dočetl že to jde přidat jako resource do aplikace. Ale nepíšou tam jak :?
Stačí přidat do resource souboru něco ve stylu
(C style resource; u C# jsem resource zatím nijak nezkoumal)
1 24 "Mujprogram.exe.Manifest"
Nebo docela dobře se to dělá v Resource Hackeru...otevřeš si exáč a dáš add new resource z menu Action. Vybereš manifest a jako resource type dáš 24 a jako name dáš 1, language necháš prázdn. Add resource a uložit ;)
Tak ta vychytávka s Resource Hackerem mi nějak nefunguje :? a problém s resource v C# je v tom, že nevím jak ho mám do toho projektu přidat. V Céčku je to jasné, ale tady jsem nic takového nenašel
Kua, spletl jsem se...typ má být 24 samozřejmě...jinak jsem to testoval a funguje mi to...Citace:
Původně odeslal Dani Filth
A tady jsem ještě spíchnul krátký kód na zapnutí System FlatStyle pro všechny kontroly, co to podporují...moc jsem to netestoval, ale mělo by to fungovat....prostě to hodíš např. do nějakého Initu formuláře a jedem :)
Kód:foreach(Control c in this.Controls) {
Type t = c.GetType();
System.Reflection.PropertyInfo pi = t.GetProperty("FlatStyle");
if(pi!=null) {
pi.SetValue(c, FlatStyle.System, null);
c.Refresh();
}
}
No paráda :idea: funguje to! :-) i ten Resource Hacker i ten kód, díky moc! A nevěděl bys ještě jak přidat ten resource soubor do C# projektu? Je to přece jen pohodlnější :-)
Hmmm, to fakt netuším. Já používám SharpDevelop a ten resource editor co tam je, tak ten toho moc neumí. Já dávám ten manifest spolu s exe souborem, neřeším to :)Citace:
Původně odeslal Dani Filth
OK díky moc :wink: