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!?