AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte TXStyleForm reloaded 1.1 beta 3 - Formular mit Skin
Thema durchsuchen
Ansicht
Themen-Optionen

TXStyleForm reloaded 1.1 beta 3 - Formular mit Skin

Ein Thema von jaenicke · begonnen am 24. Feb 2009 · letzter Beitrag vom 12. Apr 2009
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von jaenicke
jaenicke
Registriert seit: 10. Jun 2003
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.

http://www.sj-berlin.de/service/df/s..._Titledemo.png
Weitere Screenshots siehe unten im Folgepost einzeln als Anhang oder direkt hier:
http://www.sj-berlin.de/service/df/s...screenies.html

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:
http://sjberlin.de/forum/viewforum.php?f=3

Dies ist die Weiterführung des Projektes TXStyleForm von obbschtkuche:
http://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:
  • Die Komponente TStyleComponent aufs Formular legen
  • XStyleForm in die uses Liste hinzufügen
    Delphi-Quellcode:
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, XStyleComponent, XStyleForm;
  • Aus class(TForm) in der Formulardeklaration TXStyleForm machen
    Delphi-Quellcode:
    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
  • 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*

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:
http://www.delphi-forum.de/viewtopic.php?p=551018
http://forum.delphi-treff.de/showthread.php?t=26292

Die Changelogs veröffentliche ich jetzt nicht mehr hier sondern im Forum in den entsprechenden Threads:
http://sjberlin.de/forum/viewtopic.php?f=5&t=3&p=3 (Changelog der Version 1.1)

Schönen Gruß,
Sebastian
Angehängte Dateien
Dateityp: zip xstyleform_reloaded_1.1_beta_3_577.zip (800,9 KB, 242x aufgerufen)
Dateityp: zip xstyleform_reloaded_1.1_beta_3_src_115.zip (287,2 KB, 142x aufgerufen)
Dateityp: exe xstyleformsetup1.1beta3_211.exe (686,0 KB, 156x aufgerufen)
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
 
jbaertle

 
Delphi 7 Professional
 
#11
  Alt 27. Feb 2009, 08:57
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.
Miniaturansicht angehängter Grafiken
resize-error_425.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

 
Delphi 11 Alexandria
 
#12
  Alt 27. Feb 2009, 16:09
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.
Sebastian Jänicke
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

 
Delphi 11 Alexandria
 
#13
  Alt 27. Feb 2009, 17:45
Zitat von jbaertle:
Wenn ich bei der Demo die Größe ändere, erhalte ich jedoch einen Zeichenfehler (siehe Bild).
Leider hat sich beim Unterdrücken des Flackerns in der letzten Version ein Fehler eingeschlichen. Das Problem ist, dass ich das Resizen bzw. 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 aktualisiert.
Sebastian Jänicke
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

 
Delphi 11 Alexandria
 
#14
  Alt 28. Feb 2009, 04:40
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.
Sebastian Jänicke
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms

 
Delphi XE Professional
 
#15
  Alt 28. Feb 2009, 08:18
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;
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

 
Delphi 11 Alexandria
 
#16
  Alt 28. Feb 2009, 08:46
Ja, vielen Dank, ich habe es eingebaut, das funktioniert wunderbar.

Die Downloads sind aktualisiert.
Sebastian Jänicke
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

 
Delphi 11 Alexandria
 
#17
  Alt 24. Mär 2009, 03:15
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.
Sebastian Jänicke
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

 
Delphi 11 Alexandria
 
#18
  Alt 30. Mär 2009, 08:46
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:
  • Neue Codebasis, ich schreibe die Komponente von Grund auf neu, übernehme aber natürlich Teile des Codes.
  • Ein transparenter Rahmen oder teilweise transparenter Rahmen wird möglich sein. Auch abgerundete Ecken werden definierbar sein. Ob die Transparenz dann nur exklusiv auf Rahmen oder Fensterinhalt anwendbar sein wird, bin ich noch nicht sicher.
  • Es wird keine Komponente mehr notwendig sein. Damit funktioniert XStyleForm dann auch in Turbo Delphi. Stattdessen wird es einen DLL-Experten geben, der im Projektmenü einen Menüpunkt für die Definition des Styles bietet. Die angegebenen Styles werden dann per Ressource automatisch direkt in die Exe einkompiliert.
  • Diese vorhandenen Styles werden als Liste zur Anzeige einer Auswahl für den Benutzer angeboten.
  • Die Styles werden Autorinformationen usw. zur Verwaltung bekommen.
  • Der Styleeditor wird auch in der Exe vorhanden und benutzbar sein, damit auch die Benutzer weitere Styles erstellen können.
  • Der automatische Installer wird überarbeitet und sollte dann besser konfigurierbar und zuverlässiger sein.
Aufgrund dieser Überlegungen wird der geplante Termin (Ende Juni) wohl nicht haltbar sein. Genaueres kann ich erst nach der Planung sagen, derzeit sammele ich noch Überlegungen.

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.
Sebastian Jänicke
  Mit Zitat antworten Zitat
mw19
 
#19
  Alt 3. Apr 2009, 10:50
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
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

 
Delphi 11 Alexandria
 
#20
  Alt 3. Apr 2009, 14:29
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?
Sebastian Jänicke
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 23:27 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