Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Eigene Databar als Komponente oder Projekt erstellen...Wie? (https://www.delphipraxis.net/101276-eigene-databar-als-komponente-oder-projekt-erstellen-wie.html)

torud 10. Okt 2007 18:59


Eigene Databar als Komponente oder Projekt erstellen...Wie?
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo Wissende,

ich möchte eine eigene Databar erstellen, welche mir die sich auf dem gleichen Elternelement befindlichen Controlinhalte abspeichert.
Zur Verdeutlichung habe ich mal ein Beispiel-Projekt angelegt. Es sollen in dem Fall nur die Inhalte aller Childs exclusive der Databar von Panel1 gespeichert werden.

TPanel als Parent

Es sollen nur die Zustände gespeichert werden. Also bei Edits reichen die Texte, bei Checkboxen der Zustand von Checked.

Wie könnte ich das lösen, dass mir völlig unabhängig davon, ob ich weiss, welche Controls sich mit auf dem Form befinden, die Datengespeichert und wieder angezeigt werden, wenn man in der Combobox den richtigen Eintrag auswählt!?

Welches Datenformat würdet Ihr wählen? XML oder Ini?

Würde das ganze dann später gern als Komponente erstellen...Vielleicht hat ja der ein oder andere Interesse an sowas!? Für Infos und Vorschläge bin ich wie immer dankbar...

torud 23. Okt 2007 18:14

Re: Eigene Databar als Komponente oder Projekt erstellen...W
 
Also folgenden Code habe ich jetzt mal erstellt, um die Inhalte aus Edits, RadioGroups, Checkboxen und Comboboxen in eine Ini zu schreiben. Dabei wird vorausgesetzt, dass in der Combobox cmb_names ein text eingetragen wurde, welcher dann als Sektion für die Ini gedacht ist und nach dem Speichern der Combobox selbst eingetragen wird.

Wählt man dann aus der Combobox einen Eintrag aus, werden die Daten geladen. Ich würde nun gern auch noch die 2 Buttons für Forward und Back anbinden, weiss aber noch nicht, ob das überhaupt möglich ist. Für Tipps wäre ich dankbar.

Hier die Codes, falls jemand mal sowas vor hat.

Speichern der Daten:
Delphi-Quellcode:
//speichern der daten
procedure Tlowerthird.btn_saveClick(Sender: TObject);
var
  i  : integer;
  C  : TObject;
  ini : TIniFile;
begin
  //ShowMessage(DBar_Path + self.Name + '.ini');
    ini := TIniFile.Create(DBar_Path + self.Name + '.ini');
    for i := 0 to ComponentCount-1 do
      begin
        if Components[i].Tag = 0 then
          begin
            C := Components[i];
            if (C is TdxDNEdit) then ini.WriteString(cmb_names.Text,(C as TdxDNEdit).Name,(C as TdxDNEdit).Text);
            if (C is TAdvOfficeRadioGroup) then ini.WriteInteger(cmb_names.Text,(C as TAdvOfficeRadioGroup).Name,(C as TAdvOfficeRadioGroup).ItemIndex);
            if (C is TAdvOfficeComboBox) then ini.WriteString(cmb_names.Text,(C as TAdvOfficeComboBox).Name,(C as TAdvOfficeComboBox).Text);
            if (C is TAdvOfficeCheckBox) then ini.WriteBool(cmb_names.Text,(C as TAdvOfficeCheckBox).Name,(C as TAdvOfficeCheckBox).checked);
          end;  
      end;
      ini.ReadSections(cmb_names.Items);
      ini.Free;
end;

//laden der sections in die combobox
procedure Tlowerthird.FormCreate(Sender: TObject);
var
  ini : TIniFile;
begin
  ini := TIniFile.Create(DBar_Path + self.Name + '.ini');
  ini.ReadSections(cmb_names.Items);
  ini.Free;
end;

//laden der daten
procedure Tlowerthird.cmb_namesChange(Sender: TObject);
var
  i  : integer;
  C  : TObject;
  ini : TIniFile;
begin
  ini := TIniFile.Create(DBar_Path + self.Name + '.ini');
 
  if not(trim(cmb_names.Text) <> '') then exit;

  if ini.SectionExists(cmb_names.Text) then
    begin
      for i := 0 to ComponentCount-1 do
        begin
          if Components[i].Tag = 0 then
            begin
              C := Components[i];
              if (C is TdxDNEdit) then            (C as TdxDNEdit).Text := ini.ReadString(cmb_names.Text,(C as TdxDNEdit).Name,'');
              if (C is TAdvOfficeRadioGroup) then (C as TAdvOfficeRadioGroup).ItemIndex := ini.ReadInteger(cmb_names.Text,(C as TAdvOfficeRadioGroup).Name,0);
              if (C is TAdvOfficeComboBox) then   (C as TAdvOfficeComboBox).Text := ini.ReadString(cmb_names.Text,(C as TAdvOfficeComboBox).Name,'');
              if (C is TAdvOfficeCheckBox) then   (C as TAdvOfficeCheckBox).checked := ini.ReadBool(cmb_names.Text,(C as TAdvOfficeCheckBox).Name,false);
            end;
        end;
    end;
  ini.Free;
end;
Vielleicht geht das ganze auch anders? Ich brauche das immer wieder und würde das gern einfacher haben, als immer wieder diesen Code in jedes Formular einbinden zu müssen. Ginge das? Wenn ja wie!?

Hansa 23. Okt 2007 19:48

Re: Eigene Databar als Komponente oder Projekt erstellen...W
 
Zitat:

Zitat von torud
..Vielleicht geht das ganze auch anders? Ich brauche das immer wieder und würde das gern einfacher haben, als immer wieder diesen Code in jedes Formular einbinden zu müssen. Ginge das? Wenn ja wie!?

http://www.delphipraxis.net/internal...t=objektablage

torud 23. Okt 2007 21:04

Re: Eigene Databar als Komponente oder Projekt erstellen...W
 
Danke für den Tipp, aber wie Du unschwer an meiner Art der Programmierung erkennen konntest, habe ich nicht so viel Ahnung. Ich habe also leider nicht wirklich was davon verstanden, was Du da in dem anderen Threat zum Besten gegeben hast.

Hansa 24. Okt 2007 19:15

Re: Eigene Databar als Komponente oder Projekt erstellen...W
 
Hier steht mehr :

http://www.delphipraxis.net/internal...ablage&start=0

P.S.: es gibt hier auch eine Suche. :???:

torud 24. Okt 2007 19:52

Re: Eigene Databar als Komponente oder Projekt erstellen...W
 
Ok ich hätte nach Objektablage suchen können. Sorry dafür und ein Riesen-DANKE für den zusätzlichen Link!!!

Ich habe es zwar noch nicht probiert, aber wenn das SOOO einfach geht wie dort beschrieben, wird die Objektablage mein Neuer Freund... :mrgreen:

Hansa 24. Okt 2007 20:21

Re: Eigene Databar als Komponente oder Projekt erstellen...W
 
Das geht SOOO einfach ! :mrgreen: Für einige wohl zuuuu einfach, so dass sie sich nicht die Mühe gemacht haben das mal zu testen und lieber ihre DFMs von Hand verunstalten. :lol:

torud 24. Okt 2007 20:29

Re: Eigene Databar als Komponente oder Projekt erstellen...W
 
habs getestet und im entsprechenden Threat schon 2 Fragen gepostet. Dies soll aber kein Doppelpost oder Push sein...


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:43 Uhr.

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