0

我在 DataModule1 中有一个 MyConnection,在 Form1 中有一个 MyQuery。两个组件都是链接组件。MyConnection 的 Connected 属性和 MyQuery 的 Active 属性都设置为 True。一切都得救了。现在我将 MyConnection Connected 设置为 False,MyConnection 也会自动将 MyQuery 的 Active 更改为 False。DataModule1 被 Delphi 7 标记为“已更改”(文件选项卡旁边的星号),所以我可以保存它,但问题是 Form1 没有。即使我单击“保存”按钮,Form1 在 MyQuery 中的更改也不会保存。

结果,当我重新打开 Form1 时,MyQuery 打开时 Active 属性设置为 True,并且它还会自动将 MyConnection 的 Connected 更改回 True。

我想要一个解决方案。如何仅通过更改 MyConnection 的属性来保存 Form1?GExperts 中的“设置组件属性”工具也会出现此问题。如果我将它设置为同时更改 MyConnection 和 MyQuery。由于这个问题,它只报告了对 MyConnection 的更改,但没有“正式”对 MyQuery 进行更改。

4

2 回答 2

0

如果问题是您忘记将 connected 设置为 false 那么有更好的方法。您可以对连接组件进行子类化,并以不将值写入 DFM 的方式重新引入连接的属性。

因此,当打开数据模块(或表单)时,连接属性将始终为 false。

对于 ado 连接组件,源代码如下所示:

unit adoconnection1;

interface

uses
  SysUtils, Classes, DB, ADODB;

type
  tadoconnection1 = class(TADOConnection)
  private
  protected
  public
  published
    property Connected stored false;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('GuidoG', [tadoconnection1]);
end;

end.
于 2017-04-27T16:01:40.237 回答
0

稍微拖动表格,位置会发生变化,现在您可以保存它。

基本上:更改表单或表单本身的任何 VCL 组件的任何属性。即使您将它们更改为相同的值,这也将起作用,并且您将获得保存表单的选项。

于 2017-04-26T09:14:03.973 回答