Delphi TEdit onClick-启用和执行其他操作

时间:2019-01-16 06:42:48

标签: delphi

早上好,所以我想知道是否可以做这样的事情:


在启动时,TEdit(Edit1)被禁用-因此Edit1.enabled:= false;

当用户单击TEdit时,它将被启用,并且会执行其他操作,我尝试使用Edit1.onClick,但由于已禁用,它似乎不起作用。

1 个答案:

答案 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;