Dein Fehler ist schon mal, dass du eine ganz konkrete Klasse TPngObject verwendest.
Richtig wäre, die Klasse
TPicture zu verwenden:
property UpPicture: TPicture read FUpPic write SetUpPic;
Durch die Verwendung von TPicture kann man beliebige Bilder BMP, GIF, JPEG, PNG,... laden.
Vorraussetzung zum Laden von PNG-Bildern ist aber, dass die
Unit pngimage eingebunden ist.
Diese
Unit wird aber auch schon zur Entwicklungszeit benötigt!!!
Daher musst du dir ein Designtime-
Package erstellen, die
Unit pgnimage hinzufügen und in der
IDE installieren.
Dazu muss man wissen, dass Delphi ein Plugin-System für Grafiken hat.
Nur wenn die
Unit pngimage dieses Plugin-System richtig verwendet, kann die ganze Sache funktionieren.
Neue Grafiktypen müssen über TPicture.RegisterFileFormat in der
VCL registriert werden.
Wenn also RegisterFileFormat im Abschnitt Initialization der
Unit pngimage nicht aufgerufen wird, dann läuft etwas falsch.