我无法在网络上的任何地方找到答案。试过谷歌和其他许多人。
在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程序总是向我显示一个拒绝的标志并且什么都不做。
答案 0 :(得分:2)
右键单击表单时,下面的代码将创建您的复选框。它可以做一些改进,例如,处理添加多个复选框等,但可能会帮助您朝着正确的方向前进。
procedure TForm1.CreateCheckBox(X, Y : Integer);
begin
// NewCheckBox is a Form variable
NewCheckBox:=TCheckBox.Create(Self);
NewCheckBox.Parent:=Form1;
NewCheckBox.Caption:='NewCheckBox';
NewCheckBox.Left:= X;
NewCheckBox.Top:= Y;
end;
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift:
TShiftState; X, Y: Integer);
begin
if Button = mbRight then
if NewCheckbox = Nil then
CreateCheckBox(X, Y);
end;
顺便说一句,当你使用拖动和放大器时放弃表单,获取输入标志意味着您尚未为表单设置OnDragOver
事件,该表单将Accept
参数设置为True。