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/)
-   -   Delphi Delphi 2010 und TLabel Transparents (https://www.delphipraxis.net/156631-delphi-2010-und-tlabel-transparents.html)

x000x 9. Dez 2010 10:19

Delphi 2010 und TLabel Transparents
 
Moin moin,

uns ist vor einer Weile aufgefallen, dass mein Delphi 2010 (Embarcadero® RAD Studio 2010) TLabels defaultmäßig Transparent = False ist. Bei meinem Kollegen (selbe Delphiversion) ist das hingegen defaultmäßig Transparent = True. (In D5 ist ein TLabel auch per Default immer Transparent = False gewesen)

Da sind natürlich Probleme bei der Entwicklung von mehreren Entwicklern an einem Projekt vorprogrammiert.

Kann man eventuell irgendwo in D2010 das default-Verhalten der TLabels einstellen bzw. hat jemand eine Idee, warum das bei meinem Kollegen anders ist als bei mir?
(Die Units StdCtrls sind auf beiden Rechnern die gleichen)

jbg 9. Dez 2010 11:44

AW: Delphi 2010 und TLabel Transparents
 
Du hast das Theming deaktiviert, dein Kollege hat es aktiviert.

Zitat:

{ The "default" value for the Transparent property depends on
if you have Themes available and enabled or not. If you have
ever explicitly set it, that will override the default value. }

x000x 9. Dez 2010 12:47

AW: Delphi 2010 und TLabel Transparents
 
Moin Andreas,

danke für den entscheidenden Hinweis... das suchen hat nun ein Ende *freu* (Hät ich mal ins Create vom TCustomLabel geschaut)

Obwohl ich dieses Verhalten ehrlich gesagt nicht schön - eigentlich absurt - finde. Mir fällt keine Erklärung ein, warum - wenn ich in meinem Windows XP als Design "Klassisch" eingestellt habe - die Labels dann per default Transparent = False sind. bzw. wenn ich als Design WinXP wähle, die Labels dann per default Transparent sind. (Bei D5 bleiben bleibt es per default immer False)
Dann müssten - meiner Meinung nach - auch diese Propertyeinstellungen IMMER in der DFM mit abgespeichert werden, da sonst die selbe Anwendung einmal mit Theming geöffnet anders ausschaut als wenn das Theming deaktiviert ist.

Beispiel:
Kollege arbeitet mit Theme und zieht ein Label (per default transparent) über ein Picture beschriftet es fein, kompiliert die Anwendung und liefert sie aus.
Kollege ist krank und es muss irgendein BUG gebhoben werde. Ich öffne die Sourcen (Ohne Theme) und denke mir - was hat der denn da gemacht, das Label muss doch transparent - stell es auf Transparent und alles ist wieder prima.

Das heisst doch, dass wenn jemand ein Label auf eine Form zieht (und es ist wichtig dass die Transparenteigenschaft so ist wie sie sein soll), muss er immer von Hand einmal die Transparents ändern, damit das in der DFM mit gespeichert wird?! Warum werden dann die Theme-Abhängigen Eigenschaften nicht immer in der DFM gespeichert?

Gibt es vieleicht noch einen Trick, wie man bei unetrschiedlichen Designs trotzdem gleiches Verhalten bekommen kann - ohne expliziet das Property im Objektinspektor zu setzen?

plusplus 9. Dez 2010 12:58

AW: Delphi 2010 und TLabel Transparents
 
I usually create a base window and inherits all my forms from that base, in the create method of the base form I place a loop:

Code:
uses TypInfo;

for i := 0 to ComponentCount -1 do
begin
  if GetPropInfo(Components[i], 'Transparent') <> nil then
  SetPropValue(Components[i], true);
end;
of course you can also put a if ClassType statement on top.

basically, in the base form I change all properties the way I want them to be, thus I don't need to change it manually in the property editor by hand.

x000x 9. Dez 2010 13:29

AW: Delphi 2010 und TLabel Transparents
 
@plusplus: Danke...

Noch schlimmer wird es ja bei Umstellungen von Projekten aus Delphi 5... Hier ist es ja ein MUSS, das Theming vorher abzuschalten, damit man wirklich das sieht was man sehen sollte.
(Kann ja sein, das Embarcadero® das irgendwo erwähnt hat - ich habs noch nicht gelesen)

Was spricht eigentlich dagegen, solche Propertys immer in der DFM zu speichern - also auch wenn an dem Default-Wert nichts geändert wurde?


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