Thema: Delphi Canvas.draw problem

Einzelnen Beitrag anzeigen

Muetze1
(Gast)

n/a Beiträge
 
#6

Re: Canvas.draw problem

  Alt 28. Sep 2006, 16:16
Der Inspektor sollte auch mit der Eigenschaft klarkommen, wenn du die Instanz von Graphic in der Komponente erzeugst und beim Setter der Eigenschaft darauf achtest, dass du dir die interne Instanz nicht überschreibst, sondern dass diese mit Assign() die zugewiesene Instanz inhaltlich übernimmt.

Nochmal im Detail:

1. Im Constructor alle Instanzen von TGraphic erzeugen
Delphi-Quellcode:
FGraphic := TGraphic.Create;
FGraphicOver := TGraphic.Create;
FGraphicDown := TGraphic.Create;
2. In den Setter mit Assign() arbeiten damit du deine Instanz behälst.
Delphi-Quellcode:
procedure TEButton.SetGraphic(const Value: TGraphic);
begin
  FGraphic.Assign(Value);
  RePaint;
end;
3. Im Destruktor die Instanzen wieder freigeben

Bug! Du löscht die Region nach der Übergabe der Region an SetWindowRgn(). Ich empfehle die MSDN zu konsultieren:
Zitat von MSDN: SetWindowRgn():
After a successful call to SetWindowRgn, the system owns the region specified by the region handle hRgn. The system does not make a copy of the region. Thus, you should not make any further function calls with this region handle. In particular, do not delete this region handle. The system deletes the region handle when it no longer needed.
Also unbedingt und sofort das DeleteObject(Rgn) danach rausschmeissen.

Nach weiteren Dingen habe ich nun nicht mehr geschaut...
  Mit Zitat antworten Zitat