Einzelnen Beitrag anzeigen

Perlsau
(Gast)

n/a Beiträge
 
#6

AW: Einstellungen lesen und "durchreichen" ?

  Alt 30. Apr 2015, 15:14
Ich mach das meistens so: Beim Programmstart meiner Projekte (die mit Frames arbeiten), werden lediglich diejenigen Einstellungen aus der DB gelesen, die sozusagen global gültig sind wie Datenbankdatei, Benutzer-Id, Berechtigungs-Level, Fenstergröße und -position und dergleichen. Beim Aufruf der diversen Frames werden die Einstellungen für den jeweiligen Frame im Code der Frame-Unit ausgelesen. Wenn der Frame z.B. ein DBGrid beinhaltet, werden beim Erzeugen des Frames – bei meinen "größeren" Projekten werden Frames ressourcenschonend stets erneut instanziiert, bevor sie angezeigt werden, und nach dem Ausblenden wieder freigegeben – auch immer gleich die Einstellungen geladen und beim Zerstören wieder zurückgeschrieben. Beispiel zum Einstellen von DBGrid-Spaltenbreiten:
Delphi-Quellcode:
// ---------- Einstellungen lesen ---------- Privat
Procedure TFrame_Partner.EinstellungenLesen;
Var
  i : Integer;
  Aus : String;
begin
  For i := 0 To DBGrid_Partner.Columns.Count -1 Do
  Begin
    Aus := IntToStr(i);
    If i < 10 Then Aus := '0' + Aus;
    Aus := 'PARTNER_' + Aus;
    DBGrid_Partner.Columns[i].Width := DatMod.Qset_BTab.FieldByName(Aus).AsInteger;
  End;
  DBGrid_Partner.SetFocus;
end;

// ---------- Einstellungen schreiben ------ Privat
Procedure TFrame_Partner.EinstellungenSchreiben;
Var
  i : Integer;
  Aus : String;

begin
  DatMod.Qset_BTab.Edit;
  For i := 0 To DBGrid_Partner.Columns.Count -1 Do
  Begin
    Aus := IntToStr(i);
    If i < 10 Then Aus := '0' + Aus;
    Aus := 'PARTNER_' + Aus;
    DatMod.Qset_BTab.FieldByName(Aus).AsInteger := DBGrid_Partner.Columns[i].Width;
  End;
  DatMod.Qset_BTab.Post;
end;

// ---------- Einblenden ------------------- Public
Procedure TFrame_Partner.Einblenden;
begin
  Self.Align := alClient;
  Self.Visible := True;
  EinstellungenLesen;
end;

// ---------- Ausblenden ------------------- Public
Procedure TFrame_Partner.Ausblenden;
begin
  EinstellungenSchreiben;
  Self.Align := alNone;
  Self.Visible := False;
end;
Nachdem von der Mainform aus das jeweilige Frame-Objekt erzeugt worden ist, wird die Einblenden-Methode aufgerufen, vor dem Zerstören des Frames die Ausblenden-Methode.
  Mit Zitat antworten Zitat