有点难度的控件移动问题,达人请进研究研究

godness 2005-11-24 10:54:36
我在一个Panel上放置了另一个控件SCode(其他公司的一个ocx控件),而SCode没有关于移动的事件(如:OnMouseMove、OnMouseUp、OnMouseDown等),只有关于拖动的事件;我的目的是想在程序运行过程中移动这个SCode控件的同时Panel能随着它移动,这个Panel比较小正好装载这个SCode,不知道该怎么做。请达人指点

目前我是知道Panel和Memo的移动,不过这两个控件都是有OnMouseMove这个事件比较好做,而SCode没有这个事件就不知道怎么做了
...全文
137 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
godness 2005-11-25
  • 打赏
  • 举报
回复
楼上的大哥,不好意思,我看不大明白你代码的意思,麻烦你跟我说说行不?
clasj 2005-11-25
  • 打赏
  • 举报
回复
type
TForm1 = class(TForm)
Panel1: TPanel;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure foo(var Msg: TMsg; var Handled: Boolean);
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.foo(var Msg: TMsg; var Handled: Boolean);
var
s: string;
begin
s:='MsgID: %d, wParam: %d, lParam: %d, X: %d, Y: %d';
caption:=format(s, [Msg.message, Msg.wParam, Msg.lParam, Msg.pt.X, Msg.pt.Y]);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
application.OnMessage:=foo;
end;

end.

根据你捕获到的消息,然后经过一系列计算就可以了:)
godness 2005-11-25
  • 打赏
  • 举报
回复
楼上的大哥能告诉我怎么处理嘛??
clasj 2005-11-25
  • 打赏
  • 举报
回复
你之所以不能够拖动那个ocx控件就是因为没有OnMouseMove等一系列事件,我给你的代码只是想说明OnMessage这个事件可以捕获程序中所有(消息队列中的)消息,只不过没有OnMouseMove那么直观的,你需要从这些消息中过滤出对你有用的信息,比如说鼠标被按下、拖动、XY坐标等等,有了这些以后你就可以像处理OnMouseMove的方法一样处理了,比如:Panel1.Left:=Panel1.Left+(X-X_Old);等等。。。
clasj 2005-11-24
  • 打赏
  • 举报
回复
在Application.OnMessage里面处理:)
zzwu 2005-11-24
  • 打赏
  • 举报
回复
直接移动panal就可以移动在它上面的任何控件,
-没有试过,想当然而已.

1,185

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧