运行-光标位置的时间分量
Run-time Component at cursor position
我在网络上的任何地方都找不到答案。尝试了 Google 和许多其他方法。
在Delphi7中如何在光标位置创建一个运行时间组件?
我尝试了一个简单的代码:
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;
但这行不通。这些组件不出现在光标处,我无法将它们放在任何我想要的地方。代码放置组件就像我单击按钮一样,而不是当我单击要放置它的表单时。我想为即将创建的组件创建一个视觉效果,并将其从工具栏上的按钮一直拖到窗体。
我试过拖放但没有任何效果,拖放过程总是向我显示一个拒绝标志并且什么都不做。
当您右键单击表单时,下面的代码将创建您的复选框。它可以做一些改进,例如处理添加多个复选框等,但可能会帮助您朝着正确的方向前进。
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;
顺便说一句,当您在表单上使用拖放时,获得输入符号意味着您还没有为将 Accept
参数设置为 True 的表单设置 OnDragOver
事件。
我在网络上的任何地方都找不到答案。尝试了 Google 和许多其他方法。
在Delphi7中如何在光标位置创建一个运行时间组件?
我尝试了一个简单的代码:
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;
但这行不通。这些组件不出现在光标处,我无法将它们放在任何我想要的地方。代码放置组件就像我单击按钮一样,而不是当我单击要放置它的表单时。我想为即将创建的组件创建一个视觉效果,并将其从工具栏上的按钮一直拖到窗体。
我试过拖放但没有任何效果,拖放过程总是向我显示一个拒绝标志并且什么都不做。
当您右键单击表单时,下面的代码将创建您的复选框。它可以做一些改进,例如处理添加多个复选框等,但可能会帮助您朝着正确的方向前进。
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;
顺便说一句,当您在表单上使用拖放时,获得输入符号意味着您还没有为将 Accept
参数设置为 True 的表单设置 OnDragOver
事件。