Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#2

AW: Komponente Image Designtime zeichnen

  Alt 6. Aug 2022, 08:53
Du mußt diesen ComponentState beim Owner prüfen (wenn es ihn gibt).

Deine Komponente wird "hier" gerade erst erstellt ... wie sollte da jemand jetzt schon diese Eigenschaft gesetzt haben?
(nein, es gibt im TObject/TComponent.Create keinen Code dafür und, wie bei TForm, wird vom Formdesigner das Objekt auch nicht erstellt, bevor Create ausgeführt wird)




Auf den Canvas zu malen ist dort eh falsch, weil erst nach dem Create der Parent zugewiesen wird, also erst da wird erstmalig wirklich gezeichnet.
Und beim nächsten Repaint ist dein dort Gemaltes sowieso wieder weg.

Bitmap.Canvas oder und das Bitmä vorher auf passende Größe sezten.
Dann beim Resize erneut malen.
Oder notfals im (ersten) OnPaint Paint malen.



ODER, so wie es nahezu jede andere Komponete macht,
also im OnPaint Paint bei csDesigning immer das Alternative "wirklich" auf direkt den Canvas malen (inherited womöglich nicht ausführen).




PS: Deine Komponente zu debggen, oder zumindestens ein ShowMessage in das IF (oder Loggen oder den Zustand in Published-Property speichern), hätte dir gezeigt, daß dein Code dort niemals ausgeführt wurde.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 6. Aug 2022 um 09:02 Uhr)
  Mit Zitat antworten Zitat