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/)
-   -   Transparenzproble, mit TPngImageList und TToolbar (https://www.delphipraxis.net/154032-transparenzproble-mit-tpngimagelist-und-ttoolbar.html)

bwolf 25. Aug 2010 14:33

Transparenzproble, mit TPngImageList und TToolbar
 
Hi Leute,

habe ein sehr seltsames Problem.
Wir haben eine Anwendung (bestehende) die eine TPngImageList, eine TToolBar und TButtons verwendet.
Problem ist, das die Buttons zur Designzeit gut aussehen, zur Laufzeit schwarte Ränder haben.

Was seltsam ist:
Ich habe nun die TPngImageList, TToolBar und TButtons aus der besthenden Anwendung kopiert und in eine neue Testanwendung eingefügt.
In der Testanwenndung sieht es sowohl zur Laufzeit als auch zur Designzeit gut aus.

Was sehr seltsam ist:
Wenn ich die Testanwendung nun als neues Projekt abspeichere und kompieliere, passt immer noch alles.
Wenn ich nun von der Testanwendung alle temporären Files lösche (*.local, *.identcache, *.res, *.dcu) und dann die Anwendung neu kompiliere, sehen die Icons nun auch in der Testanwendung genau so schlecht aus wie in der bestehenden Anwendung.

Kann mir vieleicht einer erklären was hier los ist?
1000 Dank!

Bernhard Geyer 25. Aug 2010 14:40

AW: Transparenzproble, mit TPngImageList und TToolbar
 
Speicher mal die PNGs mit 32-Bit Farbtiefe.

Die PNG-Implemtierung die TPngImageList könnte u.U. probleme mit diversen PNG-Codierungen haben.

bwolf 25. Aug 2010 15:10

AW: Transparenzproble, mit TPngImageList und TToolbar
 
Hi,

danke für den Hinweiß, die PNG's sind allerdings bereits in 32 bit und funktionieren eigentlich ja auch.

Ich habe grade bemerkt, das wenn ich das Projekt neu compiliere und die res file neu erzeugt wurde, diese anders aussieht als die res-file, die beim ersten kompielieren erzeugt wurde - und auch die Ursache für die falsche Darstellung der Grafiken verantwortlich ist.
Allerdings verstehe ich nicht, wie aus den selben Sourcen unterschiedliche Res-Files entstehen?

In der "Original" .res-File steht noch dieses XML hintendran:
Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity
    type="win32"
    name="CodeGear RAD Studio"
    version="12.0.3420.21218"
    processorArchitecture="*"/>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
        type="win32"
        name="Microsoft.Windows.Common-Controls"
        version="6.0.0.0"
        publicKeyToken="6595b64144ccf1df"
        language="*"
        processorArchitecture="*"/>
    </dependentAssembly>
  </dependency>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel
          level="asInvoker"
          uiAccess="false"/>
        </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>

Uwe Raabe 25. Aug 2010 15:31

AW: Transparenzproble, mit TPngImageList und TToolbar
 
Die Version der "Windows Common-Controls" sind die Ursache für dein Problem. Aktiviere in den Projekt-Optionen unter Anwendung mal die Laufzeit-Themes. Da Delphi diese in der IDE aktiv sind, funktioniert die Darstellung dort auch.

bwolf 25. Aug 2010 15:38

AW: Transparenzproble, mit TPngImageList und TToolbar
 
:thumb:
Vielen vielen Dank!
Ich probiere hier seit Stunden rum, und mal wieder ist es so eine Kleinigkeit.
Das Programm wurde ursprünglich in Delphi 7 geschrieben, gibts es die Option da auch?

Uwe Raabe 25. Aug 2010 20:24

AW: Transparenzproble, mit TPngImageList und TToolbar
 
Zitat:

Zitat von bwolf (Beitrag 1044917)
:thumb:
Vielen vielen Dank!
Ich probiere hier seit Stunden rum, und mal wieder ist es so eine Kleinigkeit.
Das Programm wurde ursprünglich in Delphi 7 geschrieben, gibts es die Option da auch?

Bei Delphi 7 kann man die Komponente XPMan in das Hauptformular einfügen.

Ich weiß, das ist die Milchmädchenlösung, denn das Hinzufügen der Komponente bewirkt lediglich, daß eine Unit verwendet wird, die wiederum nur eine Resource mit einbindet, die ein entsprechendes Manifest enthält. Und es gibt einen Haufen Ansätze, daß effizienter und eleganter zu gestalten. Aber die erste Antwort war irgendwie kürzer...


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