Einzelnen Beitrag anzeigen

Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Screenshot - Rahmen um Bereich ziehen

  Alt 20. Nov 2009, 10:25
Die eigentliche Frage ist ja schon beantwortet. Man kann auch in der Delphi-Hilfe nach pmNotXor suchen, 2. Eintrag "Bewegungen zwischenspeichern" beschreibt wie man so ein Gummiband programmiert.

Die Variablen ab xpos gehören im private-Abschnitt des Formulars/Klasse deklariert.

Hier wird DHandle zwei mal freigegeben:
Delphi-Quellcode:
ReleaseDC(0, DHandle);
DCanvas.Free;
Einmal direkt und einmal durch den Canvas, der sich als Eigentümer des Handles betrachted.
(Aktuelle Windowsversionen sind zum Glück so stabil, daß sie solche Programmierfehler nicht mit einem Totalabsturz beantworten.)

Deshalb sind auch die Exceptblöcke mit ReleaseDC falsch.
Ist das Handle einmal dem TCanvas zugewiesen, ist die Variable DHandle überflüssig.
Überprüfen kann man Assigned(DCanvas), sollten diesen dann aber auch mit FreeAndNil(DCanvas) freigeben.
  Mit Zitat antworten Zitat