![]() |
VCL Styles : ignoriert Schiftart
Moin.
Ein neue VCL Anwendung. Projekt>Optionen>Erscheinungsbild>Sky Feuer frei. Alles okay. Tools>Bitmap-Stil-Designer Laden :.....Embarcadero.../Redist/vcl/Sky.vsf per Menü: Stil > Schriftname zuweisen > SegoeUI 9 Punkte mal unter Fonts nachsehen: alles paletti, die Beispielbuttons werden mit der neuen Schriftart angezeigt. Im Inspektor Name ändern auf Style Speichern unter: Style.vsf F9 drücken. Shit. Keine Änderung zu erkennen. Hm. Einfach Mal für Fonts>MenuItemTextNormal die Schriftfarbe ändern von Schwarz nach Grün. Speichern. F9 Drücken. Fast Okay, hübsches Grün, falsche Schriftart. Was ist verkehrt? Oder zeigt das Beispiel im Bitmap-Stil-Designer die neue Schriftart nicht an? creehawk P.S. Diesen Style habe ich in eine andere VCL Anwendung eingebunden (Quelltext : TStyleManager.SetStyle(TStyleManager.LoadFromFile( 'Style.vsf'));), die geänderte Farbe wird richtig ausgegeben, NICHT jedoch die Schriftart. |
AW: VCL Styles : ignoriert Schiftart
Moin.
Mittlerweile habe ich ohne Ende rumgegoogelt und letztlich nichts dazu gefunden. Oder nur seitenlange Programme um das irgendwie möglich zu machen. Und ergänzend dazu nur noch die Info das die Dialogboxen die eventuell benutzt werden sowieso nicht den Style benutzen. Warum und wieso wird auch erklärt, ist ja auch schön und gut. Und ein wirklich Handfestes Tutorial für die Verwendung von VCL Styles finde ich auch nicht. Ich frage mich jetzt also wozu man die Styles ausser für bunte Schalterchen verwenden kann. creehawk |
AW: VCL Styles : ignoriert Schiftart
Hast du denn mal tiefer debuggt?
Also an welcher Stelle deine Schriftart noch definiert ist und ab wann sie vom Standard überschrieben wird?
Code:
Winapi.Windows.DrawText(1845586787,'Button1',7,(0, 0, 75, 25, (0, 0), (75, 25)),1024)
Vcl.Styles.DrawText($167DD80,'Button1',(0, 0, 75, 25, (0, 0), (75, 25)),1024) Vcl.Styles.TSeCustomStyle.DrawStyleText($167DD80,((0, 0, 75, 25, (0, 0), (75, 25)), 'Button1', ktxaMiddleCenter, [], ktxoHorizontal)) Vcl.Styles.TSeStyle.ButtonDrawText(kbscButton,$167DD80,((0, 0, 75, 25, (0, 0), (75, 25)), kbdsHot),((0, 0, 75, 25, (0, 0), (75, 25)), 'Button1', ktxaMiddleCenter, [], ktxoHorizontal),'default') Vcl.Styles.TCustomStyle.InternalDrawText(???,(teButton, 1, 1),'Button1',(0, 0, 75, 25, (0, 0), (75, 25)),[tfCenter,tfLeft,tfTop,tfVerticalCenter],0) Vcl.Styles.TCustomStyle.DoDrawText(1845586787,(teButton, 1, 1),'Button1',(0, 0, 75, 25, (0, 0), (75, 25)),[tfCenter,tfLeft,tfTop,tfVerticalCenter],([stfTextColor], 0, 5265845, 1845586787, 2, (23253728, -241), 5265664)) Vcl.Themes.TCustomStyleServices.DrawText(1845586787,(teButton, 1, 1),'Button1',(0, 0, 75, 25, (0, 0), (75, 25)),[tfCenter,tfLeft,tfTop,tfVerticalCenter],0) Vcl.Themes.TStyleHook.DrawControlText($162D2E0,(teButton, 1, 1),'Button1',(0, 0, 75, 25, (0, 0), (75, 25)),5) Vcl.StdCtrls.TButtonStyleHook.DrawButton($162D2E0,True) Vcl.StdCtrls.TButtonStyleHook.Paint(???) Vcl.Themes.TStyleHook.WMPaint(???) Vcl.Themes.TStyleHook.WndProc((15, 0, 0, 0, 0, 0, (), 0, 0, (), 0, 0, ())) Vcl.Themes.TMouseTrackControlStyleHook.WndProc(???) Vcl.StdCtrls.TButtonStyleHook.WndProc((15, 0, 0, 0, 0, 0, (), 0, 0, (), 0, 0, ())) Vcl.Themes.TStyleHook.HandleMessage((15, 0, 0, 0, 0, 0, (), 0, 0, (), 0, 0, ())) Vcl.Styles.TStyleEngine.HandleMessage($15B0A30,(15, 0, 0, 0, 0, 0, (), 0, 0, (), 0, 0, ()),(Vcl.StdCtrls.TButtonControl.WndProc,$15B0A30)) Vcl.Themes.TStyleManager.HandleMessage($15B0A30,(15, 0, 0, 0, 0, 0, (), 0, 0, (), 0, 0, ()),(Vcl.StdCtrls.TButtonControl.WndProc,$15B0A30)) Vcl.Controls.TWinControl.DoHandleStyleMessage(???) Vcl.Controls.TWinControl.WndProc((15, 0, 0, 0, 0, 0, (), 0, 0, (), 0, 0, ())) Vcl.StdCtrls.TButtonControl.WndProc((15, 0, 0, 0, 0, 0, (), 0, 0, (), 0, 0, ())) Vcl.Controls.TWinControl.MainWndProc(???) System.Classes.StdWndProc(466542,15,0,0) |
AW: VCL Styles : ignoriert Schiftart
Moin Moin.
Nein, habe ich nicht. Denn genau an der Stelle werde ich sauer. Ich habe hier 3 Rechner (Win 10 Home, Win 10 Prof., Delphi Starter Community Edition, Delphi 10 Prof.) Auf allen habe ich die oben beschriebene Aktion ausgeführt. Auf allen passiert das Gleiche - nix. Ich hatte die Verwendung von VCL Styles/FMX Styles als planmäßige Vereinfachung zur optischen Gestaltung der Bedienoberfläche angesehen, die eine Programmierumgebung anbietet. Offensichtlich läuft das aber nicht oder eben nur mit einigen Rumgefummel, das dem Vereinfachungsgedanken eindeutig entgegensteht. Das die eine oder andere Komponente mal mangels Anpassung nicht mit einem Style zusammenarbeitet kann ich noch verknusen. Das an den Dialogboxen rumgefummelt werden muss da WIN spezifisch - okay. Aber solche lapidaren Dinge wie Buttons oder Listboxen aus dem Standardrepertoire? Die VCL Styles Utils (Rodrigo Ruz) habe ich mit besorgt nach dem Motto: Da hast du Dödel wohl irgendwas übersehen. Aber: auch das Tool zeigt auf allen Rechnern die Schriftarten nicht an. Farbänderungen, die Formbeschriftung usw. schon, aber alles läuft auf die Standardschriftart hinaus. Vielleicht mache ich ja auch grundlegend etwas falsch. Oder ich vergesse etwas weil ich es nicht weiß. So jedenfalls ist die Abteilung VCL Styles für mich noch Mummpitz. Ich lasse mich gerne eines besseren belehren. creehawk |
AW: VCL Styles : ignoriert Schiftart
Vermutung: Die Schriftart, die im Objektinspektor für die visuelle Komponente eingetragen ist, überschreibt die Schriftart aus dem Style und "gewinnt".
Ich vermute, dass ist sogar "as designed". |
AW: VCL Styles : ignoriert Schiftart
Ein konkretes Testbeispiel wäre hier eventuell hilfreich.
|
AW: VCL Styles : ignoriert Schiftart
Moin Moin.
Beispiel? Hae ich doch oben schon - grob - angegeben. Aber es geht auch kürzer. Bitmap-Stil-Designer starten. Den Stil <Sky> laden. Über den Menübefehl <Stil> <Schriftname zuweisen> eine Schrift auswählen, zur Abschreckung <Comic Sans MS>. Speichern. Mit <F9> Stil testen. Die Formname wird hübsch in der gewählten Schriftart angezeigt. Sonst aber nix. In der Liste der Objekte des Bitmap-Stil-Designers ist die Schriftart überall eingestellt und wird dort auch angezeigt. Und wenn ich nun eine normale VCL Anwendung erstelle, Button + Listbox + Label auf die Form setze, in den Projekt Optionen>Erscheinungsbild >Sky< auswähle und als Standard festlege passiert - auch nix. Die Formüberschrift ist Comic Sans, sonst nichts. creehawk |
AW: VCL Styles : ignoriert Schiftart
Moin Moin.
Also nichts Neues? VCL Styles sind also Mummpitz? creehawk |
AW: VCL Styles : ignoriert Schiftart
Bitte wie oben vorgeschlagen einfach mal hinterher debuggen und deine Erkenntnisse teilen.
|
AW: VCL Styles : ignoriert Schiftart
Zitat:
|
AW: VCL Styles : ignoriert Schiftart
Ich habe das mal überprüft. Es gibt nur wenige Stellen, bei denen der Font-Name im Style ausgewertet wird. Tatsächlich habe ich nur die Form-Caption gefunden, aber ich kann andere nicht ausschließen. Bei den anderen Controls wird der eingestellte Font verwendet, was angesichts des ParentFont-Features ja durchaus sinnvoll sein kann. Lediglich die Font-Farbe wird aus dem Style genommen, solange das nicht im Control abgewählt ist.
Kurz gesagt: Du hast dir genau das eine Feature rausgesucht, das vom VCL-Styling nicht unterstützt wird. |
AW: VCL Styles : ignoriert Schiftart
Moin.
Ist ja wohl so. Ergo ist VCL Styles letztlich Mummpitz, denn nach meiner Meinung ist die Schriftart ja wohl ein elementarer Bestandteil einer optisch angepassten Form. Machen wir es also wieder zu Fuß. creehawk |
AW: VCL Styles : ignoriert Schiftart
Zitat:
Deine Vorstellung ist zwar auch nachvollziehbar, widerspricht aber der VCL-Architektur. Aber gerade dank dieser Architektur kannst du deine Vorstellung durch eine einzige Zuweisung des Font-Namens im Form realisieren. Wäre der andere Ansatz implementiert worden, müssten jetzt alle VCL-Style-User, die das nicht wollen, bei jedem Control den Font aus dem Styling herausnehmen und auch noch für eine entsprechende Farbeinstellung sorgen. Die aktuelle Implementierung ist also alles andere als Mummpitz, sondern der deutlich bessere Weg. |
AW: VCL Styles : ignoriert Schiftart
Ca. 8 von 10 Nutzern der VCL Styles würden sich in Grund und Boden ärgern, wenn ihre im Programm (und ggf. vom Nutzer) eingestellte Schriftart vom Style überschrieben würde.
Merke: Nur weil es für DEINEN Anwendungsfall nicht passt, heißt es nicht, dass es Mumpitz ist. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:51 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