RealSucker
Mitglied
Ich benutze bei einem Programm die PageControl-Komponente um es übersichtlich zu halten.
Auf jedem TabSheet sind mehrere Komponenten, die auf die gleiche TTable und TDataSource zugreifen. Wenn ich nun auf ein TabSheet klicke, wird per OnShow eine externe Table passend zu der Seite beim DatabaseName der TTable angepasst, wodurch die Komponenten auf der vorherigen Seite natürlich eine Fehlermeldung ausgeben, denn ihre Spalten sind ja nicht mehr verfügbar.
Mit Hilfe eines Komponenten-Arrays habe ich alle Datafield-Eigenschaften der Komponenten des vorherigen TabSheet leer gemacht. Das Ganze wird bei mehreren TabSheets sehr umfangreich und deswegen habe ich es mit einem doppelten Komponenten-Array probiert, der alle Komponenten auf jedem TabSheet ändert.
Nach dem doppelten Komponenten-Array werden die Datafield-Eigenschaften der Komponenten des aktuellen TabSheets erst definiert. Dadurch können also auch ruhig erst einmal alle Datafield-Egienschaften zurückgesetzt werden.
Nun der Code:
So funktioniert es momentan leider nicht. Ich hoffe, ich habe eine ausreichende Erklärung abgegeben, damit mir jemand helfen kann.
Ansonsten muss ich wohl doch die gesamte Form mit TTable und TDataSource pflastern und hätte das gleiche wie alle anderen Gruppen.
Gruß RS
Auf jedem TabSheet sind mehrere Komponenten, die auf die gleiche TTable und TDataSource zugreifen. Wenn ich nun auf ein TabSheet klicke, wird per OnShow eine externe Table passend zu der Seite beim DatabaseName der TTable angepasst, wodurch die Komponenten auf der vorherigen Seite natürlich eine Fehlermeldung ausgeben, denn ihre Spalten sind ja nicht mehr verfügbar.
Mit Hilfe eines Komponenten-Arrays habe ich alle Datafield-Eigenschaften der Komponenten des vorherigen TabSheet leer gemacht. Das Ganze wird bei mehreren TabSheets sehr umfangreich und deswegen habe ich es mit einem doppelten Komponenten-Array probiert, der alle Komponenten auf jedem TabSheet ändert.
Nach dem doppelten Komponenten-Array werden die Datafield-Eigenschaften der Komponenten des aktuellen TabSheets erst definiert. Dadurch können also auch ruhig erst einmal alle Datafield-Egienschaften zurückgesetzt werden.
Nun der Code:
Code:
for k := 0 to ComponentCount - 1 do
begin
if Components[k] is TTabSheet then
for j := 0 to TTabsheet(Components[k]).ControlCount-1 do
begin
if TTabsheet(Components[k]).Controls[j] is TDBEdit then
TDBEdit(TTabsheet(Components[k]).Controls[j]).DataField:='';
end;
end;
So funktioniert es momentan leider nicht. Ich hoffe, ich habe eine ausreichende Erklärung abgegeben, damit mir jemand helfen kann.

Ansonsten muss ich wohl doch die gesamte Form mit TTable und TDataSource pflastern und hätte das gleiche wie alle anderen Gruppen.

Gruß RS