Um das noch mal in Erinnerung zu bringen, hier der Code den ich gepostet habe
Delphi-Quellcode:
procedure TMyControl.DoInvisible;
begin
//gesamten Clientbereich erfassen
if FullRgn <> 0
then
DeleteObject(FullRgn);
FullRgn := CreateRectRgn(0, 0, Width, Height);
//'Mask' alles unsichtbar
CombineRgn( FullRgn, FullRgn, FullRgn, RGN_DIFF );
// alle sichtbaren Bereiche einblenden
PointRgn := CreateRectRgn( X, Y, Width, Hight);
// das ist ein Bereich im Rect der eingeblendet wird
CombineRgn( FullRgn, FullRgn, PointRgn, RGN_OR );
DeleteObject(Pointrgn);
// alles Kombiniert und fertig
SetWindowRgn(
Handle, FullRgn, TRUE);
end;
Hier wird nirgens der FullRgn nach SetWindowRgn angefaßt!
Das einzige, was gelöscht wird ist PointRgn. PointRgn wird aber nur für die Kombination der Sichtbaren Bereiche(PointRgn; heisst bei mir so, weil das Rect-Bereiche von Eckpunkten sind) auf den FullRange verwendet. Das dann in einer Schleife.
Ob in meinem ersten Bereich das DeleteObject auf FullRange jetzt korrekt ist, keine Ahnung, bin ich jetzt auch etwas unsicher. Dort wird auf jeden Fall erst mal das ganze Control/Form unsichtbar gemacht.
Im mittleren Abschnitt werden alle sichtbaren Bereiche auf FullRgn kombiniert und im letzten Abschnitt alles gesetzt.
Das was Tom macht ist den letzten Teil meines (auch hier dem Forum entlehnt) Codes herauszunehmen. Der Anfangs- und Mittelteil fehlt völlig und der Rest ist inkorrect!
Kein Wunder, dass nichts mehr geht.
Gruß oki