![]() |
TPngSpeedButton Image aus den Ressourcen laden?
Hallo,
ich bekomm es einfach nicht hin, dass bei einem PngSpeedButton ein aus der Ressource geladenes Bild angezeigt wird. Ich nutze folgende Funktion, um bei einem Button das Bild zu ändern. resName ist dabei der Name der Ressource.
Delphi-Quellcode:
Es wird kein Fehler erzeugt und nach dem Laden sind auch Daten in der Variable png. Nur eben das Assign scheint keine Wirkung zu haben.
procedure TfrmMain.ChangePicture(resName : string);
var png : TPNGObject; begin png := TPNGObject.Create; try png.LoadFromResourceName(HInstance, resName); if png <> nil then begin btn1.PngImage.Assign(png); btn1.Repaint; end; finally FreeAndNil(png); end; end; Beispielaufruf:
Delphi-Quellcode:
Ressourcedatei:
ChangePicture('StopPNG');
Delphi-Quellcode:
Woran liegt das?
GoPNG RCDATA "D:\Projekte\Delphi\Anderes\Suche\find.png"
StopPNG RCDATA "D:\Projekte\Delphi\Anderes\Suche\cancel.png" Viele Grüße |
Re: TPngSpeedButton Image aus den Ressourcen laden?
Warum nicht direkt ein
Delphi-Quellcode:
Klappt bei mir zumindest wunderbar
PngSpeedButtonX.PngImage.LoadFromResourceName(HInstance,'NAME');
|
Re: TPngSpeedButton Image aus den Ressourcen laden?
Komisch, das funktioniert bei mir leider nicht. Damit hatte ich angefangen und bin dann auf den etwas "umständlicheren" Code gewechselt, in der Hoffnung die Lösung für das Problem zu finden.
Hast du dem PngSpeedButton schon zur Designtime ein PNG zugewiesen? Das ist jedenfalls bei mir der Fall. |
Re: TPngSpeedButton Image aus den Ressourcen laden?
Jetzt ja... funzt super... kann es sein, dass es die resourcen falsch/nicht eingebunden hat? Schau dir die kompilierte exe einfach mal mit nem Resource-Editor an (XNResourceEditor find ich persönlich klasse... eignet sich auch zum erstellen der RES-Files)
|
Re: TPngSpeedButton Image aus den Ressourcen laden?
Mit PE Explorer kann ich mir die Resourcen meines Programmes ansehen und finde da auch die zwei PNG Bilder. Die werden sogar angezeigt ... jedenfalls im PE Explorer.
|
Re: TPngSpeedButton Image aus den Ressourcen laden?
Hrm.. stehn die da auch als RC Data drin? denn nur da raus laden die Buttons... aber müsst ja eigentlich :gruebel:
|
Re: TPngSpeedButton Image aus den Ressourcen laden?
Yup, die stehen als RCDATA drin. Von wo hast du die PNGImage Komponente?
|
Re: TPngSpeedButton Image aus den Ressourcen laden?
Direkt von
![]() und anschliessend im Source-Dir den neusten pngdelphi-code (auf Thany verlinkt) drüber gespielt |
Re: TPngSpeedButton Image aus den Ressourcen laden?
Liste der Anhänge anzeigen (Anzahl: 1)
Von da ich die Komponente auch.
Ich hab mal ein kleines Beispiel Projekt gemacht. Ein PNGSpeedButton mit einen PNG vorbelegt und ein zweiter Button zum Ändern des Bildes beim PNGSpeedbutton. Bei mir passiert da nichts. [EDIT] das mit dem neusten pngdelphi-code probier ich gleich noch aus. [EDIT2] Asuprobiert und leider besteht das Problem weiterhin. |
Re: TPngSpeedButton Image aus den Ressourcen laden?
klingt evtl. kleinlich... aber.. hast du schon mal alles in grossbuchstaben probiert? Wenn das Klappt in die Switch-func am besten gleich ein AnsiUpperCase einbaun ;)
|
Re: TPngSpeedButton Image aus den Ressourcen laden?
Dein Tipp mit alles groß schreiben hilft leider auch nicht.
|
Re: TPngSpeedButton Image aus den Ressourcen laden?
Tjoa... dann kann es aus meiner Sicht nur noch an der Delphi-version liegen -.- woran genau bin ich jetzt aber wirklich überfragt :gruebel:
|
Re: TPngSpeedButton Image aus den Ressourcen laden?
Funktioniert mein Testprogramm bei dir? Ist mit Source und EXE.
|
Re: TPngSpeedButton Image aus den Ressourcen laden?
Nicht versucht zu kompilieren, ABER:
bist du sicher, das wir vom selben reden: Deine Unit:
Delphi-Quellcode:
Meine Unit:
uses ..., uPngSpeedButton, ...;
Delphi-Quellcode:
EDIT: Okay... änder ich es ein geht es mit
uses ..., PngSpeedButton, ...;
Delphi-Quellcode:
btn1.PngImage.LoadFromResourceName(HInstance, 'GoPNG');
btn1.Invalidate; |
Re: TPngSpeedButton Image aus den Ressourcen laden?
Hmmm ... das mit der unterschiedlichen Unit muss ich mir näher ansehen. Danke für den Tipp.
PS: mit Invalidate klappts bei mir auch noch nicht. Aber ich nehm jetzt erstmal die Unit auseinander. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:35 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