【问题标题】:Delphi 7 - Property changes not saved for linked componentsDelphi 7 - 未保存链接组件的属性更改
【发布时间】:2017-04-26 09:01:45
【问题描述】:

我在 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 进行更改。

【问题讨论】:

  • 为什么MyConnection不能设置connected true,运行时connect之前需要更改连接参数吗?
  • Delphi 总是在运行 MyConnection 设置为 True 的东西后崩溃。 MyQuery 也是如此。

标签: delphi save delphi-7 gexperts


【解决方案1】:

稍微拖动一下表格,位置就会改变,现在可以保存了。

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

【讨论】:

    【解决方案2】:

    如果问题是您忘记将 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.
    

    【讨论】:

      猜你喜欢
      • 2018-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-17
      • 1970-01-01
      相关资源
      最近更新 更多