Hi zusammen...Folgendes:
Hab 2 Listbox und ein DBGrid
In ListboxTable stehen alle Tabellen einer
DB und in ListBoxFelder alle Felder der Tabelle, die in ListBoxTable ausgewählt und im DBGrid der Inhalt der Tabelle. Wenn ich jetzt auf ein Item in ListBoxFelder klicke, springt das DBGrid zu dem ausgewählten Feld. So:
Delphi-Quellcode:
if DS.DataSet = Tab
then
DBGrid.SelectedField := Tab.FieldByName(ListBoxFelder.Items[ListBoxFelder.Itemindex]);
if DS.DataSet =
Query then
DBGrid.SelectedField :=
Query.FieldByName(ListBoxFelder.Items[ListBoxFelder.Itemindex]);
Unter der ListBoxFelder hab ich dann noch ne CheckBox (CheckBoxFelderVergl). Wenn die aktiviert ist kann man in ListBoxFelder mehre Felder auswählen. Wenn man welche auswählt, will ich das nur die ausgewählten im DBGrid erscheinen. Hier mal mein Versuch, der aber leider nicht klappt:
Delphi-Quellcode:
procedure TDB_Frame.ListBoxFelderClick(Sender: TObject);
var
i,j:Integer;
begin
if CheckBoxFelderVergl.Checked = True
then
begin
j := 0;
for i := 0
to ListBoxFelder.Items.Count - 1
do
begin
if ListBoxFelder.Selected[i] = True
then
begin
DBGrid.Columns[j].FieldName := ListBoxFelder.Items[i];
Inc(j);
end;
// if ListBoxFelder.Selected[i] = True then
end;
// for i := 0 to ListBoxFelder.Items.Count do
end else // if CheckBoxFelderVergl.Checked = True then
begin
if DS.DataSet = Tab
then
DBGrid.SelectedField := Tab.FieldByName(ListBoxFelder.Items[ListBoxFelder.Itemindex]);
if DS.DataSet =
Query then
DBGrid.SelectedField :=
Query.FieldByName(ListBoxFelder.Items[ListBoxFelder.Itemindex]);
end;
// if CheckBoxFelderVergl.Checked = True then
end;
Leider passt das noch nicht so ganz. Der löscht leider nicht die vorhandenen Columns, sondern packt die neuen hinten dran. Wie kann ich die vorhandenen Colums vorher löschen? So das immer nur die angezeigt werden, die auch ausgewählt worden sind?????