Ich habe mich gerade an meine Routine für Faule erinnert. Damals habe ich just4fun eine Funktion geschrieben mit der es möglich war alle Einstellungen auf dem Formular in eine Ini zu speichern/daraus zu laden, ohne die einzelnen Komponenten in eine Speiche- oder Ladeliste eintragen zu müssen. Ich hab einfach alles gespeichert und geladen.
Die Routine finde ich jetzt nicht mehr, aber das Prinzip ist einfach und evtl. auf dein Problem anwendbar. In einer Durchgang wird aus allen Inhalten aller Komponenten auf dem Formular eine Checksumme gebildet. Unterscheidet sie sich zu der vorherigen, gibt es eine Änderung.
Das spezielle an der Routine ist, dass in die Routine nur einmal der Komponententyp aufgenommen werden muss, z. B. TEdit. Danach werden automatisch alle TEdits erfasst, auch solche die neu dazukommen.
Ich hab das hier mit einer Checksumme gemacht, man kann es auch anders machen. Wichtig ist nur, dass so alle Komponenten überprüft werden.
Delphi-Quellcode:
function ChecksumStr(s: string): Integer;
begin
Result := -1; //Hier aus einem String eine Checksumme bilden
end;
function ChecksumInt(i: Integer): Integer;
begin
Result := -1; //Hier aus einem Integer eine Checksumme bilden
end;
function ChecksumBool(b: Boolean): Integer;
begin
Result := -1; //Hier aus einem Boolean eine Checksumme bilden
end;
procedure TForm1.Button2Click(Sender: TObject);
var
i, ChkSum: Integer;
begin
ChkSum := 0;
for i := 0 to ComponentCount - 1 do
begin
if Components[i].ClassType = TEdit then
ChkSum := ChkSum + ChecksumStr(TEdit(Components[i]).Text);
if Components[i].ClassType = TComboBox then
ChkSum := ChkSum + ChecksumInt(TComboBox(Components[i]).ItemIndex);
if Components[i].ClassType = TCheckBox then
ChkSum := ChkSum + ChecksumBool(TCheckBox(Components[i]).Checked);
if Components[i].ClassType = TRadioButton then
ChkSum := ChkSum + ChecksumBool(TRadioButton(Components[i]).Checked);
end;
//Hier dann die CheckSumme auf Änderung prüfen
ShowMessage(IntToStr(ChkSum));
end;
Achso, die Funktionen für Checksummen müssten selbst programmiert werden.