请各位高手指点:
如何在程序运行时,鼠标单击时动态产生控件如Label等,同时给该Label赋双击事件,并实现控件位置拖动等功能!
(有实际例子更佳!)
如何在程序运行时,鼠标单击时动态产生控件如Label等,同时给该Label赋双击事件,并实现控件位置拖动等功能!
(有实际例子更佳!)
解决方案 »
- 【虎年贺岁,平安幸福】
- 关于一个多线程的问题!
- DELPHI中如何显示和读取PDF文件?有没有这方面的组件?大家帮忙啊,急死了
- 如何修改服务器的时间?
- 关于选择人生道路发展的?CSDN的是朋友进来聊两句,给我指个明路!
- delphi调用 dll 的问题
- TQuery 和TTable的性能比较的问题
- 菜鸟散分:delphi6如何已经加了密的access数据库(当然是知道密码的)
- Bold for Delphi
- 如何通过编程获得硬盘的物理ID,可不是用GetVolumeInformation所得的那一个(这个函数只是获得某个盘的逻辑ID).
- 请问高手:在delphi中怎样将Excel单元格合并?
- 怎样开、关进程!(不是线程)?
Shift: TShiftState; X, Y: Integer);
var
StrTmp:string;
StrCom:string;
DoorState:String;
i:integer;
begin
TImageControl(sender).MouseCapture:=true;
if sender is Timage then
begin
if button=mbleft then
begin
memo1.Clear;
StrTmp:=(sender as TImage).Name;
DoorControl:=(sender as TImage).Name;
for i :=0 to combobox1.Items.Count -1 do
begin
StrCom:=combobox1.Items.Strings[i];
end;
定义全局变量i:integer;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
la:TLabel;
begin
la:=TLabel.Create(self);
la.Parent:=form1;
la.Left:=x;
la.Top:=y;
la.Caption:='label'+inttostr(i+1);
la.Name:='label'+inttostr(i+1);
i:=i+1;
la.AutoSize:=true;
la.Transparent:=true;
end;procedure TForm1.FormShow(Sender: TObject);
begin
i:=0;
end;
public
{ Public declarations }
i:integer;
procedure LabelDblClick(Sender: TObject);
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
la:TLabel;
begin
la:=TLabel.Create(self);
la.Parent:=form1;
la.Left:=x;
la.Top:=y;
la.Caption:='label'+inttostr(i+1);
la.Name:='label'+inttostr(i+1);
i:=i+1;
la.AutoSize:=true;
la.Transparent:=true;
la.OnDblClick:=form1.LabelDblClick;
end;procedure TForm1.FormShow(Sender: TObject);
begin
i:=0;
end;
procedure TForm1.LabelDblClick(Sender: TObject);
begin
showmessage('双击事件');
end;
Draging: Boolean;
DownX,DownY: Integer;
procedure TForm1.MyMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
Draging := True;
DownX := X;
DownY := Y;
end;
procedure TForm1.MyMouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
if Draging then
begin
if Sender is TSpeedButton then
begin
(Sender as TSpeedButton).Left := X - DownX + (Sender as TSpeedButton).Left;
(Sender as TSpeedButton).Top := Y - DownY + (Sender as TSpeedButton).Top;
end;
end;
end;
procedure TForm1.MyMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Draging then
begin
Draging := False;
//将当前的控件位置存放到数据库中
end;
end;
With 控件 do
begin
OnMouseDown:=MyMouseDown;
OnMouseMove:=MyMouseMove;
OnMouseUp:=MyMouseUp;
end;
public
{ Public declarations }
x1,y1,x2,y2:integer;
i:integer;
down:boolean;
procedure LabelDblClick(Sender: TObject);
procedure LabelMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure LabelMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure LabelMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
la:TLabel;
begin
la:=TLabel.Create(self);
la.Parent:=form1;
la.Left:=x;
la.Top:=y;
la.Caption:='label'+inttostr(i+1);
la.Name:='label'+inttostr(i+1);
i:=i+1;
la.AutoSize:=true;
la.Transparent:=true;
la.OnDblClick:=form1.LabelDblClick;
la.OnMouseDown:=form1.LabelMouseDown;
la.OnMouseMove:=form1.LabelMouseMove;
la.OnMouseUp:=form1.LabelMouseUp;
end;procedure TForm1.FormShow(Sender: TObject);
begin
i:=0;
end;
procedure TForm1.LabelDblClick(Sender: TObject);
begin
showmessage('双击事件');
end;procedure TForm1.LabelMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
x1:=x;
y1:=y;
down:=true;
end;procedure TForm1.LabelMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if down=true then
begin
(sender as TLabel).Left:=(sender as TLabel).Left+x-x1;
(sender as TLabel).Top:=(sender as TLabel).Top+y-y1;
x1:=x;
y1:=y;
end;
end;procedure TForm1.LabelMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
down:=false;
end;end.