Einzelnen Beitrag anzeigen

heiopei
(Gast)

n/a Beiträge
 
#1

Canvas als Property übergeben...

  Alt 26. Sep 2007, 16:33
Hallo,
ich bin dabei, eine Komponente zu entwickeln, der ein Canvas als Property zugewiesen werden soll.
Die Komponente soll dann auf das Canvas zeichnen können...

Außerdem möchte ich eine Komponente entwerfen (Komponente 1), die sowohl oben beschriebene Komponente (Komponente 2) als auch ein Bitmap enthält. Dem Canvas von Komponente 2 soll nun das Canvas des Bitmaps von Komponente 1 zugewiesen werden.

Also etwa so

- Komponente 2
|_Canv: TCanvas;
|... Zeichnen-Funktionen, die auf das Canvas Zeichnen

- Komponente 1
|_ Bild: TBitmap; .Canvas-----------
|_ Komp2: TKomponente2; |
|_Canv := <---------------------

Hoffe man versteht die Grafik
Die Zuweisung des Canvas erfolgt natürlich erst z.B. bei der Erzeugung von Komponente 1.


Meine Fragen:
a) wie muss ich das property "Canv" genau definieren, damit ich keine AV bekomme
(ich würde sagen property Canv: TCanvas read FCanv write SetCanv; wobei SetCanv dem Feld FCanv
mittels FCanv.Assign den Übergabewert zuweist)
b) wie muss ich dem property Canv einen Canvas übergeben
(einfach Komp1.Canv := Bild.Canvas ?!?)

Ich bekomme immer eine AV, oder es passiert nichts.

Danke im vorraus,
heiopei

PS: sorry, dass ich das so theoretisch und ohne code-beispiel mache, aber es fällt mir so irgendwie leichter, das Problem zu beschreiben.



Edit: Ich habe gerade nochmal folgendes getestet:
a) eine Komponente 2 namens Comp2
b) ein TImage namens Image1
c) eine Zuweisung auf Buttonclick: Comp2.Canv := Image1.Canvas;
=> Es kommt die Fehlermeldung: 'Cannot assign a TBitmapCanvas to a TCanvas.'

(Canv wurde als property wie oben von mir vorgeschlagen definiert, also mit Setter-Funktion)

Wo hängt's?
  Mit Zitat antworten Zitat