伙计们,如果有人知道在所有MDI表格关闭时我可以截获的任何事件或方法,我想.
例:
我想在我的主窗体中实现一个事件,当我关闭所有MDI表单时,触发了这样的事件.
如果有人可以帮忙,感激不尽.
在我的系统上,主菜单是完全动态的,是根据数据库中的数据构建的.
我有一个特定的情况,在显示之前需要组装一些菜单项.
我们假设我的菜单包含以下主要项目:
文件 - 客户 - 报告 - 关于
单击" 报告"菜单项时,必须在项目显示之前组合这些项目.
我对TMainMenu,TMenu和TMenuItem类中的代码进行了分析.不幸的是,我还没有找到解决问题的简单方法.
在显示之前是否存在创建这些项目的方法?
我想了解一下情况.
我创建了一个Windows服务来完成应用程序的任务管理.
该服务连接到数据库(Firebird)并调用执行任务管理的组件.
此过程正常,但在Windows 10中,重新启动计算机后服务不会自动启动.在其他版本的Windows中,一切都很完美.在测试中,我已经确定如果我评论调用任务执行的方法,该服务通常在Windows 10上启动.
Procedure TDmTaskService.ServiceExecute(Sender: TService);
Begin
Inherited;
While Not Terminated Do
Begin
//Process;
Sleep(3000);
ServiceThread.ProcessRequests(False);
End;
End;
Run Code Online (Sandbox Code Playgroud)
问题是组件或服务中没有生成任何异常.
通过分析Windows事件监视器,我发现我的服务发生的错误是超时,在这种情况下,服务无法在时间限制内连接到服务管理器.不再生成异常.
有没有人有任何关于连接数据库的Delphi制作的Windows服务?
我的源代码示例:
**Base class:**
unit UnTaskServiceDmBase;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs;
type
TDmTaskServicosBase = class(TService)
private
{ Private declarations }
public
function GetServiceController: TServiceController; override;
{ Public declarations }
end;
var
DmTaskServiceBase: TDmTaskServicosBase;
implementation
{$R *.DFM}
procedure ServiceController(CtrlCode: DWord); stdcall;
begin
DmJBServicosBase.Controller(CtrlCode);
end;
function TDmTaskServicosBase.GetServiceController: TServiceController;
begin
Result := ServiceController;
end;
end. …Run Code Online (Sandbox Code Playgroud)