AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Mal alle Felder anzeigen, mal nur bestimmte
Thema durchsuchen
Ansicht
Themen-Optionen

Mal alle Felder anzeigen, mal nur bestimmte

Ein Thema von Nalincah · begonnen am 7. Nov 2003 · letzter Beitrag vom 7. Nov 2003
Antwort Antwort
Benutzerbild von Nalincah
Nalincah

Registriert seit: 18. Jul 2003
898 Beiträge
 
Delphi 6 Professional
 
#1

Mal alle Felder anzeigen, mal nur bestimmte

  Alt 7. Nov 2003, 13:34
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?????
Sebastian
Ehemals bekannt als General2004
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Mal alle Felder anzeigen, mal nur bestimmte

  Alt 7. Nov 2003, 14:03
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];
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von Nalincah
Nalincah

Registriert seit: 18. Jul 2003
898 Beiträge
 
Delphi 6 Professional
 
#3

Re: Mal alle Felder anzeigen, mal nur bestimmte

  Alt 7. Nov 2003, 14:13
Danke. Klappt 1A..Leider kann der User die Listbox sortiern --> Falsche Felder werden angezeigt
Sebastian
Ehemals bekannt als General2004
  Mit Zitat antworten Zitat
Benutzerbild von Nalincah
Nalincah

Registriert seit: 18. Jul 2003
898 Beiträge
 
Delphi 6 Professional
 
#4

Re: Mal alle Felder anzeigen, mal nur bestimmte

  Alt 7. Nov 2003, 14:18
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];
Sebastian
Ehemals bekannt als General2004
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:03 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