2017-04-26 62 views
0

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

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

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

+0

为什么不能MyConnection的一套连接真实的,你需要更改连接PARAMS之前在运行时连接? – Kohull

+0

德尔福总是运行与MyConnection设置连接到True后崩溃。 MyQuery也是一样。 –

回答

0

将表单拖动一下,位置发生变化,现在可以保存它。

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

0

如果问题是您忘记将连接设置为false,那么有更好的方法。您可以继承连接组件并重新引入连接的属性,但值不会写入DFM。

所以当打开datamodule(或表单)时,连接属性将会是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.