动态组键如何实现鼠标拖动? 我在程序中动态设计了很多LABEL,但不知如何实现这些label能用鼠标在窗体上随便拖动?还有就是如何响应双击等等的事件呢?另外有很多的动态LABEL,是否每一个都要写一段代码啊?先多谢各位 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 LABEL不支持拖动的,它没句柄用StaticText吧,它可以支持拖动在动态创建StaticText的时候给需要处理的事件(如双击)中添加关联的事件代码 能不能详细点呢?最好能给出实现两个STATICTEXT拖动的一些关键代码,多谢了 拖动一个Label:var 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 这样的格式就可以了。 动态生成的控件要响应事件,写成 Obj.OnXXXXX:=XXXXX 这样的格式就可以了?我试过,代码如下:Image[Rec_count-1].OnDblClick:=OnImageDblClick; //刚才定义的函数但是我定义了函数procedure OnImageDblClick(sender:Tobject);程序会报错啊,错误如下:[Error] Unit1.pas(47): Incompatible types: 'method pointer and regular procedure'该如何解决啊? 这问题虽然我也不是完全明白,但是把你的OnImageDblClick定义在窗体类中就行了,例如procedure Form1.OnImageDblClick(sender:Tobject);这样就可以写成 Obj.OnXXXXX:=XXXXX 了 Lbl1 写好 移动事件新增的时候指定到 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; 这样的计算字段如何实现? 关于IDHTTP多线程的问题: 循环添加一批记录进数据库该怎么写呀。 调用!在线等!! indy的UDP组件的问题 高分悬赏(关于ComboBox组件) 如何在程序中快速清空2000下的打印作业呢?---急用 delphi 用到access数据库问题 请问有高手能帮我吗@ 急啊 请进入!谢谢@ 条件编译!!{$DEFINE} 师兄们帮帮我可以吗。一个简单的问题。但我从没有做过。 实现打印的结果将多页放到一页中,以节省纸张? 能否用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;