如何在我的应用程序中获取当前活动的表单?

时间:2015-04-24 11:38:51

标签: delphi

如何在我的应用程序中获取当前活动(聚焦)的表单?

3 个答案:

答案 0 :(得分:10)

Screen.ActiveForm可以解决问题。

答案 1 :(得分:3)

您可以通过以下方式进行编码:

   var CurrentForm: TForm; // Make sure to make it a global variable

  procedure KeyDownEvents(var Key: Word; Shift: TShiftState);
    begin
    CurrentForm:=Screen.ActiveForm.Name;
    if Key = VK_F9 then CurrentForm.KeyBoard1.Show;
    end;

这将解决问题。同样,您可以通过鼠标单击和其他按键来处理表单。希望这会有所帮助。

答案 2 :(得分:0)

这段代码对我来说很好用,不需要全局变量,每个表单 NAME 都是唯一的,因为 Delphi IDE 不接受重复的表单名称。

if Screen.ActiveForm.Name = Self.Name then
begin
    // Do your work here
end

当按下键盘上的 ESC 按钮时,我使用此代码关闭表单,并且只应关闭活动/当前表单。

示例如下:

if Msg.message = WM_KEYDOWN then
  begin
    if Msg.wParam = Ord(VK_ESCAPE) then
    begin

      if Screen.ActiveForm.Name = Self.Name then
      begin

        if (MessageDlg('DO YOU WANT TO CLOSE ' + UpperCase(Self.Caption) + ' FORM?',
          mtConfirmation, [mbYes, mbNo], 0) in [mrYes]) then
        begin
          Close;
        end;

      end;

    end;

  end;