我在程序中动态设计了很多LABEL,但不知如何实现这些label能用鼠标在窗体上随便拖动?
还有就是如何响应双击等等的事件呢?
另外有很多的动态LABEL,是否每一个都要写一段代码啊?
先多谢各位
还有就是如何响应双击等等的事件呢?
另外有很多的动态LABEL,是否每一个都要写一段代码啊?
先多谢各位
解决方案 »
- 访问ACCESS,adoquery1.open时报“未知的错误”
- 在Delphi中如何让memo显示完所有的数据再换行
- 三层结构,连接都是用的IP地址,如果用动态域名,好像不支持?难道我每次都手动先将域名转成IP?
- 着急做东西,帮帮忙...
- 串口编程,帮帮忙,一定给分
- 帮帮忙!!!!
- 中国人太多了,就三校生考大学,西安交通大学只招12个,但已经报考的快3000人了,人太多了!
- delphi中使用sql存储、编辑word和excel问题
- 整数/100000变成REAL , 怎么弄?
- 在C/S结构中,如何不让两个客户操作同一动作?
- 实现打印的结果将多页放到一页中,以节省纸张?
- 能否用DBGridEh实现Access中主从表那样的树型结构
FDown: Boolean = False;
FOldX, FOldy:integer;procedure TForm1.Label1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if (Button = mbLeft) then FDown:=true;
FOldX := X;
FOldy := Y;
end;procedure TForm1.Label1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if (Button = mbLeft) then FDown:=false;
end;procedure TForm1.Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if FDown then
begin
Label1.Left := Label1.Left + X - FOldX;
Label1.Top := Label1.Top + Y - FOldY;
end;
end;动态生成的控件要响应事件,写成 Obj.OnXXXXX:=XXXXX 这样的格式就可以了。
我试过,代码如下:
Image[Rec_count-1].OnDblClick:=OnImageDblClick; //刚才定义的函数
但是我定义了函数procedure OnImageDblClick(sender:Tobject);
程序会报错啊,错误如下:
[Error] Unit1.pas(47): Incompatible types: 'method pointer and regular procedure'
该如何解决啊?
procedure Form1.OnImageDblClick(sender:Tobject);
这样就可以写成 Obj.OnXXXXX:=XXXXX 了
新增的时候指定到 lbl1的 鼠标事件
new
---
SetLength(LbltArr, Length(LbltArr)+1);
LbltArr[Length(LbltArr)-1]:=TLabel.Create(Self);
LbltArr[Length(LbltArr)-1].Name:='LblArr'+inttostr(count_lbl);
LbltArr[Length(LbltArr)-1].Parent:=Self;
LbltArr[Length(LbltArr)-1].Top:=100 +Length(LbltArr)*10;
LbltArr[Length(LbltArr)-1].Left:= 100+Length(LbltArr)*10 ;
LbltArr[Length(LbltArr)-1].Caption:='new';
LbltArr[Length(LbltArr)-1].OnClick:=Lbl1.OnClick;
LbltArr[Length(LbltArr)-1].OnMouseDown:=Lbl1.OnMouseDown;
LbltArr[Length(LbltArr)-1].OnMouseMove:=Lbl1.OnMouseMove;
LbltArr[Length(LbltArr)-1].OnMouseUp:=Lbl1.OnMouseUp;