AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Eigene Databar als Komponente oder Projekt erstellen...Wie?
Thema durchsuchen
Ansicht
Themen-Optionen

Eigene Databar als Komponente oder Projekt erstellen...Wie?

Ein Thema von torud · begonnen am 10. Okt 2007 · letzter Beitrag vom 24. Okt 2007
Antwort Antwort
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#1

Eigene Databar als Komponente oder Projekt erstellen...Wie?

  Alt 10. Okt 2007, 17:59
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...
Miniaturansicht angehängter Grafiken
databar_165.png  
Angehängte Dateien
Dateityp: zip databar_151.zip (6,0 KB, 3x aufgerufen)
Danke
Tom
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#2

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

  Alt 23. Okt 2007, 17:14
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!?
Danke
Tom
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#3

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

  Alt 23. Okt 2007, 18:48
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
Gruß
Hansa
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#4

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

  Alt 23. Okt 2007, 20:04
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.
Danke
Tom
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#5

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

  Alt 24. Okt 2007, 18:15
Hier steht mehr :

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

P.S.: es gibt hier auch eine Suche.
Gruß
Hansa
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#6

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

  Alt 24. Okt 2007, 18:52
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...
Danke
Tom
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#7

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

  Alt 24. Okt 2007, 19:21
Das geht SOOO einfach ! 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.
Gruß
Hansa
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#8

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

  Alt 24. Okt 2007, 19:29
habs getestet und im entsprechenden Threat schon 2 Fragen gepostet. Dies soll aber kein Doppelpost oder Push sein...
Danke
Tom
  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 10:37 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