Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Mal alle Felder anzeigen, mal nur bestimmte (https://www.delphipraxis.net/11468-mal-alle-felder-anzeigen-mal-nur-bestimmte.html)

Nalincah 7. Nov 2003 12:34


Mal alle Felder anzeigen, mal nur bestimmte
 
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?????

MrSpock 7. Nov 2003 13:03

Re: Mal alle Felder anzeigen, mal nur bestimmte
 
Hallo General2003,

du solltest einfach die Eigenschaft Visible der TField Objekte nutzen:

Delphi-Quellcode:
for i := 0 to ListBoxFelder.Items.Count - 1 do
       DS.DataSet.Fields[i].Visible := ListBoxFelder.Selected[i];

Nalincah 7. Nov 2003 13:13

Re: Mal alle Felder anzeigen, mal nur bestimmte
 
Danke. Klappt 1A..Leider kann der User die Listbox sortiern --> Falsche Felder werden angezeigt

Nalincah 7. Nov 2003 13:18

Re: Mal alle Felder anzeigen, mal nur bestimmte
 
Zitat:

Zitat von MrSpock
Hallo General2003,

du solltest einfach die Eigenschaft Visible der TField Objekte nutzen:

Delphi-Quellcode:
for i := 0 to ListBoxFelder.Items.Count - 1 do
       DS.DataSet.Fields[i].Visible := ListBoxFelder.Selected[i];

Hab das so abgeändert:

Delphi-Quellcode:
for i := 0 to ListBoxFelder.Items.Count - 1 do
       DS.DataSet.FieldByName(ListBoxFelder.Items[i]).Visible := ListBoxFelder.Selected[i];


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:14 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz