Hallo!
Ich arbeite mit Delphi 2009 und bastle an einer eigenen Komponente. Diese besteht aus einem Panel als Basis auf dem mehrere andere Komponenten angeordnet sind, darunter auch ein TImage.
Während der Laufzeit soll das TImage nun unterschiedliche Icons anzeigen die aus einer Resourcedatei stammen:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44:
| type TMyComponent = class(TCustomPanel) protected FHeaderImage : TImage;
procedure TuWas; public constructor Create(AOwner: TComponent); override; published end;
implementation
uses PNGImage;
constructor TMyComponent.Create(AOwner: TComponent); var PNGImage : TPNGImage; begin inherited;
FHeaderImage := TImage.Create(self); FHeaderImage.Parent := self; FHeaderImage.Left := 7; FHeaderImage.Top := 7; FHeaderImage.Width := 16; FHeaderImage.Height := 16; PNGImage.LoadFromResourceName(HInstance, 'PNGIcon'); FHeaderImage.Picture.Assign(PNGImage); end;
...
procedure TMyComponent.TuWas; var PNGImage : TPNGImage; begin ... PNGImage.LoadFromResourceName(HInstance, 'PNGIcon'); FHeaderImage.Picture.Assign(PNGImage); end; |
Während die Zuweisung des Bildes im Konstruktor ohne Probleme funktioniert, erhalte ich in der Prozedur TuWas eine EAccessViolation in der Zeile FHeaderImage.Picture.Assign(PNGImage); Kann jemand einen Grund hierfür erkennen? Mir ist schleierhaft warum die gleiche Zuweisung an den beiden Stellen mal funktioniert und mal nicht.
FHeaderImage wird zwischendurch natürlich nicht freigegeben, etc. Setze ich in der Zeile einen Haltepunkt sieht man, dass FHeaderImage korrekt zugewiesen ist.
Sieht jemand wo das Problem liegen könnte?