![]() |
Delphi-Version: 10 Seattle
Wie zeichne und bearbeite ich einen Bereich, bevor ich ein Loch in das Formular mache
Mit dem folgenden Code können Sie einen Bereich zeichnen und ein Loch in das Formular einfügen.
Wie kann ich diesen Bereich zeichnen und bearbeiten (kein Loch in einem bestimmten Bereich erstellen), bevor ich das Loch in Form mache? z.B: ![]()
Delphi-Quellcode:
type
TForm1 = class(TForm) procedure FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure FormPaint(Sender: TObject); private { Private declarations } FSelecting: Boolean; FSelection: TRect; pos1, pos2, pos3, pos4: Integer; Region, Region2: HRGN; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin FSelection.Left := X; FSelection.Top := Y; FSelecting := true; end; procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if FSelecting then begin FSelection.Right := X; FSelection.Bottom := Y; Invalidate; end; end; procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin FSelecting := false; FSelection.Right := X; FSelection.Bottom := Y; Invalidate; FSelection.NormalizeRect; if FSelection.IsEmpty then else begin pos1 := FSelection.Left; pos2 := FSelection.Top; pos3 := X; pos4 := Y; Region := CreaterectRgn(0, 0, Width, Height); Region2 := CreaterectRgn(pos1, pos2, pos3, pos4); CombineRgn(Region, Region, Region2, RGN_DIFF); SetWindowRgn(Handle, Region, True); end; end; procedure TForm1.FormPaint(Sender: TObject); begin Canvas.Brush.Style := bsClear; Canvas.Pen.Style := psSolid; Canvas.Pen.Color := clRed; Canvas.Rectangle(FSelection); end; |
AW: Wie zeichne und bearbeite ich einen Bereich, bevor ich ein Loch in das Formular m
Eventluel mit einem Zustandsflag, welches anzeigt, ob die Zeichenoperation
schon erfolgt ist und erst dann wird der Loch machende Code ausgeführt, wenn dieses Flag das signalisiert? |
AW: Wie zeichne und bearbeite ich einen Bereich, bevor ich ein Loch in das Formular m
Ich würde den Benutzer für den Zweck zuerst nur markieren lassen und danach dann auf expliziten Befehl die Fensterregion setzen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:15 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz