Hallo, ich eine Komponente mit ein TZQuery und TDataSource. Die Änderungen von TZQuery und TDataSource im Formulardesigner werden nicht gespeichert, ist das normal oder was muss man tun damit es gespeichert wird? Besonders die TZQuery.Sql-Eigenschaft und Ereignisse sollten gespeichert werden. Ich habe es so gemacht:
Und noch etwas. Kann man Unterkomponenten im Formulardesigner nicht benutzen? Ich möchte irgeneinen TDBNavigator aus dem Formulardesigner DataSource von TMyDataSet zuweisen, so etwa:
Sollen die eingebetteten Komponenten wie TPersistent verwendet werden? Dann muss setsubcomponent(true) der eingebetteten Komponenten aufgerufen werden. Falls es normale Komponenten sein sollen müssen
procedure GetChildren(Proc: TGetChildProc; Root: tcomponent); dynamic; function GetChildOwner: tcomponent; dynamic; function GetChildParent: tcomponent; dynamic;
function HasParent: Boolean; dynamic;
überschrieben werden. IIRC ist auch der Owner der Subkomponenten wichtig. Die Details sind mir im Moment leider nicht mehr präsent, ich bin froh, dass es läuft.
Danke, ich habe es notiert und werde bei der Nächsten nutzen, diese aktuelle Komponente habe ich umgebaut. Ich habe festgestellt, dass ich DataSource nicht brauche und deshalb entfernt. Hauptkomponente stammt jetzt von TZQuery ab und TZUpdateSQL habe ich zum Public-Abschnitt verschoben weil es außerhalb nicht verwendet wird. Als ich TZUpdateSQL zum Public-Abschnitt verschoben habe trat merkwürdiger Effekt bei Lazarus auf. Jedesmal wenn ich den Namen von Elternkomponente in Objektinspektor geändert habe, hat Lazarus TZUpdateSQL-Objekt in die Formular-Klasse aufgenommen, als ob es neue Kompente ist. Dann habe ich es wieder Published gemacht, nun ist alles gut.