Den gesamten Aufwand könnte man sehr schön vereinfachen, wenn das Grid nur für Ein-/Ausgabe verwendet wird und die eigentliche Verwaltung in einer separaten Struktur erfolgt.
Dort findet dann die Validierung statt und das Grid braucht sich nur noch um die Anzeige und die Eingabe kümmern.
Delphi-Quellcode:
TDataItemState = ( disNotUnique, disInvalidValue );
TDataItemStates = set of TDataItemState;
TData = class
public
property Count : Integer; // Anzahl der Items
property Items[Index : Integer] : TDataItem read GetItems; // Zugriff auf jedes einzelne Item
property ItemStates[Index : Integer] : TDataItemStates read GetItemStates; // Zugriff auf den Item-Status
property IsValid : Boolean read GetIsValid; // True, wenn alle Items valid sind -> Dem Speichern steht nichts im Wege
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)