2017-04-26 78 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.