AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

abfragen, ob XPman eingebunden ist

Ein Thema von MacGuyver · begonnen am 5. Dez 2017 · letzter Beitrag vom 5. Dez 2017
Antwort Antwort
Benutzerbild von MacGuyver
MacGuyver

Registriert seit: 9. Sep 2003
Ort: Wildeshausen
293 Beiträge
 
Turbo Delphi für Win32
 
#1

abfragen, ob XPman eingebunden ist

  Alt 5. Dez 2017, 09:41
Moin Leute

Ich konnte dazu leider nichts passendes finden. Wie frage ich ab, ob die Unit "XPman" eingebunden ist?
In manchen Fällen muss man dann etwas anderes machen. Beispiel: Ein Label mit anderer Hintergrundfarbe. Mit Manifest möchte ich ein Panel dahinter packen, ParentBackGround = False und mit der gewünschten Farbe. Ohne XPman brauche ich das nicht.
Englisch eine Weltsprache? Zu kompliziert und der nahe Osten würde Englisch als Pflichtweltsprache nicht akzeptieren.
IDO wäre genau das Richtige: http://forum.idolinguo.de/index.php oder www.idolinguo.de
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.169 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: abfragen, ob XPman eingebunden ist

  Alt 5. Dez 2017, 10:05
XPMan ist doch schon längst wieder hinfällig.
Du musst abfragen ob die Anwendung/das Control gethemed ist.
Vermutlich am einfachsten mit der Entsprechenden WinAPI-Methode: https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.934 Beiträge
 
Delphi 12 Athens
 
#3

AW: abfragen, ob XPman eingebunden ist

  Alt 5. Dez 2017, 10:09
Vielleicht hilft dir ThemeServices.ThemesEnabled aus der Unit Themes.pas hier weiter.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von MacGuyver
MacGuyver

Registriert seit: 9. Sep 2003
Ort: Wildeshausen
293 Beiträge
 
Turbo Delphi für Win32
 
#4

AW: abfragen, ob XPman eingebunden ist

  Alt 5. Dez 2017, 10:21
Danke für die Antworten.

IsAppThemed gibt mir immer True zurück, auch wenn XPman nicht eingebunden ist. Uwes Lösung funktioniert.
Englisch eine Weltsprache? Zu kompliziert und der nahe Osten würde Englisch als Pflichtweltsprache nicht akzeptieren.
IDO wäre genau das Richtige: http://forum.idolinguo.de/index.php oder www.idolinguo.de
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: abfragen, ob XPman eingebunden ist

  Alt 5. Dez 2017, 10:56
XPMan wurde nur bei älteren Delphiversionen benötigt.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.011 Beiträge
 
Delphi 12 Athens
 
#6

AW: abfragen, ob XPman eingebunden ist

  Alt 5. Dez 2017, 11:17
Man könnte notfalls auch die Version der "CommonControls" prüfen, bzw. ob bestimmte Features vorhanden/aktiv sind.

PS: XP-Manifest ist nicht gleich XP-Manifest.
Es gibt mehrere Teile innerhalb der Manifest-Ressource und nur ein winziger Teil kümmtert sich im die Anzeige. (hier ob die alten oder die neuen CommonControls verwendet werden sollen, was sich nicht nur auf die Anzeige, sondern vorallem auch verfügbare Funktionalitäten und die verwendete API bezieht)

Zitat:
XPMan wurde nur bei älteren Delphiversionen benötigt.
Und die zugehörige TXPManifest-Komponente war auch voll der Fail. (war nur dafür da die Unit "automatisch" einzubinden, aber entfernen tat sie diese Unit nie nicht wieder)

IsAppThemed gibt mir immer True zurück, auch wenn XPman nicht eingebunden ist.
Wo/Wann hast du diese Funktion aufgerufen?

Die Remarks in MSDN-Library durchsuchenIsAppThemed hast du gesehn?
Die Application kann die Funktionalitäten haben, aber sie müssen nicht aktiv sein.
Also mindestens IsAppThemed and IsThemeActive .
Delphi-Quellcode:
{function TThemeServices.GetThemesEnabled: Boolean;
begin
  Result := FThemesAvailable and FUseThemes and FNewComCtrls;
end;}


function TThemeServices.GetThemesEnabled: Boolean;
begin
  Result := (GetModuleHandle('uxtheme.dll') <> 0) // FThemesAvailable
    and (IsAppThemed and IsThemeActive) // FUseThemes
    and (GetFileVersion('comctl32.dll') >= {ComCtlVersionIE6}$00060000); // FNewComCtrls
end;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 5. Dez 2017 um 11:33 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.169 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: abfragen, ob XPman eingebunden ist

  Alt 5. Dez 2017, 13:27
Danke für die Antworten.

IsAppThemed gibt mir immer True zurück, auch wenn XPman nicht eingebunden ist. Uwes Lösung funktioniert.
Bei dir steht noch TurboDelphi als verwendet Version. Dort gab es das doch noch nicht.
Mit neuen Delphis ist das natürlich die zu verwendente Lösung.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von MacGuyver
MacGuyver

Registriert seit: 9. Sep 2003
Ort: Wildeshausen
293 Beiträge
 
Turbo Delphi für Win32
 
#8

AW: abfragen, ob XPman eingebunden ist

  Alt 5. Dez 2017, 13:58
Bei mir ist die Funktion <IsAppThemed> in der Unit <UxTheme> deklariert. Die Unit ist bei Turbo-Delphi dabei.
Englisch eine Weltsprache? Zu kompliziert und der nahe Osten würde Englisch als Pflichtweltsprache nicht akzeptieren.
IDO wäre genau das Richtige: http://forum.idolinguo.de/index.php oder www.idolinguo.de
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz