ich würde es über eine while Schleife machen und die überflüssigen Zeilen löschen
Delphi-Quellcode:
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
//prüfen ob mehr Zeilen drin sind und wenn ja löschen
while (Memo1.lines.Count > 22) do Memo1.lines.delete(21);
//Falls ein Enter eingegeben wird dieses auch gelöscht
if (Memo1.Lines.Count=22) and (Key=#13) then Key:=#0;
end;
Wenn man nur die Zeilen löscht die zuviel sind, wird die zeile 22 bei jedem drücken der "Enter" Taste auch mit überschieben. Daher ist es besser diese Prüfung im OnKeyPress Ereigniss des Memos zu machen und beim drüchen der "Enter" Taste diese zu ignorieren.
[Edit]noch ein bissl Erklärung is besser [/Edit]