难道就没有一个人可以解决?高手都到哪里去了?是高手的有本事就站出来!!

zsuswy 2005-04-27 06:08:08
在程序中我动态生成一个控件。我要得到它的一个事件并且在其中写自己的代码。

比如我动态生成一个Timage控件,我想得到它的onmousemove事件,鼠标在上面移动一下就在其他地方输出鼠标在image内的坐标。

我自己不知道怎么样定义出它的时间,如果随便附一个函数给它的onmousemove会编译出错,可以把其他设计时加入的控件的事件附值给他,但是又不能得到鼠标等等的相关参数信息。请高手指点!!!!!

高手,高手,高手!!!!!!!救命!!!

请高手详解!!!!!!!!!!!!!
...全文
254 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
zsuswy 2005-04-29
  • 打赏
  • 举报
回复
谢谢各位了,
为自己的贴顶一下,马上结贴
hellolongbin 2005-04-28
  • 打赏
  • 举报
回复
自己定义一个事件,然后将你动态创建的窗体onmousemove事件指向它
xzhifei 2005-04-28
  • 打赏
  • 举报
回复



希望你不要收了答案就走人!!!
CSDN最鄙视这种人了

chijingde 2005-04-28
  • 打赏
  • 举报
回复
还真以为是什么高难度问题,本想进来学习的……

结果-_-!
ttjacky 2005-04-28
  • 打赏
  • 举报
回复
呵呵,高手都被喊出来了,楼主如果还没搞定,大家就要吐血了
gzmhero 2005-04-28
  • 打赏
  • 举报
回复
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,ExtCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
procedure ImageMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
public
{ Public declarations }
end;

var
Form1: TForm1;
imgTemp:TImage;

implementation

{$R *.dfm}
procedure TForm1.ImageMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Label1.Caption:=IntToStr(X)+':'+IntToStr(Y);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
imgTemp:=TImage.Create(Owner);
imgTemp.Parent:=Form1;
imgTemp.Left:=10;
imgTemp.Top:=10;
imgTemp.Width:=100;
imgTemp.Height:=100;
imgTemp.OnMouseMove:=ImageMouseMove;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
imgTemp.Free;
end;

end.
qiujsh 2005-04-28
  • 打赏
  • 举报
回复
给你写了一个简单的,新建一个项目,在窗口上放一个edit控件,当然自己创建的控件要手动释放,我这里只是示范没释放,写成按扭的了,Image中这个一样。

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
procedure CustomMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.CustomMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Edit1.Text := IntToStr(X);
end;

procedure TForm1.FormShow(Sender: TObject);
var
MyButton:TButton;
begin
MyButton:=TButton.Create(self);
MyButton.Left :=100;
MyButton.Top := 100;
MyButton.Parent := self;
MyButton.OnMouseMove := CustomMouseMove;
MyButton.Visible := True;
end;

end.
pengxuan 2005-04-28
  • 打赏
  • 举报
回复
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, jpeg;

type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
private
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var image1:TImage;
begin
image1:=TImage.Create(Self);
image1.Parent:=Self;
image1.Name:='image1';
image1.Height:=105;
image1.Width:=105;
image1.Picture.LoadFromFile('D:\临时目录\图片资源\JPG格式\风景\View1.jpg');
image1.OnMouseMove:=Image1MouseMove;
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Label1.Caption:=IntToStr(X);
Label2.Caption:=IntToStr(Y);
end;

end.
这样就可以了,我自己写的例子,楼主看看吧.关键是知道原理.
yeeyee 2005-04-28
  • 打赏
  • 举报
回复
每天穿同一条三角裤的是要注意一下这个问题。
Frank.WU 2005-04-27
  • 打赏
  • 举报
回复
首先,動態生成的控件自己必須要有onmousemove事件,如果沒有,要自己代碼實現;
然後,因為是動態生成的,所以,沒有生成之前必須防止訪問出錯。
最後,將動態生成控件的定義事件指向你寫的事件/過程。
Corn1 2005-04-27
  • 打赏
  • 举报
回复
unit ExImage;

interface

uses
SysUtils, Classes, Controls, ExtCtrls, Messages;

type
TExImage = class(TImage)
private
{ Private declarations }
FOnMouseMove: TNotifyEvent;
procedure CMMouseMove(var Msg: TMessage); message CM_MOUSEMOVE;
procedure MouseMove;
protected
{ Protected declarations }
public
{ Public declarations }
published
{ Published declarations }
property OnMouseMove: TNotifyEvent
read FOnMouseMove
write FOnMouseMove;
end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents('Additional', [TExImage]);
end;

procedure TExImage.CMMouseMove(var Msg: TMessage);
begin
inherited;
MouseMove;
end;

procedure TExImage.MouseMove;
begin
if Assigned(FOnMouseMove) then FOnMouseMove(Self);
end;

end.
留下些什么 2005-04-27
  • 打赏
  • 举报
回复
UP
seekmydoom 2005-04-27
  • 打赏
  • 举报
回复
覆盖他原来的方法不行吗?
qiujsh 2005-04-27
  • 打赏
  • 举报
回复
先放一个Image控件,先生成它的onmousemove方法,然后再定义一个跟它的接口一样的过程,函数声名也放在同样的地方,前边自动生成的那个可以不要了,动态生成控件是,将它的onmousemove指向这个新生成过程
fengzhengren 2005-04-27
  • 打赏
  • 举报
回复
首先要在uses中加入
ExtCtrls
先检查一下加了没?
如果加了我再继续帮你看。
内容概要:本文针对无刷直流电机驱动的电子机械制动(EMB)执行器,建立了考虑Stribeck摩擦特性的非线性耦合动力学模型,并在Simulink环境中完成了系统级仿真分析。研究综合集成了电机动力学、齿轮传动机构与制动执行机构的动力学特性,构建了高保真的机电一体化系统模型。重点引入Stribeck摩擦模型以精确描述低速工况下执行器内部存在的静摩擦、粘滞摩擦与库仑摩擦之间的过渡行为,有效提升了系统在启停、反向运动等瞬态过程中的动态响应仿真精度。通过多工况仿真验证了模型的有效性,能够准确反映摩擦引起的爬行、滞后与定位误差等非线性现象,为EMB系统的高性能控制算法设计(如摩擦补偿、滑模控制)与结构优化提供了高可信度的仿真平台。; 适合人群:从事汽车电子制动系统、电机驱动控制、机电系统建模与仿真研究的研究生、科研人员及工程技术人员,需具备扎实的机械动力学、自动控制理论基础和MATLAB/Simulink仿真能力。; 使用场景及目标:①用于高精度电子机械制动系统的设计验证与性能预测;②为消除摩擦非线性影响的先进控制策略(如自适应控制、智能控制)提供精确的被控对象模型;③深入探究Stribeck摩擦等非线性因素对系统动态性能(如响应延迟、稳态误差)的作用机理; 阅读建议:读者应结合提供的Simulink模型文件,深入剖析Stribeck摩擦模块的数学实现与参数辨识方法,建议通过改变输入指令(如阶跃、正弦)和负载条件进行对比仿真,以直观理解非线性摩擦对系统动态特性的影响。

5,943

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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