我要的效果就和在Windows的桌面上按下鼠标左键然后就会随着鼠标的移动产生一个矩形的方框一样。一定是要随着鼠标的移动一起产生。
解决方案 »
- 如何查找目标应用程序的主图标偏移和大小?500分
- 我的报表如何可以一页纸分两列打印2页纸的内容啊?谢谢先!
- 高分求助
- 哪位用过picshow控件的请指点一下
- 问一下Delphi7 SQL Server 开发的一个C/S结构程序..最多支持多少台客户端
- 关于Delphi7中编译出现的Unsafe type 、Unsafe code 信息,请大家进来讨论
- 如何对月份进行增加,比如2003-11-1 加上3 就成了2004-2-1??
- 简单问题
- 怎样让等于0的数据集中的数据,在DBGRID中不显示为0或者是0.00,而是显示为空白???
- 一个简单的问题!
- delphi 主程序调用bpl非模式MDI窗口问题。
- 想不明白了,疯了
Shift: TShiftState; X, Y: Integer);
begin
ptOld.X:=X;
ptOld.Y:=Y; //这里矩形的起点
pb.Canvas.Brush.Style:=bsClear;
pb.Canvas.Pen.Style:=psDot;
pb.Canvas.Pen.Mode:=(pmXor);
pb.Canvas.Pen.Color:=clRed; //花红色矩形,空心
rOld:=Rect(0,0,0,0);
end;procedure TForm1.pbMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if not (ssLeft in Shift) then exit;
pb.Canvas.Rectangle(rOld); //清除上一个矩形
pb.Canvas.Rectangle(ptOld.X,ptOld.Y,X,Y); //花当前矩形
rOld:=Rect( ptOld.X,ptOld.Y,X,Y);
end;procedure TForm1.pbMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
pb.Canvas.Pen.Style:=psSolid; //当鼠标抬起时把那个矩形画入paintbox
pb.Canvas.Pen.Mode:=pmCopy;
pb.Canvas.Rectangle(rOld);
end;
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Menus, cxLookAndFeelPainters, cxButtons, Buttons;type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
cx,cy:Integer;
md:Boolean;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.DoubleBuffered:=true;
md:=false;end;procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
md:=true;
cx:=x;
cy:=y;
end;procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
md:=false;
end;procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if md then
begin
Form1.Canvas.Rectangle(cx,cy,X,Y);
end;
end;end.
[email protected] 谢谢!
procedure TForm1.pbMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if not (ssLeft in Shift) then exit;
pb.Canvas.Rectangle(rOld); //清除上一个矩形
pb.Canvas.Rectangle(ptOld.X,ptOld.Y,X,Y); //花当前矩形
rOld:=Rect( ptOld.X,ptOld.Y,X,Y);
end;bluekitty的这段代码中用到了两次Rectangle,怎么第一次是清除上一个矩形啊,不太明白