Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Eigene Form u. DB-Komponenten -> XP-Style (https://www.delphipraxis.net/23091-eigene-form-u-db-komponenten-xp-style.html)

Icemanemp 28. Mai 2004 15:55


Eigene Form u. DB-Komponenten -> XP-Style
 
Hi,

das ist mein erster Forumthread hier! Ihr habt ein super Forum nur um das mal zu sagen!
ich hab auch schon eure Code Library durchgescahut und einige interessante Dinge gefunden!

Unteranderem XP-Style für Delphi 4-6.
Das Problem ist dieses:
Das mit der Manifest Datei hab ich hin bekommen und sogar als .Res Datei mit ein zu kompilieren, aber leider werden nur die Standardcontrols im Xp Style angezeigt.
Dann hab ich in eurer Code Library gesehen, das der Entwickler der XP-Style (die auch in Delphi 7 integreiert sind) diese auch für älter Versionen anbietet! Er hat sogar die Datenbankkomponenten im Xp-Style.
Nun hab ich das Problem, das unsere Datenbankkomponenten Eigenentwicklung sind und ich gerne mal sehen würde, wie diese im Xp-Style aussehen. Aber ich weiss nicht wo ich jetzt was amchen muss , damit unsere Komponente im XP-Style auf die Oberfläche kommen!
Eigentlich sind alle Dinge, die bei uns verwendet werden Eigenentwicklungen wie z.B. eigen TForm usw. einige sind einfach nur direkt von den normalen Komponenten abgeleitet andere sind von Vorfahren abgeleitet und verändert.

Kann mir jemand erklären wie ich die Packages von unseren Komponente jetzt XP fähig mache.

Leider kümmert sich darum keiner und ich würde gern mal sehen wie unser produkt im XP-Style aussieht! Dann könnte ich vielleicht sogar unser Projektleiter davon überzeugen, den XP-Style z.B. bei Messen einzuschalten usw.

Danke für eure Hilfe!

(Hoffentlich ist das auch das richtig UnterForum, aber ich denke schon)

alcaeus 28. Mai 2004 16:29

Re: Eigene Form u. DB-Komponenten -> XP-Style
 
Erstmals willkommen in der DP :dp: :hi:
Zweitens, verwendest du TXPMenu? Wenn ja, dann könnte dich genau dieser Beitrag interessieren:
TXPMenu und andere Komponenten

Icemanemp 28. Mai 2004 16:56

Re: Eigene Form u. DB-Komponenten -> XP-Style
 
Ne ich meine ich will den XP-Style bei unseren eigens entwickelten Komponenten! TXPMenu ist ja auch nur ne Komponente? vielleicht kann mir einer erklären wie ich den Thememanger verwende, das unsere Komponeten im Xp-Style kommen! Im Beispielcode gibt es auch ne möglichekit ein Objekt des Thememanger anzulegen und dann diesen dann alle Controls einsammeln zu lassen, aber wie mache ich das in Komponenten Packages und bei eigenen Komponenten die irgendwann (als irgendwo in der Objekthierarchie) abgeleitet wurde.

Es bringt nämlich überhaupt nix, wenn ich z.B. die Komponente "ThemeManger" oder "ThemeManagerDB" auf unsere Formulare lege. Ich weiss nicht warum, aber ich denke, weil unsere fast alle auf eigene Komponenten basieren.

Bernhard Geyer 28. Mai 2004 21:03

Re: Eigene Form u. DB-Komponenten -> XP-Style
 
Wenn du eigenentwickelte Komponenten einsetzt, welche auch eine eigene Zeichneroutine besitzen, so mußt Du natürlich auch für aktivierte XP-Themes eine eigene Zeichenroutine implementieren. Windows kann natürlich nicht wiesen dass dein Custom-Control zwar in der Art xy gezeichnet wird, aber dies unter XP-Themes ganz anders aussehen soll. So ist ja z.B. der Bitbtn von Delphi ja auch nicht gethemes (trotz aktiven XP-Theme).

Wie sowas geht (XP-Theming-Zeichnen) könntest Du z.B. (wenn Du ein paar € investieren kannst) im ElPack finden. Diese Komponenten bieten für alle Controls eine eigene XP-Themes-Zeichen-Implementierung weil sie sich nicht auf das Theming von den Win32-Controls verlassen.

Icemanemp 29. Mai 2004 09:25

Re: Eigene Form u. DB-Komponenten -> XP-Style
 
Soweit ich weiss sind unser Komponenten meisten nur mit zusätzlichen Funktionen ausgestattet, und alle von den Standardkomponenten abgeleitet! D.h. unsere Komponentenentwickler haben keine eigenen Zeichenroutinen eingebaut!

Gestern hatte ich komischerweise auf einem Tool, das auf unserer TForm basierte und eigentlich nur mit unseren komponente ausgestattet war das glück eine ThemeManagerXP Komponente draufzulegen und kurze Zeit den Anblick zu geniessen! Leider ging das nur bei dem Tool! bei einem Projekt von unserem Produkt ging der Versuch fehl! Ich weiss nicht warum?

Schön wäre es ja, wenn ich eben nicht immer extra eine ThemeManagerXP Komponente auf die Form legen müssten, sonder wenn z.B. in der Form oder z.B. in allen unseren Komponenten das ThemeManagerObjekt bzw. Routine integriert ist! Weil jede Nacht ein gesamt Kompilat unsere Produktes läuft wäre es daher auch schön! Weil sonst müsste ich ja alle .pas bzw. .dfm bearbeiten und die ThemeManagerDB Komponente einabauen! Der Weg über die Veränderung unsere Komponeten wäre da einfacher, da diese ja in jedem Projekt eingesetzt werden und es bei dem Gesamtkompilat dann schneller zu einem XP-Style führt!

Pseudemys Nelsoni 30. Mai 2004 00:19

Re: Eigene Form u. DB-Komponenten -> XP-Style
 
wenn die komponenten von anderen abgeleitet sind auch auch am zeichnen nix geändert wird, müsste der xp-style bei dem nachfahren genauso wie beim vorgänger sein

HaJo 30. Mai 2004 00:31

Re: Eigene Form u. DB-Komponenten -> XP-Style
 
versuch mal die bpl-dateien im System32-Verzeichnis von Deinem und den anderen abzugleichen..

Bernhard und Alcaeus schlafen wohl nie <griemel>

Gruß, Jochen

alcaeus 30. Mai 2004 04:11

Re: Eigene Form u. DB-Komponenten -> XP-Style
 
[OT]
Zitat:

Zitat von HaJo
Bernhard und Alcaeus schlafen wohl nie <griemel>

Und wie kommst zu der Aussage? Ich schlafe vollkommen genug (aber nie mehr als 5h pro Tag)
[/OT]

Bernhard Geyer 30. Mai 2004 18:51

Re: Eigene Form u. DB-Komponenten -> XP-Style
 
[OT]

Zitat:

Zitat von HaJo
Bernhard und Alcaeus schlafen wohl nie <griemel>

Ich eigentlich auch immer genug (auch wenns gestern aufgrund einer Hochzeit etwas später - äh - früher geworden ist.

[/OT]

Zum Problem. Um für deine Anwendung Theming zu aktivieren, ist ein sogenanntest Manifest nötig. Dieses ist entweder eine .manifest-Datei parallel zur Anwendungs-Exe oder ein Manifest-Resource. Alle XP-Theming-Komponenten werden nur einmal pro Anwendung benötigt und sorgen für das Einbinden dieser speziellen Resource. Alternativ kannst Du auch selbst diese Resource zu deiner Anwendung binden.
Die suche nach Manifest im Forum dürfte genügend Beispiele bieten.

Icemanemp 31. Mai 2004 11:58

Re: Eigene Form u. DB-Komponenten -> XP-Style
 
Ja ja das ist mir schon alles klar!

Leider funktioniert XP Theming per Manifestdatei nicht z.B. mit DBComboBox u.a. Komponenten! Das ist mein erste Problem gewesen, aber dann hab ich ja durch euer Forum die XP Thememanger Komponente von dem Entwickler des XP Manifest Komponente aus Delphi 7 gefunden! Mit der Manifestdatei ist eben nicht alles im XP Style vor allem viele DB Komponenten nicht...

Ich versuch nochmal irgendwie die Thememangerklasse beim Create von unserer Form aufzurufen und dann wird unsere komplettes Produkt hoffentlich im XP Style erscheinen...

Danke nochmals für die Hilfe, aber ihr habt mir leider nicht wirklich weiterhelfen können. Da ihr immer andere Dinge beschrieben habt, die leider nichts mit meine Problem zu tun haben. Trotzdem danke für eure Mühe.

Bernhard Geyer 31. Mai 2004 12:07

Re: Eigene Form u. DB-Komponenten -> XP-Style
 
Zitat:

Leider funktioniert XP Theming per Manifestdatei nicht z.B. mit DBComboBox u.a. Komponenten! Das ist mein erste Problem gewesen, aber dann hab ich ja durch euer Forum die XP Thememanger Komponente von dem Entwickler des XP Manifest Komponente aus Delphi 7 gefunden! Mit der Manifestdatei ist eben nicht alles im XP Style vor allem viele DB Komponenten nicht...
Das liegt vermutlich daran, das in Delphi 5 (welches Du vermutlich verwendest) noch nicht alle Komponenten für XP-Theming-Kompatibel waren (Da XP erst nach D6 herauskam auch nicht verwunderlich). Die einfach Möglichkeit mit dem XP-Manifest teilt XP nur mit, das die Anwendung grundsätzlich gethemed gezeichnet werden soll. Und wenn manche DB-Controls in D5 sich nicht so registrieren das XP weiß das diese mit Themes gezeichnet werden soll, so bleiben diese halt "ungethemed". Der XP Themesmanger wird dieses unvermögen der Controls korrigieren.

Icemanemp 31. Mai 2004 12:20

Re: Eigene Form u. DB-Komponenten -> XP-Style
 
Also irgendwie glaube ich, das wir hier aneinander vorbei reden!
Ich rede von dem XP ThemeManager von Mike Lischke. http://www.delphi-gems.com !!

Dieser bietet auch an das die DB-Komponenten im XP Style angezeigt werden...

Diese Komponenten habe ich gemeint. Und mich hat eben nur interessiert, wie und wann ich die Unit und das Objekt ThememangerDB von Mike Lischke in unser Form integrieren soll oder ob ich es in jedes unsere Komponenten integrieren soll? Mir geht es nur darum beim gesamtkompilat, das jede Nacht über Batchdateien ausgeführt wird am nächsten Morgen ne Version rauskommt, die im XP Style ist! Da ich nicht jede unsere ca. 85000 (ich glaub so viel warens) pas datein verändern möchte und die ThememangerDB KOMPONENTE!!! einfügen möchte! Von meine Lösungsansatz über das verändern der eigenen Form dürfte dies doch gelingen oder?

Bernhard Geyer 31. Mai 2004 12:35

Re: Eigene Form u. DB-Komponenten -> XP-Style
 
In der Beschreibung steht:
Zitat:

...and modifies some controls to match the general theme look
D.h. ist einmal ein Themes-Manger aktiv, so wird vermutlich per Hooking die Registrierung/Zeichnenroutine modifiziert.

Und nachdem ich einen Schnelltest gemacht habe, reicht es das der Manager einmal im Programm aktiv ist. Am einfachst legt man den Manager auf das Hauptformular, da dieses während der ganzen Programmlaufzeit aktiv ist.

Icemanemp 31. Mai 2004 12:39

Re: Eigene Form u. DB-Komponenten -> XP-Style
 
In unserem Produkt wäre das dann die Menüleiste, wo alle anderen Programm, die in DLLs kompiliert werden aufgreufen werden.

Geht das dann dort auch oder nicht? Ich meine das die Thememanger XP Komponente dann auch Programm die in einer DLL ausgelagert wurden umzuzeichnen. Da unsere Menüleiste das einzigste Programm ist das immer auf ist... oder ist es dann doch besser den ThemeManager in unser eigene Form (BForm) aufzunehmen?

Bernhard Geyer 31. Mai 2004 12:45

Re: Eigene Form u. DB-Komponenten -> XP-Style
 
Wenn Deine Funktionaltät jeweils in einer DLL liegt dort immer nur ein Formular geöffnet wird, so schaut es schlecht aus. Du wirst dann vermutlich in jedes DLL-Formular eine Manager-Komponente legen müssen.
Der Manager der Exe hat keine Möglichkeit die Controls in der DLL zu Hooken.

Falls Deine DLL-Formular alle eine eigene Basis-Klasse (nicht TForm) haben, so könntest Du den Themes-Manager dort per Code im Konstrukor erzeugen lassen.

Icemanemp 31. Mai 2004 12:49

Re: Eigene Form u. DB-Komponenten -> XP-Style
 
Genau das wollte ich hören!

Wenn ich die Thememanger Obejkte erzeuge und dann die XP-Theming Methode ausführe, werden dann auch eigene Komponenten, die auf VCL-Komponenten basiern bzw. abgeleitet sind auch gethemed? Oder Kann man das nicht einfach beantworten?

Wenn net dann probier ich es üer die Erzeugung de Objektes im Konstruktor unserer Form aus!

Danke

Bernhard Geyer 31. Mai 2004 12:54

Re: Eigene Form u. DB-Komponenten -> XP-Style
 
Wenn die Basis-Klasse gethemed wird und

- keine eigene Zeichenroutine verwendet wird
- Basisfunktionen für Fenstererzeugung nicht überschrieben werden

so wird auch die abgeleitete Klasse gethemed. (Gerade mit Ableitung von TBitBtn getestet)

Icemanemp 31. Mai 2004 15:05

Re: Eigene Form u. DB-Komponenten -> XP-Style
 
OK dann werd ich das morgen auf der Arbeit testen!

Danke nochmal, falls es Probleme gibt dann schreib ich wieder hier rein...

Icemanemp 2. Jun 2004 16:01

Re: Eigene Form u. DB-Komponenten -> XP-Style
 
Hab jetzt diesen Code...

Delphi-Quellcode:
    FThemeManager := TThemeManager.Create(Self);
    FThemeManagerDB := TThemeManagerDB.Create(Self);

    if Assigned(FThemeManager) then
    begin
      FThemeManager.ClearLists;
      FThemeManager.CollectForms;
    end;

    if Assigned(FThemeManagerDB) then
    begin
      FThemeManagerDB.ClearLists;
      FThemeManagerDB.CollectForms;
    end;
in unser BForm beim Create reingemacht, leider passiert gar nix! Beim Destroy wird auch alles ordentlich zerstört, aber beim Create passiert schon gar nix! Bitte helft mir ;) ich weiss nicht warum das nix passiert?


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:36 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