如何在我的应用程序中获取当前活动(聚焦)的表单?
答案 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;