Einzelnen Beitrag anzeigen

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, 18: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