![]() // Beim Ziehen mit
gedrücktgehaltener linken Maustaste wird auf unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; Button6: TButton; Button7: TButton; Button8: TButton; Button9: TButton; Button10: TButton; Button11: TButton; Button12: TButton; Button13: TButton; Button14: TButton; Button15: TButton; Button16: TButton; Button17: TButton; Button18: TButton; Button19: TButton; Button20: TButton; procedure FormCreate(Sender: TObject); 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 Button1Click(Sender: TObject); private { Private-Deklarationen } public procedure zeichnen; end; var Form1: TForm1; implementation {$R *.DFM} var isdown: Boolean; anfang, ende: TPoint; procedure TForm1.FormCreate(Sender: TObject); begin with Canvas do begin Brush.Style := bsClear; Pen.Mode := pmNotXor; Pen.Color := clBlack; Pen.Style := psDot; Pen.Width := 1; end; end; procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Button = mbLeft then begin isdown := True; anfang := Point(X, Y); ende := Point(X, Y); end; end; procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if isdown then begin zeichnen; ende := Point(X, Y); zeichnen; end; end; procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var r: TRect; v, i: integer; begin if isdown then begin isdown := False; refresh; if anfang.x > X then begin v := anfang.x; anfang.x := X; X := v; end; if anfang.y > Y then begin v := anfang.y; anfang.y := Y; Y := v; end; for i := 0 to pred(componentcount) do if components[i] is TButton then begin if InterSectRect(r, rect(anfang.x, anfang.y, X, Y), TButton(components[i]).BoundsRect) then sendmessage(TButton(components[i]).handle, bm_click, 0, 0); end; end; end; procedure TForm1.zeichnen; begin Canvas.Rectangle(anfang.X, anfang.Y, ende.X, ende.Y); end; // zum Testen: procedure TForm1.Button1Click(Sender: TObject); begin showmessage(TButton(Sender).name + ' wurde angeklickt.'); end; end. |
Zugriffe seit 6.9.2001 auf Delphi-Ecke