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/)
-   -   Warum werden einige Buttons anders dargestellt? (https://www.delphipraxis.net/186164-warum-werden-einige-buttons-anders-dargestellt.html)

Harry Stahl 9. Aug 2015 17:50

Warum werden einige Buttons anders dargestellt?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Gerade stehe ich vor einem Rätsel:

Im Screenshot zu sehen, dass einige Buttons bei einem geladenen VCL-Style anders dargestellt werden, als die anderen (nämlich mit einem grauen Hintergrund).

Die Buttons haben im Prinzip die gleichen Einstellungen. Wenn im Zustand "Down" sehen alle gleich aus (wie der erste Schalter), wenn im Zustand "Up" sehen aber drei anders aus. Warum nur?

Hier ein Auszug aus der DFM-Datei:

Delphi-Quellcode:

// Wird richtig angezeigt
 object sbShowFolder: TSpeedButton
          Left = 42
          Top = 1
          Width = 37
          Height = 26
          Hint = 'Order in Dateiliste zeigen (F7)'
          AllowAllUp = True
          GroupIndex = 5657
          Flat = True
          Font.Charset = DEFAULT_CHARSET
          Font.Color = clWindowText
          Font.Height = -13
          Font.Name = 'Tahoma'
          Font.Style = []
          Glyph.Data = {... // weggelassen}
          NumGlyphs = 2
          ParentFont = False
          ParentShowHint = False
          ShowHint = True
          OnClick = sbShowFolderClick
        end

// wird nicht richtig angezeigt (hat grauen Hintergrund):
object sbInfos: TSpeedButton
          Left = 84
          Top = 1
          Width = 37
          Height = 26
          Hint = 'Details zur Datei anzeigen'
          AllowAllUp = True
          GroupIndex = 565888
          Flat = True
          Font.Charset = DEFAULT_CHARSET
          Font.Color = clWindowText
          Font.Height = -13
          Font.Name = 'Tahoma'
          Font.Style = []
          Glyph.Data = {...}
          ParentFont = False
          ParentShowHint = False
          ShowHint = True
          OnClick = sbInfosClick
end;
OK, einmal Numglyphs= 2, einmal nur eins. Aber das kann es nicht sein, da der Schalter "Ansicht" auch nur ein Glyph hat und der wird richtig angezeigt.

Verwendete Delphi Version ist XE7 unter Windows 10.

Luckie 9. Aug 2015 19:04

AW: Warum werden einige Buttons anders dargestellt?
 
Haben auch alle Bitmaps den gleichen Hintergrund?

Bernhard Geyer 9. Aug 2015 19:25

AW: Warum werden einige Buttons anders dargestellt?
 
bei diesen drei Property Numglyph gleich?

Dejan Vu 9. Aug 2015 20:35

AW: Warum werden einige Buttons anders dargestellt?
 
Sind die Buttons auch unterschiedlich, wenn GroupIndex=-1 ist?

redox 9. Aug 2015 21:48

AW: Warum werden einige Buttons anders dargestellt?
 
So viele Rückfragen. Wie wär's mit einem Demo-Projekt? Bei dem dann blöderweise alles funktionieren würde... - wegen der Rückfragen :wink:

MfG

Luckie 9. Aug 2015 22:00

AW: Warum werden einige Buttons anders dargestellt?
 
Lass ihn doch mal antworten. Er ist vielleicht nicht 24h online und hat noch anderes zu tun. Das ist hier kein Chat.

Harry Stahl 9. Aug 2015 23:36

AW: Warum werden einige Buttons anders dargestellt?
 
Die Bitmaps haben den gleichen Hintergrund ( dieses hübsche clFuchsia). Numglyhs sind alle korrekt gesetzt. Ja, ich werde morgen Abend mal einen Auszug machen und ein Demoprojekt hochladen ( mit der Befürchtung, dass dann alles funktioniert, wie hier schon angedeutet...).

Ohne geladenen VCL-Styles ist übrigens alles korrekt...

Harry Stahl 10. Aug 2015 17:18

AW: Warum werden einige Buttons anders dargestellt?
 
Wie vermutet: Demoprojekt erstellt und dann keine Probleme mehr...

Ursache habe ich aber gefunden: Die grau dargestellten Buttons hatten die Eigenschaft Transparent = false.

Dazu kamen Sie erst zur Laufzeit, daher konnte man das nicht so einfach anhand der Einstellungen heraus finden.

Es handelte sich letztlich um einen unerwünschten Nebeneffekt aus der Umstellung von Delphi 2007 auf Delphi XE7. In Delphi 2007 Update 1 war noch ein Problem mit den TSpeedButtons, wenn die Transparent waren, auf einem Panel lagen und das XP-Theme verwendet wurde:

QC Short Description]
TSpeedButton.Transparent broken

[QC Description]
TSpeedButton.Transparent is broken after applying Update 1. This happens when using Themes and the button is placed on a container (e.g. a TPanel) and not directly on a form."


Ein WorkAround dafür hat im Code bis heute überlebt (obwohl das Problem mit D2007 Update 2 oder 3 schon behoben war), jetzt mit der Verwendung der Styles (ja erst in den neueren Delphis möglich) fiel es aber auf.

Tja, Umstellung von Delphi 2007 oder noch älter auf die neueren Delphis ist halt nicht immer nur ein Unicode Thema...


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