"Windows XP Visual Styles" und VB - ein Traumpaar?
von Ingmar Runge
1. Einleitung
Die Tele-Tubby-Klick-Bunti-Oberfläche von Windows XP. Entweder man mag sie oder man hasst sie - und bleibt doch lieber beim guten alten "Windows Classic"-Design. Tatsache ist allerdings: die meisten Anwender arbeiten mit der Standard-Windows XP-Oberfläche ("Luna"-Theme). Entweder aus Unwissenheit ("Wie, das kann ich ändern?") oder weil sie die verspielten Steuerelemente tatsächlich schön finden.
Auch die Verwendung dieser sogenannten Visual Styles mit VB ist nicht unproblematisch. Diese Kolumne soll dazu anregen, alle, die bisher auf ihre Anwendung verzichtet haben, zum Umdenken anzuregen und denen, die Probleme damit haben, bei der Lösung zu helfen. Denn ich bin der Meinung, dass die XP-Styles bei den Anwendern gut ankommen.
Zuerst werde ich nochmal einen kurzen Exkurs zum Auffrischen Ihres Basiswissens über die XP-Styles und deren Aktivierung geben, bevor die API-Funktionen, die zur Steuerung der Styles dienen, besprochen werden. So richtig "ans Eingemachte" geht es spätestens, wenn es um die Fehlerbehebung geht.
Das funktioniert natürlich alles nur unter Windows XP.
2. Visual Styles - was ist das eigentlich?
Kurz gesagt - "Windows XP Visual Styles" - das ist der umfassende Name für die Verschönerungen (Ansichtssache ;-), die unter Windows XP an Steuerelementen vorgenommen werden können. Die Buttons z.B. werden abgerundet und mit einem MouseOver-Effekt versehen. Aber besser als ich das jemals erklären könnte, tun das die beiden folgenden Abbildungen:
Ein Theme (auch Design genannt) ist ein Satz von Maus-Cursorn, Farben, Hintergrund-Bildern usw., die man per Mausklick einfach systemweit anwenden kann. Zu erreichen ist die Funktion zum Ändern über einen Rechtsklick auf den Desktop und die Wahl des Menüpunktes "Eigenschaften". Ein Theme kann die Visual Styles aktivieren (z.B. "Plex") oder deaktivieren (z.B. "Windows Classic").
3. Los geht's! - XP-Styles in der eigenen Anwendung aktivieren
Wie das geht, können Sie im XP-Styles-Tutorial nachlesen.
4. Alles unter Kontrolle? Teil I - APIs zur Steuerung
-
InitCommonControls
Die erste API-Funktion, die wir hier besprechen, hat nur indirekt etwas mit den XP-Styles zu tun. Sie stellt lediglich sicher, dass die DLL-Datei "Comctl32.dll" geladen ist, die zur Anzeige der XP-Styles unentbehrlich ist. Sie sollte im Form_Load-Event oder in der Sub Main aufgerufen werden.
Declare Sub InitCommonControls Lib "comctl32.dll" ()
Private Sub Form_Load() Call InitCommonControls ' ... End Sub
-
ActivateWindowTheme / DeactivateWindowTheme
Es folgen zwei APIs, mit denen man die XP-Styles für einzelne Controls ein- oder ausschalten kann.
Declare Function ActivateWindowTheme Lib "uxtheme" _ Alias "SetWindowTheme" ( _ ByVal hWnd As Long, _ Optional ByVal pszSubAppName As Long = 0, _ Optional ByVal pszSubIdList As Long = 0) As Long Declare Function DeactivateWindowTheme Lib "uxtheme" _ Alias "SetWindowTheme" ( _ ByVal hWnd As Long, _ Optional ByRef pszSubAppName As String = " ", _ Optional ByRef pszSubIdList As String = " ") As Long
Der Aufruf gestaltet sich recht einfach. Bei bestimmten Controls wie z.B. der Coolbar kann es allerdings Probleme geben. Dazu später mehr.
' Deaktivieren: DeactivateWindowTheme Command1.hWnd ' Aktivieren: ActivateWindowTheme Command1.hWnd
-
IsThemeActive
Eine weitere, noch relativ unbekannte API-Funktion dient dazu, festzustellen, ob im Moment ein Theme angewendet ist, welches Visual Styles verwendet (z.B. "Windows XP" oder "Plex") oder eines, das keine benutzt (z.B. "Windows Classic").
Declare Function IsThemeActive Lib "UxTheme.dll" () As Boolean
If IsThemeActive Then MsgBox "Theme mit Styles!", vbInformation Else MsgBox "Theme ohne Styles!", vbInformation End If
-
IsAppThemed
Noch eine unter VB relativ unbekannte API-Funktion dient dazu, festzustellen, ob die Anwendung, von der die API aufgerufen wird, Visual Styles verwendet. Das kann natürlich nur sein, wenn eine Manifest-Datei vorhanden ist und global ein Theme mit XP-Styles aktiviert ist.
Declare Function IsAppThemed Lib "UxTheme.dll" () As Boolean
If IsAppThemed Then MsgBox "Anwendung mit Styles!", vbInformation Else MsgBox "Anwendung ohne Styles!", vbInformation End If
-
EnableTheming
Eine absolut hammerharte Funktion, die es erlaubt, das Theming systemweit ein- oder auszustellen! Soll heißen, man kann die Visual Styles systemweit so an- oder abstellen, wie man das in der eigenen Anwendung mit (De)activateWindowTheme machen kann. Das geht allerdings nur, wenn bereits ein Theme mit XP-Styles aktiviert ist.
Declare Function EnableTheming Lib "UxTheme.dll" (ByVal b As Boolean) As Long
EnableTheming False
5. Alles unter Kontrolle? Teil II - Fehler & Abhilfe
Sie finden hier eine Auflistung aller mir bekannten Fehler, die bei der Verwendung von Visual Styles auftreten können.
Problem | Abhilfe |
---|---|
Beim Starten der kompilierten EXE-Datei ertönt ein Piepton und die Anwendung beendet sich. | In der Startform ein (wahleise unsichtbares) Steuerelement (z.B. ProgressBar) der "Microsoft Windows Common Controls" Version 5.0 oder 6.0 mit Z-Order 0, also über allen anderen Controls, einfügen. Startet die Anwendung über Sub Main, hier InitCommonControls aufrufen. |
Ein Button auf einem Frame sieht merkwürdig aus. | Den Button in einer Picturebox und diese auf dem Frame platzieren. Es können natürlich auch noch mehr Buttons und andere Controls in der PictureBox sein. |
Ein OptionButton auf einem Frame sieht merkwürdig aus. | Den OptionButton in einer Picturebox und diese auf dem Frame platzieren. Es können natürlich auch noch mehr OptionButtons und andere Controls in der PictureBox sein. |
Eine Checkbox auf einem Frame sieht merkwürdig aus. | Die Checkbox in einer Picturebox und diese auf dem Frame platzieren. Es können natürlich auch noch mehr Checkboxes und andere Controls in der PictureBox sein. |
Kurztastenunterstreichungen werden nicht angezeigt (auch nicht nach dem Druck auf die Alt-Taste). | Mir ist keine bekannt. |
Wenn man ein WebBrowser-Control in einer Form mit XP-Styles hat, sind die Formular-Elemente in der angezeigten Webseite nicht "gestylt". | Ergänzung am 01.08.2008 durch Frank Schüler: Option Explicit Private Declare Function LoadLibrary Lib "kernel32" _ Alias "LoadLibraryA" ( _ ByVal lpLibFileName As String) As Long Private Declare Function FreeLibrary Lib "kernel32" ( _ ByVal hLibModule As Long) As Long Private hModule As Long Private Sub Form_Initialize() hModule = LoadLibrary("explorer.exe") End Sub Private Sub Form_Terminate() If hModule Then Call FreeLibrary(hModule) End If End Sub |
Benutzt man in einer Form Regions, werden die XP-Styles deaktiviert. | Mir ist keine bekannt. |
Wenn man den Buttons einer vertikal ausgerichteten Common Controls 5.0-ToolBar erst im Form_Load-Ereignis Images zuweist, ist in der kompilierten EXE-Datei entweder nur der erste Button zu sehen oder die Toolbar ist plötzlich horizontal ausgerichtet. | Vor dem Zuweisen der Bilder per Toolbar1.Buttons(1).Image = 1die Prozedur Me.Show aufrufen. |
Wenn man ein Frame auf einem TabStrip platziert, führt das zu unschönen "Effekten". | Entweder zum Erstellen des Frames die Frame-Ersatz-Klasse von Christoph von Wittich benutzen oder mit Tipp 575: Frame transparent machen den Frame transparent machen. Alternativ kann man auch eine auf den Pixel genau ausgerichtete PictureBox verwenden. |
Man sieht die XP-Styles nur in der fertigen EXE, nicht in der IDE. | Folgenden Text als "VB6.exe.manifest" im VB98-Verzeichnis speichern: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity version="6.0.89.88" processorArchitecture="X86" name="MicrosoftCorporation.VisualBasic.VisualBasic" type="win32" /> <description>Visual Basic</description> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="X86" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly> </dependency> </assembly> Zu beachten ist dabei allerdings, dass so leider keine Farben mehr in der Palette im Eigenschaften-Fenster in der IDE mehr zu sehen sind. Man kann allerdings noch auf Gut Glück einfach mal auf der Palette rumklicken, vielleicht trifft man ja die richtige Farbe. |
Will man die Visual Styles für ein CoolBar-Control ausschalten, klappt das mit DeactivateWindowTheme CoolBar1.hWnd nicht. | Anstelle muss man folgenden Code benutzen: Declare Function DeactivateWindowTheme Lib "uxtheme" _ Alias "SetWindowTheme" ( _ ByVal hWnd As Long, _ Optional ByRef pszSubAppName As String = " ", _ Optional ByRef pszSubIdList As String = " ") As Long Declare Function IsThemeActive Lib "UxTheme.dll" () As Boolean Declare Function FindWindowEx Lib "user32" Alias _ "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, _ ByVal lpsz1 As String, ByVal lpsz2 As String) As Long Sub UnstyleCoolBar(CB As CoolBar) Dim ll& If IsThemeActive Then ll = FindWindowEx(CB.hWnd, 0&, "ReBarWindow32", "") If ll > 0 Then DeactivateWindowTheme ll End If End Sub Ruft man das im Form_Load-Event auf, geht es allerdings auch nicht. Auch der vorherige Aufruf von Me.Show zeigt keine Wirkung. Man muss den Aufruf also noch durch einen Timer verzögern (100 bis 500 ms). |
Beim Starten der kompilierten EXE-Datei erscheint folgende Fehlermeldung: Diese Anwendung konnte nicht gestartet werden, weil die Anwendungskonfiguration nicht korrekt ist. | Die Manifest-Datei neu erstellen. Bestimmte Zeichen (z.B. Punkte, "&"-Zeichen) dürfen im Programm-Name und in den anderen Parametern nicht vorkommen. |
Ein CommandButton mit .Style = 1 ist ohne XP-Styles. | Auf Edanmo's VB Page gibt es in der Rubrik "Source Code" unter Using XP style in Graphical buttons einen (ziemlich komplexen) Quellcode, um das abzustellen. (Anmerkung der Redaktion: Dieses Beispiel funktionierte bei Tests nicht fehlerfrei, sodass von einer Verwendung Abstand genommen werden sollte.) |
6. Fazit
Auf lange Sicht gesehen werden die Visual Styles wohl "überleben". Das zeigt auch die große Fangemeinde der Themes. Kein Theme auf den Fan-Seiten im Internet kommt ohne Visual Styles aus. Auch wenn Microsoft in seinen Office-Anwendungen lieber "das Rad neu erfindet", siehe die Office XP-Menüs und die 3D-Toolbars im ganz neuen Office 2003.
Selbst wenn "Luna" (das Standard-Windows XP-Theme) untergeht, die Styles leben weiter! Die meisten Anwender finden eben Gefallen daran. Andererseits stört es scheinbar auch niemanden, wenn in Office darauf verzichtet wird. (Anmerkung der Redaktion: Microsoft Office 2003 verwendet z.T. "gestylte" Controls.)
Meine Meinung ist, dass es doch wirklich doch kein Problem ist, eine Manifest-Datei, den InitCommonControls-Aufruf und die Common Controls 5.0 in die eigenen Projekte einzubinden. Dort, wo die eingeschränkten Fähigkeiten der Common Controls 5 stören, kann man immer noch die der Version 6 benutzen.
Schlussendlich muss aber immer noch jeder für sich selbst entscheiden, ob er "XP-gestylte" Anwendungen programmieren möchte.
Ihre Meinung
Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.
Archivierte Nutzerkommentare
Klicken Sie diesen Text an, wenn Sie die 51 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.
Kommentar von Unsubscribe am 23.09.2011 um 20:47
Wie kann ich mich aus der Benachrichtigungsfunktion per Mail hier wieder austragen?
Kommentar von Jens am 23.09.2011 um 19:42
Problematik hier wurde noch nicht besprochen:
http://www.vbaccelerator.com/home/vb/code/libraries/xp_visual_styles/using_xp_visual_styles_in_vb/article.asp
Kommentar von Lothar Geyer am 09.12.2009 um 21:40
Ich habe noch ein Darstellungsproblem gefunden. Wenn ich in einem Frame einen anderen Frame platziere, wird dessen Caption in einer größeren Schrift und fett dargestellt. Das führt dann dazu, dass nicht die ganze Caption sichtbar ist. Ich hatte auch schon den Fall, dass eine Frame-Caption normal und größer/fett angezeigt wurde.
Ist das bekannt und gibt es dazu eine Lösung?
Kommentar von Felix.S am 15.02.2009 um 20:34
Gibt es das nicht auch für Vista?
Kommentar von TiKu am 27.11.2008 um 19:19
Nachtrag: InitCommonControls rufst du aber auf? Und zwar so zeitig wie möglich, also in Sub Main oder Form_Initialize().
Kommentar von TiKu am 27.11.2008 um 19:18
Keine Ahnung was da schiefläuft.
ProgressBar mit Vista-Support: http://www.timosoft-software.de/index.php/downloads/progressbar/
Kommentar von Frank S. am 27.11.2008 um 19:01
Hallo TiKu und Florian,
fettes Merci für die vielen Lösungen. Das mit der PictureBox funktioniert und Löst nebenbei auch mein Problem, dass die ganzen Labels so geflackert haben,
wenn ich die Maus über TextBoxen bewegt habe.
Ich hab´ allerdings noch einen: das mit dem schönen Statusbalken aus Common Controls 5.0 (SP2) sprich "comctl32.ocx" funktioniert bei mir unter Windows Vista leider nicht (Fehler beim Versuch den Dialog zu starten).
Wenn´s dafür auch ne Lösung gibt, gebe ich bei nächster Gelegenheit einen Drink aus ;-))
Vielen Dank und Gruß
Frank
Kommentar von TiKu am 27.11.2008 um 17:50
Ja, einfach unter Windows 2000 dieses API nicht aufrufen. Windows 2000 kennt keine Themes und bietet entsprechend keine API-Funktionen dafür an.
Die Themes für einzelne Controls abschalten, ist übrigens ziemlicher Murks finde ich. Das Problem mit den Beschriftungen der OptionButtons lässt sich auf 2 Arten lösen:
1) Die OptionButtons in einen Container packen, der ein Fenster-Handle hat, z. B. in eine PictureBox
2) http://www.timosoft-software.de/downloads/buttoncontrols/
Kommentar von Florian Rittmeier am 27.11.2008 um 17:49
Hallo Frank,
da Windows 2000 keine Visual Styles kennt und damit auch die entsprechenden Bibliotheken nicht installiert hat, musst Du vor dem Aufruf der Funktion DeactivateWindowTheme prüfen, ob Du auf Windows XP oder neuer läufst.
Florian
Kommentar von Frank S. am 27.11.2008 um 17:43
Hallo,
ich habe mit Hilfe der Tipps von ActiveVB die XP-Styles um gesetz, das Problem mit den nicht sichtbaren Beschriftungen der Optionsgruppen habe ich dabei mit der API-Funktion DeactivateWindowTheme umgangen.
Unter XP funktioniert das bei mir soweit auch ganz gut.
Unter Windows 2000 bekomme ich allerding die Fehlermeldung "Laufzeitfehler 53 Datei uxtheme nicht gefunden".
Kennt dafür jemand eine Lösung?
Danke und Gruß
Frank
Kommentar von André H. am 22.08.2008 um 13:30
Das Problem hab ich auch mit meinem DTPicker aus der Version 6...Was kann man dagegen tun? Das stört gewaltig die Optik
Kommentar von am 06.06.2008 um 13:48
das klappt nur mit version 5 common controls oder?
version 6 controls (z.b. das listview) wird wie gehabt ohne style angezeigt bei mir
Kommentar von Wolfgang am 07.11.2007 um 23:36
Der Artikel ist sehr interessant. Ich habe die XP-Styles aktiviert mittels einer Manifest Datei. Ich verwende Check-Boxes die zunächst schwarz erschienen. Der Tipp mit dem Imagecontrol löste dieses Problem. Was aber als Problem bestehen blieb ist, dass sich die Schriftfarbe ( .ForeColor )nicht mehr einstellen läßt. Entferne ich das Manifest, funktioniert die Einstellung. Kennt jemand dafür eine Lösung?
Vielen Dank im Voraus.
Kommentar von Christian am 26.09.2007 um 21:26
Mit VB6 erstellten PRG´s wird die Schrift der Menu-Leiste (also Datei Ansicht usw)
immer mit weiß unterlegt. Nur die Schriftblöcke, der Rest nicht.
Sieht einfach nicht so schön aus.
Ich hatte gedacht, dieses ändert sich mit dem aktivieren des
XP-Styles. Leider nicht.
Kann man dieses auch ändern ?
Kommentar von Simon Frankenberger am 24.08.2007 um 22:39
Danke für den guten Tip, funktioniert einwandfrei ;)
Kommentar von ujangcahya am 08.02.2007 um 08:57
vb6 xpform
Kommentar von nic4x4 am 31.03.2006 um 21:43
echt gute Tipps hier. Bin eben bei der Listbox nicht weitergekommen. Mal gucken ob es mit diesen Lösungen klappt.
Kommentar von John Daff am 30.12.2005 um 20:30
Hallo, ich bin eigentlich Delphi Programmierer, aber ich möchte gerne wissen, wie man Selber solcher Styles programmiert (z.B. winamp, oder ICQ) die haben ihren eigenen
Style. Die dialoge basieren auf normaler Resource-Komponenten
(Standard Dialoge). Sie haben wie gesagt Ihren eigenen Style
ich möchte nur Wissen wie das Funktioniert.
mfg.John Daff
Kommentar von slickwilly2000 am 20.12.2005 um 08:53
Aufpassen!
Kein Scherz! Die Größe der Assembly-Datei muß durch 4 teilbar sein, wenn ihr diese mit dem Resourcen-Compiler kompiliert und dann ins Projekt einfügt. Ansonsten startet die Anwendung mit einem Fehler.
Keine Ahnung wieso, hab ich im Internet irgendwo aufgeschnappt und es stimmt!
Kommentar von Timo Kunze am 06.12.2005 um 01:56
"Kurztastenunterstreichungen werden nicht angezeigt"
Hab dafür ne Lösung, welche einen Keyboard-Hook und WM_CHANGEUISTATE nutzt. Infos gibts auf Anfrage per Mail (vll. kann ich mich auch mal zum Schreiben eines Tipps durchringen).
Was die Darstellungsfehler beim Frame/TabStrip angeht: Die habe ich ebenfalls gelöst (weitestgehend ohne wilde Hacks). Auf meiner Website wird es demnächst XP-fähige Button Controls geben (Unicode können sie auch); ein TabStrip-Control ist ebenfalls in Arbeit.
Die Darstellungsfehler liegen übrigens zum Großteil nicht direkt an Visual Basic, sondern an der Theming-Engine bzw. den nativen Controls selbst. Ich hatte beim Schreiben der Controls (in C++ mit ATL) mit den gleichen Problemen zu kämpfen.
Kommentar von Andreas am 10.07.2005 um 21:41
Hallo Florian,
danke fuer den Tipp.
Ja, so ist. Ich verwende die COM dll von einer Abortext-Epic Anwendung aus. Epic hat eine Script-Sprache namens ACL, und man kann damit auch ActiveX dlls aufrufen. Ich hatte erst einen Test-Client fuer meine dll geschrieben, und fuer diesen kein Manifest erstellt..
Es funktioniert nun mit Epic und meiner Anwendung unter XP.
Viele Gruesse
Andreas (zur Zeit in Kanada - deshalb keine deutschen Umlaute :) )
Kommentar von Florian Rittmeier am 05.07.2005 um 23:23
Hallo Andreas,
ich behaupte mal, dass sie für die gesammte Anwendung aktiviert seien müssen. D.h. Manifest für die EXE und deine DLL muss (sofern dies die EXE nicht tut) die entsprechende InitRoutine aufrufen.
Gruß Florian
Kommentar von Andreas am 29.06.2005 um 10:46
Hi,
weiß jemand, wie man Visual Styles in einer VB ActiveX DLL aktivieren kann, die Dialoge anzeigt?
Viele Grüße,
Andreas
Kommentar von Colin Finck am 05.05.2005 um 08:52
Hallo!
Nach langem Suchen habe ich einen funktionierenden Code gefunden, um einen normalen "ungestyleten" Button mit Style = 1 XP-Styles hinzuzufügen.
Der Code findet sich hier: http://www.planetsourcecode.com/vb/scripts/ShowCode.asp?txtCodeId=49970&lngWId=1
Mit freundlichen Grüßen!
Colin Finck
Kommentar von Florian Rittmeier am 21.04.2005 um 21:03
Hello again Dan,
I just found an example which should fit your needs.
Just download http://www.activevb.de/tutorials/tut_xpstyles/downloads/winxpstyles.zip
expand it, locate "winxpstyles.zip" (from within the zip downloaded) and then test the two projects in it. One of it (not MyApp) uses the TabStrip as shown in our screenshots. You have to compile the project before it works. I'm sure this should help you to solve your problem.
If you need further assistance, feel free to e-mail me. I would then explain you how to use our forum. A lot of our visitors are able to answer you questions in english.
Greetings
Florian
Kommentar von Florian Rittmeier am 21.04.2005 um 20:49
Hello Dan,
I suggest to post in our forum. I'll write you how to use it in a seperate e-mail.
Greetings Florian
------------------
admin at ActiveVB
Kommentar von Tabstrip control am 21.04.2005 um 16:58
Hello. I hope you understand English because I don't know German. I can not get the TabStrip control to display with the XP theme the way it does on your web page. Do you have any suggestions?
Thanks,
Dan Hite
Kommentar von Florian Gerlach am 17.10.2004 um 12:01
Problem:
Kurztastenunterstreichungen werden nicht angezeigt (auch nicht nach dem Druck auf die Alt-Taste).
Lösung:
Rechtsklick auf Desktop, Eigenschaften anklicken. Zu Darstellung wechseln, auf Effekte klicken und 'Unterstrichene Buchstaben für Tastaturnavigation ausblenden (mit Alt-Taste einblenden)' deaktivieren.
Gruß
F. Gerlach
Kommentar von Florian Rittmeier am 17.09.2004 um 19:49
Hallo Majid,
Du kannst die Visual Styles nicht Microsoft Windows ME verwenden. Für dieses Betriebssystem werden sie nicht unterstützt.
Gruß Florian
Kommentar von Majid Mehrafza am 12.09.2004 um 16:11
was wenn ich kein XP habe? denn mein Betriebssystem ist ME was sollte ich tun?
Kommentar von Manfred R. Bihy am 26.08.2004 um 18:23
Hallo!
Analog zu Stanislav Okhvat habe ich das Problem, dass die Controls CheckBox, Optionbutton und Button keine Focus Rechtecke mehr gezeichnet bekommen. Daher ist es bei der Bedienung mit der Tastatur schwer sich in einem Formular zu orientieren. Hat jemand dafür eine Lösung?
Kommentar von marco cantù am 19.07.2004 um 17:18
I have one question for you! Do you know how i can enable xp style via VB6? How I can load the luna theme inside of classic theme by VB6?
In few words, i want to do the same as We obtain when I run the control panel, select the right theme and press the Apply button. I want to do this utilizing VB6!!
Tahnk you in advance.
Kommentar von Dennis Lassiter am 07.07.2004 um 14:40
@HMS & @Franz Mey:
Ich habe endlich eine Lösung gefunden:
Auf jedem Frame eine PictureBox ohne Rahmen als Child platzieren. Darauf dann den Inhalt.
bye,
Dennis
Kommentar von Franz Mey am 20.06.2004 um 12:33
Kann da nur HMS zustimmen, dass das Formular, besonders bei Frames wird das deutlich, wenn man beispielsweise über einen Button in diesem Frame fährt, dann flackert das so.
nutze visual basic 6
Habe leider noch keine passende Lösung für dieses Problem gefunden. :-(
Grüße
Franz
Kommentar von Steffen am 25.05.2004 um 20:42
Weiß einer, ob man das RTF-Element von MS auch mit einem Manifest ausstatten kann.
P.S.
Die Frame-Ersatz-Klasse von Christoph von Wittich hat einen kleinen Nachteil. Man kann die Hintergrundfarbe nicht ändern (Oder mir ist kein Weg bekannt - SetBKColor) geht nicht.
Da unsere SW sowohl auf Win2000 wie XP läuft benötigen wir diese Feature.
Kommentar von Michael Zapf am 24.05.2004 um 17:02
Hallo Martin,
wenn du VisualStyles in VB.NET verwenden willst, versuche es mit "Application.EnableVisualStyles" in der New-Prozedur, oder mache es einfach wie oben beschrieben, mit einer Manifestdatei.
Wichtig ist auf jeden Fall, dass die Flat-Style-Eigenschaft bei allen (möglichen) Controls auf "System" steht.
Kommentar von Ingmar Runge am 30.04.2004 um 14:30
Hier noch ein Kommentar von Konrad Rudolph zu Problem 8:
> Ich kenne keine Abhilfe, aber Ersatz: über das Menü
> Ansicht -> Farbpalette kommt man an eine alternative
> Farbpalette heran, mit der man Controls färben kann.
Kommentar von Martin Urner am 04.04.2004 um 18:20
Hi,
kann mir jemand sagen wie ich die XP-Styles in VB.net einbinden kann?
Kommentar von HMS am 19.03.2004 um 20:48
Die Formularoberfläche wird zwar anfänglich korrekt dargestellt, flimmert aber bei der Mausbewegung. (ähnlich dem Effekt einer lange dauernden Aufrufung der "Refresh"-Anweisung)
Wie kann man da Abhilfe schaffen?
Kommentar von Stanislav Okhvat am 25.02.2004 um 13:43
Hi!
Thanks for the article. I actually found it while looking for a solution to one particular problem I found: control focus under XP themes. I am speaking about keyboard focus rectangle normally drawn around buttons, option buttons, checkboxes, tabstrip tabs, etc. The very first (main) form of a themed VB application is fine: all controls have focus rectangle. However, all other windows do not have this rectangle so it's very difficult to move around with one's keyboard. This problem appears both when the XP theme is in effect, and when a standard (Win2000) look is applied. When I remove the manifest, everything becomes fine. I use InitCommonControls in Main so I am following all the guidelines.
I tried to theme some pre-xp commercial applications and they also exhibit this problem on all forms except the main form. So VB shouldn't be at fault. Have you noticed this problem and if yes, do you have a solution?
Thanks,
Stanislav
Kommentar von Ingmar Runge am 24.02.2004 um 16:10
Hi!
Noch eine mögliche Problem-Lösung. Und zwar für das Problem "Beim Starten der kompilierten EXE-Datei ertönt ein Piepton und die Anwendung beendet sich."
Benutzt man eine ActiveX-DLL oder ein OCX kann es sein, dass dieses nicht registriert ist. Einfach registrieren und schon läuft es.
Greetz
Ingmar
Kommentar von Diego Gonzalez am 14.01.2004 um 19:28
Estoy Interesado
Kommentar von Ingmar Runge am 03.01.2004 um 10:19
Hi!
Ich habe eine Lösung für das Problem "Wenn man ein WebBrowser-Control in einer Form mit XP-Styles hat, sind die Formular-Elemente in der angezeigten Webseite nicht gestylt" gefunden!
Man muss einfach nur folgende Zeile in den HEAD der HTML-Seite setzen:
<META HTTP-EQUIV="MSThemeCompatible" CONTENT="Yes">
Kommentar von Dennis am 18.12.2003 um 19:03
Ich hatte das Problem, dass ich trotz mehrmaligem Erstellen der Resource- und Manifest-Dateien immernoch den Fehler mit dem "Konfigurationskonflikt" bekam.
Lösung: Die Dateigröße der Manifest-Datei muss ein ganzzahliges Vielfaches von 4 sein, damit es funktioniert!
Gruß, Dennis
Kommentar von Martin Enke am 23.11.2003 um 18:08
Für das Problem ".style=1" habe ich Usercontrols geschrieben
Download:
http://www.enke-software.de/support/ucGraphicButton.zip
MfG
Martin
Kommentar von ernesto perez am 14.11.2003 um 20:44
do you found one function for changing style for datacombo component?
this articule is very useful
thanks
Kommentar von Anton Hartl am 03.11.2003 um 20:21
Hallo!
Ist es möglich Programme in vb.net mit dem Office 2003 Look zu erstellen? Was muss ich dazu tun? Gibt es da eine eigene Manifest Datei?
Danke!
Kommentar von syed bilal hassan am 02.11.2003 um 17:45
i need this object please......
Kommentar von Arnout am 14.10.2003 um 10:36
Great collection of tips!
Very worth the reading.
I was using the manifest in a resource file and used the common controls v6 and now I switched back to common controls 5 and the application is now looking like it was meant to be.
Arnout;
Kommentar von Enrico Hahn am 11.10.2003 um 19:09
Unter VisualBasic .NET 2003 ist das da in Verbindung mit dem Framework 1.1 alles nicht mehr nötig da reicht das hier vollkommen aus:
Application.EnableVisualStyles()
Diese Codezeile sollte in der Sub New der Form stehen. Die FlatStyle-Eigenschaft muss jetzt noch auf System gesetzt werden, und Fertig.
Kommentar von daydreamer am 08.10.2003 um 15:50
...wer den xpButton trotz seinem Win98
benutzen will, der kann ihn
auf www.pkworld.de downloaden.
(Chameleon Button)