// 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





