Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Regions wieder freigeben (https://www.delphipraxis.net/148579-regions-wieder-freigeben.html)

joe663 4. Mär 2010 14:21


Regions wieder freigeben
 
Hallo!
ich erzeuge eine Fahne(aus einem TPanel) auf einem Image;
das geht auch soweit so gut; die Fahne selbst ist
eine Region und erzeuge ich so wie unten dargestellt.

Delphi-Quellcode:
TFahne = class(TPanel)
...
  hr:HRgn;
  p:array[1..6] of TPoint;
...
end;


constructor TFahne.Create; //Fahne ist vom Typ TPanel
begin
   inherited create(pOwner);

   Visible := true;
//   //eigentl. Fahne
   p[1] := Point(1,3);
   p[2] := Point(10,0);
   p[3] := Point(10,9);
   p[4] := Point(3,12);
   p[5] := Point(3,20);
   p[6] := Point(1,20);

   hr := CreatePolygonRgn(p,6,ALTERNATE);
   SetWindowRgn(Handle,hr,true); //BoundsRect
   SetBounds
      (pLeft2
      ,pTop2-20 
      ,20
      ,20);

end;
jetzt möchte ich die Fahne/das TPanel wieder löschen mit


Delphi-Quellcode:
procedure TFahne.LoeschenAusMap;
begin
   DeleteObject(hr); //soll die Region freigeben
   Free;            //soll das Panel löschen
end;
das geht auch so, lässt sich kompilieren; beim laufen verursacht
dies aller dings an anderer Stelle einen Fehler "format ungültig ..."
was mache ich hier beim löschen der Fahne verkehrt?
muss ich die Fahne/Panel noch beim Owner bzw. Parent abmelden?

turboPASCAL 4. Mär 2010 14:30

Re: Regions wieder freigeben
 
Prüfe doch einfach mal ob die erst. Reg. noch vorhanden ist vor dem freigeben.

DeddyH 4. Mär 2010 14:35

Re: Regions wieder freigeben
 
Kann ein Objekt sich eigentlich so ohnes Weiteres selbst freigeben? IIRC gab es dazu schonmal eine Diskussion hier.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:04 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz