早上好,所以我想知道是否可以做这样的事情:
在启动时,TEdit(Edit1)被禁用-因此Edit1.enabled:= false;
当用户单击TEdit时,它将被启用,并且会执行其他操作,我尝试使用Edit1.onClick,但由于已禁用,它似乎不起作用。
答案 0 :(得分:1)
已禁用的控件通过单击进入其下方的窗口。 IOW,如果启用了父级,则可以在禁用的父级上单击。获取点击位置并查询是否在控件上。
以下是检测单击放置在表单上的禁用编辑的示例。如果修改是由另一个容器(例如面板)作为父项,则需要进行相应的调整。
procedure TForm1.FormClick(Sender: TObject);
var
Pt: TPoint;
Wnd: HWND;
Control: TControl;
begin
Pt := ScreenToClient(SmallPointToPoint(types.SmallPoint(GetMessagePos)));
Wnd := ChildWindowFromPoint(Handle, Pt);
if Handle <> Wnd then begin
Control := FindControl(Wnd);
if (Control is TEdit) and not Control.Enabled then
Control.Enabled := True;
end;
end;