![]() |
TXStyleForm reloaded 1.1 beta 3 - Formular mit Skin
Liste der Anhänge anzeigen (Anzahl: 3)
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 einzeln als Anhang oder direkt hier: ![]() 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: ![]() Dies ist die Weiterführung des Projektes TXStyleForm von obbschtkuche: ![]() Features:
Lizenz: MPL 1.1 oder GPL 2.0 oder LGPL 2.1 Installation: Das Setup ausführen oder:
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:
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
Bekannte Probleme:
Das solls fürs Erste gewesen sein, im Anhang gibts den Quelltext inkl. und ohne kompilierte Demo und Editor. Die Komponente habe ich auch im DF und dem DT vorgestellt: ![]() ![]() Die Changelogs veröffentliche ich jetzt nicht mehr hier sondern im Forum in den entsprechenden Threads: ![]() Schönen Gruß, Sebastian |
Re: TXStyleForm reloaded 1.1 alpha - Formular mit Skin
Liste der Anhänge anzeigen (Anzahl: 3)
// EDIT:
Die Screenshots liegen auf Wunsch nur noch im Anhang, ihr könnt sie entweder dort anklicken oder hier anschauen: ![]() |
Re: TXStyleForm reloaded 1.1 alpha - Formular mit Skin
Hallo Sebastian
Habe es soeben mit Delphi 7 unter WinXP gestestet. Gab beim Kompilieren keine Feher, auch Darstellungsfehler konnten nicht erkannt werden. Schaut gut aus :thumb: Edit: Der Quellcode könnte noch etwas optimiert werden: z.B sizeof -> SizeOf font.style -> Font.Style free -> Free assign -> Assign "capital F" etc. |
Re: TXStyleForm reloaded 1.1 alpha - Formular mit Skin
Hallo Sebastian,
könntest du die Bilder in den Anhang packen, um die Ladezeit der Seite zu verkürzen? Danke. |
Re: TXStyleForm reloaded 1.1 alpha - Formular mit Skin
Zitat:
Auch die Dokumentation des Quelltextes will ich noch vereinheitlichen, genau wie eben die Schreibweise des Delphicodes an sich. Angefangen habe ich da schon, auch mit Tests unter verschiedenen Delphiversionen. Packages und Projektgruppen bzw. teilweise neue Projekte habe ich mittlerweile für Delphi 7, 2006 und 2009 erstellt. Delphi 3, 6 und 2007 folgen noch. Leider habe ich Delphi 4 und 5 nicht, so dass ich da immer nicht weiß was dort geht. Auch habe ich angefangen es unter verschiedenen Systemen zu testen. Windows 95, 2000, XP und Vista funktionieren. Ich bin also zuversichtlich, dass es unter Delphi 3 bis 2009 und Windows 95 bis Windows 7 gleichermaßen funktioniert. :mrgreen: Zitat:
Auch wenn ich es für wenig sinnvoll halte, dann entferne ich die eben aus dem Beitrag. Eigentlich würde ich es für sinnvoller halten, wenn man direkt sieht was Sache ist. :wall: Aber egal, müssen eben alle extra die von dem Server hier einzeln downloaden, mir ist das ja egal. |
Re: TXStyleForm reloaded 1.1 alpha - Formular mit Skin
Es gibt, man scheint es kaum zu glauben, noch Modembesitzer. Diese freuen sich immer wenn Bilder direkt im Beitrag verlinkt sind :zwinker:
|
Re: TXStyleForm reloaded 1.1 alpha - Formular mit Skin
Zitat:
Somit könnte man die Screenshots auch auf einen Blick sehen wenn man dem Link folgt. Ich werde es noch unter Delphi 5 testen. |
Re: TXStyleForm reloaded 1.1 alpha - Formular mit Skin
Zitat:
Zitat:
Könntest du vielleicht mal Screenshots vom Objektinspektor anhängen, wenn das Formular drin aktiv ist, bitte? Dann könnte ich die dort verfügbaren Eigenschaften sehen, das ist ja vor allem das, was mich interessiert. ;-) |
Re: TXStyleForm reloaded 1.1 alpha 2 - Formular mit Skin
So, eine neue Version ist da. Diese enthält bisher nicht viele offensichtliche Änderungen, aber ich habe folgendes geändert:
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.) |
Re: TXStyleForm reloaded 1.1 alpha 4 - Formular mit Skin
So und wieder eine neue Version:
|
Re: TXStyleForm reloaded 1.1 alpha 4 - Formular mit Skin
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Sebastian,
gefällt mir sehr gut, was Du da gemacht hast. Einen Hinweis habe ich: Ich habe das Package unter Delphi 5 (WinXP) installiert. Soweit keine Probleme. Wenn ich bei der Demo die Größe ändere, erhalte ich jedoch einen Zeichenfehler (siehe Bild). Grüße, Jani. |
Re: TXStyleForm reloaded 1.1 alpha 4 - Formular mit Skin
Hmm, genau das hatte ich heute Morgen gehofft behoben zu haben. Ich habe XP nur noch auf Testrechnern installiert, aber gerade konnte ich es reproduzieren. Wenn die Maus sehr schnell bewegt wird sieht man da die schwarzen Flächen. Wenn ich die Maus jetzt z.B. über einem anderen Fenster im Vordergrund loslasse, dann bleibt das so.
Das ist ein generelles Problem, das tritt auch bei der mit neueren Delphiversionen kompilierten Version auf. Ich muss einmal schauen woran das liegt. Eine Lösung wäre vielleicht zunächst ein Timer, der es notfalls nachträglich korrigiert. Beim Resizen könnte der aktiviert werden und sich nach dem letzten Resizen und einer Korrektur ggf. selbst deaktivieren. Aber ich versuche mal herauszufinden woran es liegt und es richtig zu beheben. |
Re: TXStyleForm reloaded 1.1 alpha 4 - Formular mit Skin
Zitat:
Das habe ich jetzt wieder behoben, es sollte also jetzt weder flackern noch Darstellungsfehler geben. Die Downloads sind aktualisiert. |
Re: TXStyleForm reloaded 1.1 beta 1 - Formular mit Skin
Jetzt habe ich nochmal alles überarbeitet und einiges optimiert. Im Detail:
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. |
Re: TXStyleForm reloaded 1.1 beta 1 - Formular mit Skin
Hallo Sebastian, ich habe mal den Code im WMNCRButtonUp so angepasst, dass das Systemmenü angezeigt wird.
Delphi-Quellcode:
procedure TXStyleContainer.WMNCRButtonUp(var message: TWMNCRButtonUp);
const A: array[Boolean] of Integer = (MF_BYCOMMAND or MF_GRAYED, MF_BYCOMMAND or MF_ENABLED); var hMenuHandle: HMENU; hOwner: HWND; Cmd: Cardinal; begin hOwner := GetWindow(Handle, GW_OWNER); if hOwner <> 0 then begin hMenuHandle := GetSystemMenu(hOwner, false); if hMenuHandle <> 0 then begin EnableMenuItem(hMenuHandle, SC_RESTORE, A[IsIconic(hOwner) or IsZoomed(hOwner)]); EnableMenuItem(hMenuHandle, SC_MINIMIZE, A[not IsIconic(hOwner)]); EnableMenuItem(hMenuHandle, SC_MAXIMIZE, A[not IsZoomed(hOwner)]); Cmd := Cardinal(TrackPopupMenu(hMenuHandle, TPM_RETURNCMD, message.XCursor, message.YCursor, 0, hOwner, nil)); if Cmd <> 0 then PostMessage(hOwner, WM_SYSCOMMAND, Cmd, 0); end; end; end; |
Re: TXStyleForm reloaded 1.1 beta 1 (v2) - Formular mit Skin
Ja, vielen Dank, ich habe es eingebaut, das funktioniert wunderbar. :D
Die Downloads sind aktualisiert. |
Re: TXStyleForm reloaded 1.1 beta 2 - Formular mit Skin
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. |
Re: TXStyleForm reloaded 1.1 beta 2 - Formular mit Skin
Für die aktuelle Version werde ich diese Woche einen Release Candidate veröffentlichen, die Fehler in der Komponente selbst habe ich soweit behoben, ich baue aber noch einen Vista-Fix gleich mit ein statt per Sonderbehandlung verschiedener Versionen von Delphi oder Windows Fehler beizubehalten. Deshalb dauert es noch ein paar Tage.
Ich habe mir den im DF geäußerten Wunsch nach einem transparenten Rahmen jetzt angeschaut und mit der Planung für Version 2.0 angefangen. (Vorher wird es aber noch eine Zwischenversion auf Basis des alten Codes geben.) Folgendes habe ich jetzt geplant:
Wichtig: Wenn noch jemand Featurewünsche hat, dann schreibt es bitte jetzt, damit ich ggf. dies gleich in die Planung einfließen lassen kann. Spätere Wünsche werde ich nicht so gut berücksichtigen können, das muss dann ggf. bis zur nächsten Version warten. |
Re: TXStyleForm reloaded 1.1 beta 2 - Formular mit Skin
Hallo,
die Demo finde ich richtig gut! Leider gibts auf meinem Rechner Probleme bei der Verwendung. Was ich bisher gemacht habe: Das Setup ausgeführt (für Delphi 2006). Neues Projekt erstellt. TXStyleComponent auf das Formular gezogen. xtremexp.xstyle direkt auf D: kopiert. Die Eigenschaft OpenFile der Komponente auf D:\xtremexp.xstyle gesetzt. USES um XStyleComponent und XStyleForm erweitert. Das Formular selber von TXStyleForm vererbt. Kompilieren kann ich das ganze, jedoch hat mein Formular das Standarddesign und nicht das aus der Komponente. CaptionLeft und Co. in der Komponente beinhalten die Grafiken aus xtremexp.xstyle. Die Frage ist, was mache ich falsch? Bin für jeden Hinweis sehr dankbar :!: Gruß, Michael |
Re: TXStyleForm reloaded 1.1 beta 2 - Formular mit Skin
Kannst du das Projekt hier anhängen oder mir schicken?
Eigentlich werden diese Bilder ja direkt benutzt. Oder kann es sein, dass mehr als einmal die Komponente auf dem Formular liegt? |
Re: TXStyleForm reloaded 1.1 beta 2 - Formular mit Skin
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
nein, die Komponente habe ich nur einmal auf die Form gezogen. Anbei mal das Projekt selber. Vielen Dank für die Unterstützung! Gruß, Michael |
Re: TXStyleForm reloaded 1.1 beta 2 - Formular mit Skin
Ach jetzt verstehe ich, stimmt, das habe ich nicht dazu geschrieben. Das werde ich gleich noch ergänzen.
Wie auch in der Demo musst du den Style selbst aktivieren. Der Sinn darin ist, dass es ja explizit aktivierbar und deaktivierbar sein soll und deshalb von den Einstellungen des Benutzers der Anwendung abhängt. Und deshalb musst du die Eigenschaft XStyleEnabled z.B. in OnCreate des Formulars setzen:
Delphi-Quellcode:
So ist es bei der Demo ja auch, erst nach der Aktivierung der CheckBox ist der Style angewendet. ;-)
procedure TForm1.FormCreate(Sender: TObject);
begin XStyleEnabled := True; end; |
Re: TXStyleForm reloaded 1.1 beta 2 - Formular mit Skin
Dann wäre es aber IMHO sinnig, Enabled standardmäßig auf true zu setzen, zumindest wäre das das Verhalten, das ich erwarten würde. Allerdings muss ich dazusagen, dass ich mir außer den Screenshots nichts weiter angeschaut habe.
|
Re: TXStyleForm reloaded 1.1 beta 2 - Formular mit Skin
Der Grund für die Entscheidung meinerseits war ganz einfach, dass das die Startzeit unnötig verlängern würde. Dann würde in dem internen Create das aktiviert. Und danach ggf. sofort wieder deaktiviert. ;-)
So wird es entweder gelassen wie es ist oder einmal aktiviert. Ich hätte das in die Komponente packen können, das fällt mir ein, ich weoß nicht, ob es einen Grund dagegen gab. :gruebel: Allerdings ist diese Komponente im nächsten großen Release 2.0 dann (hoffentlich) Geschichte, weil ich das komplett in die Delphi-IDE integrieren will. |
Re: TXStyleForm reloaded 1.1 beta 2 - Formular mit Skin
Hallo,
vielen Dank für den Hinweis! Funktioniert einfach wunderbar. Wenn "Active" im Objektinspektor stehen würde - gerne auch mit False als default - dann bin ihc mir sicher hätte ich nicht nachgefragt :oops: Ändert aber nichts daran, dass ich die Komponente richtig klasse finde! Werde auf jeden Fall am Ball bleiben und die nächsten Versionen begutachten. Vielen Dank noch einmal und weiter so! Gruß, Michael |
Re: TXStyleForm reloaded 1.1 beta 2 - Formular mit Skin
Abgerundete Fenster wie per PN angesprochen sind sicher kein Problem, die Frage ist nur wie das aussehen soll. Eine selbst definierte Region übergeben oder nur Parameter festlegen?
Um genau zu sein gibt es z.B. die Funktion CreateRoundRectRgn, deren beide Parameter für die Ellipse, die die Rundung darstellt, einfach angegeben werden könnten. ![]() Das einzubauen wäre kein Problem. Die andere Möglichkeit wäre selbst eine solche Region zu definieren und der Komponente zu übergeben, dann wären auch z.B. Ränder wie Briefmarken gezackt denkbar. :mrgreen: Aber man muss eben alles selbst machen und der Komponente übergeben. (Nebenbei ginge das auch ohne Modifikation der Komponente.) |
Re: TXStyleForm reloaded 1.1 beta 2 - Formular mit Skin
Hallo,
abgerundete Ecken an sich erstellen ist in der Tat kein Problem. Nur teste das ganze dann mal unter Vista mit diesem bl..n Aera Design. Vista stellt die Fenster leider nicht wirklich so dar wie XP es tut. Gruß, Michael |
Re: TXStyleForm reloaded 1.1 beta 2 - Formular mit Skin
Hallo,
lässt sich in diese Designs noch irgendwie das Systemmenü bzw. ein weiterer Button neben dem Minimieren-Button integrieren? Gruß, Michael |
Re: TXStyleForm reloaded 1.1 beta 2 - Formular mit Skin
Das Systemmenü per rechter Taste sollte funktionieren, wenn auch noch nicht alle Einträge.
Ansonsten wäre es natürlich überhaupt kein Problem einen weiteren Button einzufügen, dazu müsste der Quelltext entsprechend geändert werden. Zitat:
Ich werde da wohl entsprechende Parameter einbauen. Das Problem ist nur, dass die Einstellungen sowieso hoffnungslos unübersichtlich sind. Ich bin mir auch noch unschlüssig welche Veränderungen ich in welches Release einbaue. Denn prinzipiell gibt es zwar noch ein Zwischenrelease 1.2 vor der komplett neuen Version 2.0, aber ich weiß noch nicht was da noch Neues wirklich sinnvoll rein passt (und was erst in 2.0 sinnvoll realisierbar ist). Das mit den Buttons plane ich in Version 2.0 ohnehin komplett anders zu realisieren. Da soll es eine Liste geben mit Buttons, die dann verschiedene Positionen, Bilder und Funktionen bekommen können. Und die Liste soll eben auch direkt änderbar sein. ;-) Da läuft ja im Moment erst die Planung was rein soll und möglich ist. Vor allem habe ich noch ein wenig Schwierigkeiten mir einen guten visuellen Editor einfallen zu lassen. Der soll ja in der Komponente und der erstellten Exe auch für die Benutzer der Software ggf. angezeigt werden können. |
Re: TXStyleForm reloaded 1.1 beta 3 - Formular mit Skin
Ich habe soeben die beta 3 hochgeladen. Das Problem mit den Constraints ist behoben, das Problem mit Vista und Delphi 2007 und 2009 größtenteils.
Das zu beheben hat länger gedauert, weil ich auch noch die Reparatur für Vista generell eingebaut habe. Die Benutzung von XStyleForm sorgt also auch gleich dafür, dass unter Vista die Vorschau und Taskumschaltung usw. korrekt funktioniert, auch mit Delphi 2006 und früher. Das hat leider andere Probleme mit sich gebracht, die ich erst noch ausführlich testen muss, aber zumindest bei einem einzelnen Formular sollte es immer funktionieren, nur beim Minimieren über das Systemmenü verschwindet der Taskleistenbutton noch. Abgerundete Ecken habe ich in einer anderen Version bereits eingebaut, dort werde ich die Korrekturen dieser Version noch einbauen, dann wird zumindest das schon einmal bald funktionieren. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz