2017-04-26 1 views
0

Ich habe eine MyConnection in DataModule1 und MyQuery in Form1. Beide Komponenten sind miteinander verbundene Komponenten. Sowohl die Connected-Eigenschaft von MyConnection als auch die Active-Eigenschaft von MyQuery werden auf True gesetzt. Alles ist gerettet. Jetzt setze ich MyConnection Connected auf False, wodurch MyConnection automatisch auch die MyQuery Active auf False setzt. DataModule1 wurde von Delphi 7 als "geändert" markiert (Sternsymbol neben der Datei-Registerkarte), so dass ich es speichern kann, aber das Problem ist, dass Form1 nicht war. Die Änderung von Form1 in MyQuery wird nicht gespeichert, auch wenn ich auf die Schaltfläche Speichern geklickt habe.Delphi 7 - Eigenschaftsänderungen nicht für verknüpfte Komponenten gespeichert

Als ich Form1 wieder öffnete, öffnete MyQuery mit Active-Eigenschaft, die auf True festgelegt ist, und es ändert automatisch MyConnection Connected zurück zu True.

Ich möchte eine Lösung dafür. Wie kann ich Form1 speichern, indem ich nur die Eigenschaft von MyConnection ändere? Dieses Problem tritt auch bei "Set Component Properties" Tool in GExperts auf. Wenn ich es ändere, um MyConnection und MyQuery zu ändern. Aufgrund dieses Problems wurden nur Änderungen an MyConnection gemeldet, aber "offiziell" werden keine Änderungen an MyQuery vorgenommen.

+0

Warum kann MyConnection Satz wahr verbunden ist, tun müssen, um die Verbindung ändern params vor zur Laufzeit verbinden? – Kohull

+0

Delphi stürzt immer ab, nachdem etwas mit MyConnection-Set ausgeführt wurde, das mit True verbunden ist. Das gleiche gilt für MyQuery. –

Antwort

0

Ziehen Sie das Formular ein wenig, so ändert sich die Position und jetzt können Sie es speichern.

Grundsätzlich: ändern Sie eine der Eigenschaften von VCL-Komponenten auf dem Formular oder dem Formular selbst. Auch wenn Sie sie auf den gleichen Wert ändern, wird dies funktionieren und Sie werden die Möglichkeit erhalten, Ihr Formular zu speichern.

0

Wenn das Problem ist, dass Sie vergessen, verbunden mit false zu setzen, dann gibt es einen besseren Weg. Sie können die Verbindungskomponente von der Unterklasse ableiten und die verbundene Eigenschaft so wieder einbringen, dass der Wert nicht in den DFM geschrieben wird.

Wenn also das Datenmodul (oder Formular) geöffnet wird, ist die Verbindungseigenschaft immer falsch.

Für eine ado Verbindungskomponente der Quelle würde wie folgt aussehen:

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.