@ raiguen,
danke für Deine Mithilfe, das hat sich aber in der Zwischenzeit erledigt.
Die Lösung sieht so aus, im Prinzip wie Dein Vorschlag:
Delphi-Quellcode:
procedure TfrmMain.TreeViewChange(Sender: TObject; Node: TTreeNode);
begin
with tTable do
if TreeView.Selected.IsFirstNode then exit
else
begin // angclickte Tabelle öffnen und Daten in Grid zeigen
SelectTable(TreeView.Selected.Text); // neuer TableName
DisableControls;
try
if Active then Close; // active Table schließen
IndexDelete(sIndexList); // procedure IndexDelete
TableName := TreeView.Selected.Text; // neue Tabelle
If TableName <> '' then Open;
finally
EnableControls;
end;
Label1.Caption:=TreeView.Selected.Text;
IndexDefs.Update;
StoreDefs := false; // neue Tabelle öffnen
iRecordCount.Caption := IntToStr(tTable.RecordCount); // Datensätze zählen und anzeigen
end;
end;
und die procedure IndexDelete:
Delphi-Quellcode:
procedure TfrmMain.IndexDelete(sIndexList: Tstringlist);
var
cnt : integer;
begin
with tTable do
for cnt := sIndexList.Count -1 downto 0 do begin //sIndexList
DeleteIndex(sIndexList[cnt]); // index aus table (sIndexList[cnt])
tTable.IndexDefs.Update; // indexdefinition aktualisieren
IndexFieldNames := '';
IndexName := '';
end;
tTable.StoreDefs := False; //speichern der definitionen verhindern
sIndexList.Clear;
end;
Weiter habe ich hinzugefügt:
Delphi-Quellcode:
procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
IndexDelete(sIndexList); // procedure IndexDelete
end;
So werden erstellte Indizies beim Beenden auch noch entfernt.
Ich denke das Thema ist damit beendet.
Nochmal danke für die Mithilfe und noch einen schönen Abend.
Fritz