Nehmen wir mal an, der Benutzer deiner Anwendung kann die Reihenanzahl eines StringGrids verändern. Bei jeder Veränderung (! wirklich nur bei einer Veränderung !) soll das Grid geleert werden und gleichzeitig die neue Reihenanzahl in der Zelle rechts unten angezeigt werden. Nun gibt es aber in deinem Programm sehr viele Möglichkeiten zur Veränderung der Reihenanzahl ... (dummes Beispiel, mir fällt aber jetzt spontan nix besseres ein):
Du deklarierst eine Variable, eine Property und eine Prozedur:
Delphi-Quellcode:
...
procedure SetReihen(Value: Integer);
private
{ Private-Deklarationen }
FReihen: Integer;
property Reihen: Integer read FReihen write SetReihen;
public
{ Public-Deklarationen }
end;
...
Die Prozedur "SetReihen" sieht wie folgt aus:
Delphi-Quellcode:
procedure TForm1.SetReihen(Value: Integer);
var r, c: Integer;
begin
if Value = FReihen then Exit;
FReihen := Value;
For r := 0 To StringGrid1.RowCount - 1 do
For c := 0 To StringGrid1.ColCount - 1 do
StringGrid1.Cells[r, c] := '';
StringGrid1.Cells[StringGrid1.ColCount - 1, StringGrid1.RowCount - 1] := IntToStr(FReihen);
end;
Der Zugriff auf die Property erfolgt denkbar einfach:
Reihen := 5;
Wenn "Reihen" (oder besser gesagt "FReihen") schon vor der Veränderung den Wert 5 hatte, wird am StringGrid nix verändert. Das ganze macht natürlich erst bei richtig vielen Eigenschaften Sinn.