【发布时间】:2017-07-31 23:19:10
【问题描述】:
我在网络上的任何地方都找不到答案。尝试过 Google 和其他许多人。
在Delphi 7中如何在光标位置创建运行时组件?
我尝试了一个简单的代码:
procedure TForm1.TButton1Click(Sender: TObject);
var NewCheckBox: TCheckBox;
MB: TMouseButton;
CPos: TPoint;
begin
GetCursorPos(CPos);
NewCheckBox:=TCheckBox.Create(Self);
NewCheckBox.Parent:=Form1;
NewCheckBox.Caption:='NewCheckBox';
NewCheckBox.Left:=CPos.X;
NewCheckBox.Top:=CPos.Y;
end;
但这不正确。组件未出现在光标处,我无法将它们放置在我想要的任何位置。代码放置组件就像我单击按钮而不是当我单击要放置它的表单时一样。我想创建即将创建的组件的视觉效果,并将其从工具栏上的按钮一直拖到表单中。
我尝试了拖放但没有任何效果,Drop 过程总是向我显示拒绝标志并且什么都不做。
【问题讨论】:
-
我们在这里需要更多上下文,“它不能正常工作”是什么意思?也许你想要实现的截图会有所帮助。
-
GetCursorPos()报告屏幕坐标。Left/Top属性使用相对于Parent的客户端坐标。使用Parent的ScreenToClient()方法进行翻译,例如:CPos := Form1.ScreenToClient(CPos); -
这不会有好的结局。您的所有控件都将在该按钮之上开始生命......
标签: delphi runtime components delphi-7