gpt4 book ai didi

forms - delphi 7在某些条件下关闭可用模式形式Onactivate

转载 作者:行者123 更新时间:2023-12-03 15:42:26 26 4
gpt4 key购买 nike

我正在使用delphi 7开发一个项目,该项目是一个维护项目,我不是该项目的原始编码器,我遇到了需要关闭可用 在某种情况下通过代码创建后的表单,该表单就是模型

这是示例代码

       var 
frmStratum : TfrmStratum;
begin
if not assigned(frmStratum) then myMainForm.OnExecute(PropAction);
end;

在 myMainForm.OnExecute(PropAction) 内;我有

frmStratum := TfrmStratum.Create(Self, Self as IStratum,inttostr(m_surveyno),Module,m_stations,false);

现在TfrmStratum过程TfrmStratum.FormActivate我做了很多计算并写入数据库

var
if (bMassStratumExport) AND (bDoneOne) then
begin
//write to database..
end;

现在我必须这样做至少20次 那就是

1. Create the form
2. onactivate do database writing
3. close TfrmStratum

由于它是一个模态表单,如果从我创建它的位置开始,我无法关闭它,所以我想在步骤 2 完成后立即关闭它

现在我已经尝试过这个

  if (bMassStratumExport) AND (bDoneOne) AND NOT (bReadyToclose) then
begin
//do database writing
if bNowClo then frmStratum.close;
end

编辑:(编辑以使问题更清楚)

激活表单(frmStratum),我想关闭模态表单(frmStratum),所以我这样做

procedure TfrmStratum.FormActivate(Sender: TObject);
begin
if (bMassStratumExport) AND (bDoneOne) AND NOT (bReadyToclose) then
begin
//do database writing
if bNowClo then self.close;// i need to close the form after after doing database write
end
end;

但是调试时的控件转到 self.close 但它不会关闭表单。如何解决这个问题?

最佳答案

过去,当我需要在激活过程中关闭表单时,我会向自己发送一条消息,而不是调用 self.close。

PostMessage(Self.Handle, WM_CLOSE, 0, 0);

我试图找到指向我这个方向的原始来源,但我找不到它。

PostMessage会立即返回,不等待消息被处理。一旦 OnActivate 函数完成并且消息 Delphi 处理循环处理消息关闭,将在您的表单上调用。

关于forms - delphi 7在某些条件下关闭可用模式形式Onactivate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8712488/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com