Autor |
Beitrag |
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 24.02.09 11:25
Hallo!
Diese Komponente verpasst einem Formular einen Skin. Dabei geht es nicht um die Komponenten auf dem Formular, sondern um den Rand und die Titelleiste des Formulars.
Dafür wird das eigentliche Fenster in einem Containerfenster eingebettet, das die Darstellung der Ränder übernimmt.
Weitere Screenshots siehe unten im Folgepost.
Ein Editor für das visuelle Erstellen oder Editieren von Styles ist ebenfalls vorhanden, auch Hovereffekte werden visuell dargestellt.
Die Integration in die Komponente und die Delphi-IDE steht noch aus.
Ein Forum zum Support und mit weiteren Informationen findet ihr hier:
sjberlin.de/forum/viewforum.php?f=3
Dies ist die Weiterführung des Projektes TXStyleForm von obbschtkuche:
www.delphi-forum.de/viewtopic.php?p=148096
Features:- Eigene Bilder für die verschiedenen Teile des Fensterrahmens und der Titelleiste sowie deren Knöpfe
- Einstellung der Größe der verschiedenen Teile des Fensters
- Alphablendingunterstützung *neu*
- Unterstützung einer transparenten Farbe *neu*
- Graustufenbilder für Fenster, die nicht den Fokus haben *neu*
- Aktivierbar / deaktivierbar zur Laufzeit *neu*
- Styleauswahl zur Laufzeit *neu*
- Styleeditor mit exakter Livevorschau *neu*
(*) Neu heißt im Vergleich zum ursprünglichen TXStyleForm.
Lizenz:
MPL 1.1 oder GPL 2.0 oder LGPL 2.1
Installation:
Das Setup ausführen oder: - Das Zip-Archiv auspacken
- Den Unterordner Source dem Bibliothekspfad hinzufügen
- Das Package installieren
Bei Verwendung des Setups sollte als Ziel der Installation ein anderes als das voreingestellte Verzeichnis benutzt werden, da dieses recht lang ist.
Das Setup und das danach ausgeführte Tool sollte die Installation automatisch vornehmen. Delphi 2007 und 2009 funktionieren damit noch nicht richtig, da ist nach wie vor eine manuelle Nacharbeit bei der Installation des Packages notwendig.
Verwendung:
Es gibt jetzt ein kleines Demovideo am Beispiel von Delphi 7:
www.sjberlin.de/serv...deos/XStyleDemo.html- Die Komponente TStyleComponent aufs Formular legen
- XStyleForm in die uses Liste hinzufügen
Delphi-Quelltext 1: 2: 3:
| uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, XStyleComponent, XStyleForm; |
- Aus class(TForm) in der Formulardeklaration TXStyleForm machen
Delphi-Quelltext 1: 2: 3: 4: 5:
| type TForm1 = class(TXStyleForm) XStyleComponent1: TXStyleComponent; private ... |
- Eigenschaften selbst definieren oder bei OpenFile den kompletten Dateinamen inkl. Pfad zu einer der Skindateien angeben
- Mit der Eigenschaft XStyleEnabled z.B. im Ereignis OnCreate den Style aktivieren oder deaktivieren. Standardmäßig ist dieser deaktiviert.
Unterstützte Delphiversionen:
Delphi (3), 5, 6, 7, 2005, 2006, 2007 und 2009
(Delphi 3 visualisiert nicht, ob das Fenster den Fokus hat und das Fenster kann beliebig klein gezogen werden.)
Unterstützte Windowsversionen:
Getestet unter Windows 95, 98, ME, 2000, XP, Vista
Weitere Planung:- Den gesamten Quelltext noch einmal überarbeiten, auch was verschiedene Delphiversionen angeht. *fertig*
- Einen automatischen Installer erstellen. *Alpha verfügbar*
- Den Editor in die Komponente integrieren und für die Delphi-IDE verfügbar machen. *in Planung*
- Einen Experten für die Delphi IDE integrieren, der die nötigen Umstellungen selbst macht. *nur Idee*
- ...
Die Version 1.2 mit dem Experten in der IDE plane ich dann für Mitte Mai, Ende Juni soll es dann die Version 2.0 mit komplett überarbeiteter Implementierung der Komponente mit integriertem Editor geben.
Bekannte Probleme:- Unter Delphi 2009 gibt es wegen der Umstellung des bisherigen unsichtbaren Application Fensters Probleme mit dem Knopf auf der Taskleiste. *teilweise behoben*
- Die Constraints funktionieren nur im Skinmodus *behoben*
- Alphablending klappt nur im Skinmodus *behoben*
- Das Systemmenü des Fensters wird zwar angezeigt, funktioniert aber noch nicht *behoben*
- Es flackert relativ unschön beim Umschalten, evtl. lässt sich da noch was drehen *behoben*
- Die breiteren Ränder unter Vista z.B. bringen noch die selben Probleme wie ohne Skin. Das hat zwar eigentlich nur bedingt etwas mit der Komponente zu tun, aber vielleicht lässt sich das ja ändern. *behoben*
- Beim (schnellem) Verkleinern oder Vergrößern des Formulars treten Darstellungsfehler auf, die teilweise auch danach bestehen bleiben. *behoben*
- Die Randberechnung klappt nicht ganz ideal *behoben*
Das solls fürs Erste gewesen sein, im Anhang gibts den Quelltext inkl. und ohne kompilierte Demo und Editor.
Ich habe die Komponente jetzt auch in der DP und dem DT vorgestellt:
www.delphipraxis.net/post1005910.html
forum.delphi-treff.d...owthread.php?t=26292
Die Changelogs veröffentliche ich jetzt nicht mehr hier sondern im Forum in den entsprechenden Threads:
sjberlin.de/forum/vi...?f=5&t=3&p=3 (Changelog der Version 1.1)
Schönen Gruß,
Sebastian
Einloggen, um Attachments anzusehen!
Zuletzt bearbeitet von jaenicke am Sa 01.05.10 21:31, insgesamt 49-mal bearbeitet
|
|
jaenicke 
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 24.02.09 11:32
Screenshots der Demo (im Anhang liegen die selben Bilder, falls mein Server mal nicht erreichbar ist):
wird zu
Editor:

Einloggen, um Attachments anzusehen!
|
|
jaenicke 
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 26.02.09 18:53
So, eine neue Version ist da. Diese enthält bisher nicht viele offensichtliche Änderungen, aber ich habe folgendes geändert: - Getestet und Packages sowie Demo- und Styleeditor-Versionen für Delphi 6, 7, 2006, 2007 und 2009 erstellt (für 2005 sollte das von 2006 passen, Test steht noch aus)
- Getestet unter Windows 95, 98, ME, 2000, XP, Vista
- Den gesamten Quelltext zu einem großen Teil standardkonformer benannt (ständige Kleinschreibung z.B. etwas korrigiert)
- Ein Setup ist jetzt erhältlich, das genau die Dateien für ein oder mehrere spezifische Delphiversionen in ein Verzeichnis entpackt. Das soll später dann diese natürlich auch direkt installieren, aber das kommt erst noch. Da muss ich aber erst ganz genau testen, damit nix kaputt geht.

Bei den Tests habe ich gemerkt, dass ich mit älteren Delphiversionen doch ein Problem bekomme.
Delphi 3 werde ich voraussichtlich nicht unterstützen. Delphi 5 lässt sich zwar kompilieren, produziert aber Darstellungsfehler. Beides schaue ich mir noch an, es kann aber sein, dass ich alles vor Delphi 6 nicht unterstützen werde.
(Ich habe noch eine Idee wie ich beide Probleme direkt beheben kann, mal schauen ob das klappt.)
|
|
jaenicke 
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 27.02.09 06:26
So und wieder eine neue Version: - Das Flackern beim Aktivieren zur Laufzeit wurde weitgehend unterdrückt
- Auch Delphi 5 wird jetzt komplett unterstützt
- Auch Delphi 3 wird eingeschränkt unterstützt, allerdings wird die Titelleiste nicht grau, wenn das Fenster nicht den Fokus hat, außerdem kann man das Fenster sehr klein ziehen
Die Downloads sind alle aktualisiert.
|
|
jaenicke 
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 27.02.09 19:41
Leider hat sich beim Unterdrücken des Flackerns ein Fehler eingeschlichen. Der wurde vorhin in der DP gemeldet. Das Problem ist, dass ich das Resizen bzw. genauer gesagt dessen Behandlung teilweise unterdrückt habe. Leider nicht nur in dem richtigen Fall, sondern auch wenn es benötigt würde.
Das habe ich jetzt wieder behoben, es sollte also jetzt weder flackern noch Darstellungsfehler geben.
Die Downloads sind wieder aktualisiert.
|
|
Webo
      
Beiträge: 577
Erhaltene Danke: 14
Win 7, Debian
C# (Visual Studio 2013), PHP, C, C++ (Eclipse, KDevelop)
|
Verfasst: Fr 27.02.09 20:06
Find ich gut, das sich jemand an die Weiterführung des Projekts von obbschtkuche gemacht hat. Ich hab die Komponente von ihm schon öfters benutzt, jetzt ist ja wieder aktuell, werde sie glaub ich wieder häufiger einsetzen.
Lob an die jaenicke, dass du dich dran gesetzt hast !
Edit: Funktioniert einwandfrei bei mir unter D7 und D2009 !
_________________ Man kann nur das aus dem Ärmel schütteln, was man auch vorher reingesteckt hat.
|
|
jaenicke 
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 28.02.09 06:33
Ich dachte schon ich führe hier Selbstgespräche, freut mich, dass es jemand brauchen kann.
Jetzt habe ich nochmal alles überarbeitet und einiges optimiert. Im Detail: - Das Flackern ist jetzt so weit wie möglich reduziert, vor allem was das Umschalten von Styles angeht ist es jetzt drastisch reduziert und kaum noch vorhanden
- Die Randberechnung stimmt jetzt, egal ob unter XP oder Vista und egal mit welchem Style, der Clientbereich sollte genau die gleiche Größe haben und die Komponenten genauso drauf liegen (vor allem was den Abstand zum rechten Rand angeht). Auch mit Anchors.
Getestet habe ich das allerdings erst einmal nur mit Delphi 2006.
- Einige kleinere Fehler wurden behoben.
Da die Fehler soweit weitgehend behoben sind, deklariere ich diese Version einmal als Beta 1. Neue Features wird es in der Version 1.1 nicht mehr geben, ich werde mich nur noch um die letzten Fehler kümmern.
Das Alphablending werde ich nochmal komplett überarbeiten, dann sollte der Fehler raus sein, für den mit den Constraints muss ich nur noch einmal die Abläufe genau überdenken denke ich. Beides wird also bald fertig sein.
Für die Version 1.2 habe ich mir dann die komplette Überarbeitung der Komponente und die Integration des Editors in die IDE vorgenommen. Im Moment ist das einfach etwas umständlich.
|
|
Webo
      
Beiträge: 577
Erhaltene Danke: 14
Win 7, Debian
C# (Visual Studio 2013), PHP, C, C++ (Eclipse, KDevelop)
|
Verfasst: Sa 28.02.09 10:37
Wie macht man das jetzt am besten, die neue Komponente zu installieren ?
Muss ich jetzt die alte alpha Version erst deinstallieren (sowas find ich nämlich nicht unter D2009) oder einfach die neue "drüber" installieren ?
Ich hab noch mal ne Frage so zum Editor: Beim alten Projekt konnte man nur bestehende Skins bearbeiten, ich würde aber auch mal gerne eigene erstellen ! Planst du sowas im Editor auch ?
_________________ Man kann nur das aus dem Ärmel schütteln, was man auch vorher reingesteckt hat.
|
|
jaenicke 
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 28.02.09 10:57
Dank toms aus der Delphi-Praxis funktioniert jetzt auch das Systemmenü. Die Downloads sind aktualisiert.
Webo hat folgendes geschrieben : | Wie macht man das jetzt am besten, die neue Komponente zu installieren ?
Muss ich jetzt die alte alpha Version erst deinstallieren (sowas find ich nämlich nicht unter D2009) oder einfach die neue "drüber" installieren ? |
Überschreibe einfach die Dateien und installiere das Package erneut, das reicht schon. Sollte da einmal mehr nötig sein, schreibe ich das dazu.
Ach ja, auch wenn das hier nicht nötig ist: Deinstallieren findest du bei 2009 unter Komponente --> Packages installieren..., dann das Package in der Liste auswählen und darunter Entfernen drücken.
Aber ich plane erst einmal keine weiteren Dateien hinzuzufügen oder zu entfernen. Unter anderem deshalb gibt es auch so viele fast identische Dateien für die verschiedenen Delphiversionen. Sollte eine Anpassung nötig sein, kann ich das direkt machen ohne dass sich bei der Benutzung etwas ändert.
Webo hat folgendes geschrieben : | Ich hab noch mal ne Frage so zum Editor: Beim alten Projekt konnte man nur bestehende Skins bearbeiten, ich würde aber auch mal gerne eigene erstellen ! Planst du sowas im Editor auch ? |
Wenn du alles ersetzt, dann ist es ja wie ein neuer Skin. Ich kann natürlich auch noch einen Resetknopf hinzufügen, aber eigentlich musst du ja so oder so nur alles neu einstellen. 
|
|
MDX
      
Beiträge: 595
Erhaltene Danke: 4
Windows 8.1, Linux Debian 8, Android Lollipop
Delphi, PHP, Java (Android)
|
Verfasst: Sa 28.02.09 15:38
Ich hab einen Bug gefunden:
Und zwar wenn man das Design zur Laufzeit verändert, verschwindet das Programm aus der Taskleiste!
Ansonten  das du weitermachst!
|
|
jaenicke 
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 28.02.09 15:49
MDX hat folgendes geschrieben : | Und zwar wenn man das Design zur Laufzeit verändert, verschwindet das Programm aus der Taskleiste! |
Mit welchem Delphi und welchem Betriebssystem? Tritt das auch mit der mitgelieferten kompilierten Exe auf?
Denn den Fehler kann ich hier nicht reproduzieren, ich habs erstmal mit Delphi 2006 sowie XP und Vista getestet. Aber auch sonst hätte mir sowas eigentlich auffallen müssen, wenn es bei mir passiert wäre.
Aber ich schau mal, ob mir auffällt wo sowas passieren könnte, so viel Quelltext wird dabei eigentlich gar nicht ausgeführt.
// EDIT;
Auch mit Delphi 2009 gehts hier, aber dafür habe ich dort Grafikfehler entdeckt, das muss ich gleich mal beheben.
|
|
MDX
      
Beiträge: 595
Erhaltene Danke: 4
Windows 8.1, Linux Debian 8, Android Lollipop
Delphi, PHP, Java (Android)
|
Verfasst: Sa 28.02.09 16:21
|
|
jaenicke 
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 28.02.09 19:54
Ja stimmt, bei Delphi 2009 verschwindet das unter Vista bei mir gleich beim Aktivieren des Skins. Dafür funktioniert die Fenstervorschau auch im minimierten Zustand, da wurde also einiges geändert.
Ich schau mir das einmal an, das sollte sich ja leicht beheben lassen.
|
|
jaenicke 
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 02.03.09 02:44
Also den Button in der Taskleiste zu bekommen war einfach, dafür reicht am Ende dieser Zusatz: Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| SetWindowLong(Container.Handle, GWL_EXSTYLE, GetWindowLong(Container.Handle, GWL_EXSTYLE) or WS_EX_APPWINDOW); Container.Visible := True; inherited Visible := True; end; end;
end. | Aber aus irgendeinem Grund wird der Titel des Fensters nicht angezeigt, obwohl das Containerfenster den Titel eigentlich zugewiesen bekommen hat.
Und beim minimieren ist der Eintrag in der Taskleiste auch wieder weg.
Aber das werde ich vermutlich auch noch hinbekommen, am Alphablending und den Constraints bin ich auch dran.
|
|
jaenicke 
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 24.03.09 05:04
So, es gibt eine neue Version. Ich habe den Alphablending- und Transparenzsupport komplett neu geschrieben, was allerdings nach ein wenig Überlegung nur wenig Quelltext erforderte.
Zusätzlich habe ich das automatische Setup als Alpha veröffentlicht. Das Setup erkennt den Installationsstatus der Komponente in den installierten Delphiversionen. Die ausgewählten Packages werden dann kompiliert und der Pfad zu den Units in den Suchpfad eingetragen.
Dafür muss nach der Ausführung des Setups das Tool gestartet werden. Dieses ist nur in dem Setup enthalten.
Das Tool funktioniert leider unter Delphi 2007 und 2009 noch nicht richtig. In diesen Versionen besteht auch noch das Problem mit dem Taskleisteneintrag.
Ich empfehle bei Ausführung des Setups einen anderen Pfad zu benutzen als voreingestellt ist, da der Pfad zu den Anwendungsdaten meistens relativ lang ist.
(Da aber jeder einen anderen Pfad für Komponenten benutzt, war das die beste voreingestellte Variante.)
Ich plane einen Ausbau des automatischen Installers und die Behebung der letzten beiden Fehler in der Komponente. Dann werde ich noch einen RC veröffentlichen und dann, wenn keine Probleme auftauchen, die Final. Geplant habe ich das für Mitte bis Ende April.
Die Version 1.2 mit dem Experten in der IDE plane ich dann für Mitte Mai, Ende Juni soll es dann die Version 2.0 mit komplett überarbeiteter Implementierung der Komponente mit integriertem Editor geben.
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: Di 24.03.09 11:14
funktioniert das auch mit teilweisem Alphablending? also das ich zum beispiel nur einen kreis in der mitte mit transparenz ausstatten kann und den rest undurchsichtig lasse?
lg elundril
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
jaenicke 
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 24.03.09 11:57
Nein, es funktioniert genau wie sonst mit den internen Methoden via AlphaBlend und AlphaBlendValue. Mit Regionen müsste ich schauen wie sowas geht, prinzipiell kann ich das dann auch umsetzen, ich weiß jetzt wo ich das dann machen müsste.
|
|
jaenicke 
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 24.03.09 23:48
Ich habe mal geschaut, ich denke das könnte ich einbauen. Fragt sich wie du dir das genau vorstellst. Also möchtest du eine Region für den transparenten Bereich selbst erstellen und übergeben?
Dann noch eine Info:
Ich habe jetzt ein Supportforum aufgemacht um mehr Raum und Übersicht für Diskussionen und Informationen zu haben. Ich werde hier im ersten Beitrag dann ein paar unwichtigere Informationen wie das Changelog entfernen und in das Forum umlagern.
www.sjberlin.de/forum/viewforum.php?f=3
Damit sollte der Beitrag mit dem Download hier deutlich übersichtlicher werden. Wichtige Informationen bleiben natürlich auch hier stehen.
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: Mi 25.03.09 00:01
hmm, ich hätt so zwei ideen dazu:
1) vl mit einem einenen Bild das graustufen ist und die transparenz mit diesem bild dann erstellen
2) vl. mit PNG.
auf jeden fall sollte man halt einen Aero-Style für deine Komponente erstellen kann
lg
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
jaenicke 
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 25.03.09 08:01
Also ich habe es mir angeschaut. Prinzipiell bekomme ich es hin, dass ein gewisser Rand zu einem eingestellten Grad transparent wird, was ja dann dem Aero-Look etwas näher kommt.
Ob ich da einen Weg finde, dass sich das einfach benutzen lässt, muss ich noch schauen, vor allem ob und wie ich das insgesamt mit der normalen Transparenz kombinieren kann. 
|
|
|