Announcement

Collapse
No announcement yet.

TDBGrid, Einstellungen speichern

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • TDBGrid, Einstellungen speichern

    Hallo!

    Im DBGrid hat der Anwender die Möglichkeit die Breite und Anordnung (Reihenfolge) der angezeigten Spalten zu ändern.

    Wie kann der durch den Anwender eingestellte Zustand (z.B. in einer Ini-Datei) gespeichert und bei Bedarf wieder hergestellt werden ?

  • #2
    Hallo Wolfgang,

    das DBGrid besitzt die Eigenschaft "Columns". Diese musst Du auswerten. Im folgenden ein kleiner Ausschnitt, wie das realisiert werden kann:

    {DBGrid einrichten
    Hinweis: fSpalten ist eine Recordstruktur, die aus einer Ini-Datei die entsprechenden Daten bezieht}
    procedure TForm1.FormCreate(Sender: TObject);
    var i:Integer;
    begin
    with DBGrid1 do for i:=0 to Columns.Count-1 do
    begin
    Columns[i].Title.Caption:=fSpalten.Name[i];
    Columns[i].Title.Font.Color:=clNavy;
    Columns[i].Width:=fSpalten.Breite[i];
    Columns[i].Alignment:=TAlignment(fSpalten.Ausricht[i]);
    end; // For i, With
    end;

    {Beim Schließen des Formulars:}
    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    var i:Integer;
    begin
    with DBGrid1 do for i:=0 to fSpalten.Anzahl-1 do
    begin
    fSpalten.Name[i]:=Columns[i].Title.Caption;
    fSpalten.Breite[i]:=Columns[i].Width;
    fSpalten.Ausricht[i]:=Integer(Columns[i].Alignment);
    end; // For i, With DBGrid1
    { ggf. Action:=caFree; }
    end;

    Die Änderung der Reihenfolge macht in meinen Augen keinen Sinn, da die Anzeige der Spalten mit der Table korrespondiert.

    Ich hoffe, ich konnte Dir helfen.
    Gruß Thoma

    Comment


    • #3
      Hallo Wolfgang,

      das DBGrid besitzt die Eigenschaft "Columns". Diese musst Du auswerten. Im folgenden ein kleiner Ausschnitt, wie das realisiert werden kann:

      Fgrid_file ist eine freier Dateiname und sollte folgendermassen
      aufgebaut sein:

      fgrid_file:='Tabellenname+username'+'.gri';
      In TForm.create
      With DBgrid1 do begin
      columns.clear;
      columns.LoadFromFile(FGrid_file);
      columns.BeginUpdate;
      end;

      In TForm.close
      DBgrid1.columns.SaveToFile(FGrid_file);


      Die Tabelleneinstellungen können auch in der Registry gespeichert werden. Sollte hierzu interesse bestehen, bitte nochmal melden.

      mfg

      Jürgen Brandenbur

      Comment


      • #4
        Hallo Wolfgang,

        ich habe mir gerade eine DBGrid-Ableitung erstellt, die unter anderem auch selbstständig (AutoRestore) die User-Einstellungen wieder herstellt.

        Im Gegensatz zu Thomas' Meinung <b> weiss </b> ich, dass auch die Änderung der Reihenfolge durchaus Sinn macht. Dem Kunden (Anwender) ist es ziemlich egal wie die jeweilige Tabellenstruktur aufgebaut ist, er möchte seine Daten in der Reihenfolge lesen wie es gewohnt ist bzw. seine eigenen Unterlagen aufgebaut sind!

        Wenn Du möchtest kann ich Dir den Quelltext der Komponente zusenden; schick mir einfach eine Mail an:

        [email protected]

        Da ich erst heute fertiggeworden bin, kann ich nicht sagen ob sie schon fehlerfrei ist, anhand des Quelltextes kannst Du aber ggf. selbst Änderungen vornehmen oder mich gelegentlich kontakten.

        mfg Holge

        Comment


        • #5
          Nachtrag

          Hallo Wolfgang,

          eine weitere Möglichkeit besteht auch darin, dass Du bei Formularerstellung die Methode "Columns.LoadFromFile(<FileName>)" bzw. beim Entfernen des Formulars die Methode "Columns.SaveToFile(<FileName>)" verwendest.
          <p>Der Nachteil an dieser Vorgehensweise ist aber eben dass Du bei jedem Projektformular gesondert daran denken musst.

          mfg Holge

          Comment


          • #6
            Hy,

            Hier ist wieder der Tom

            Versuch es doch mal mit den LMD-Komponenten, die haben solche Fuktionen, Zustände von Komponenten in INI Files oder in der Registry einzutragen und wieder herzustellen.

            m.f.G.

            To

            Comment


            • #7
              Ich habe ein Tool erstellt, welches Tabellenspalten nach Auswahl ein- und ausblendet. Es arbeitet mit einer Inidatei und dem bereits beschriebenen SavetoFile und LoadFromFile. Unter Delphi16 konnte ich sogar noch die Reihenfolge der Tabellenspalten verändern. Jetzt geht es mit Ziehen der Tabellenspalten. Wer Interesse hat kann sich bei mir melden!

              Gruss Bert
              [email protected]

              Comment

              Working...
              X