// Hiermit kann man ein Undo in Textboxen (TEdit bis TRichEdit)
// durchführen, anzeigen und sperren. Für neuere Versionen
// siehe
mehrfaches Undo/Redo in einem Richedit.


// Getestet mit D4 unter XP

// Undo-Möglichkeit anzeigen 

function UndoAnzeige(tce: TCustomEdit): string; 
var 
  s, n: string; 
begin 
  if tce.Perform(EM_CANUNDO, 0, 0) = 0 
    then s := 'nicht ' else s := ''; 
  n := tce.Name; 
  if n <> '' then n := 'bei ' + n + #32;   
  Result := 'Undo ' + n + s + 'möglich.'; 
end;
 
// Undo durchführen 
 
procedure DoUndo(tce: TCustomEdit); 
begin 
  tce.Perform(EM_UNDO, 0, 0); 
  tce.Selstart := tce.Selstart + length(tce.SelText); 
  tce.Setfocus; 
end; 
 
// Undo sperren (bis zur nächsten Eingabe) 
 
procedure UndoStop(tce: TCustomEdit); 
begin 
  tce.Perform(EM_EMPTYUNDOBUFFER, 0, 0); 
  tce.Setfocus; 
end; 
 
 
 
// --- Beispielaufruf für ein Memo --- 
 
procedure TForm1.Memo1Change(Sender: TObject); 
begin 
  Label1.caption := UndoAnzeige(Memo1); 
end; 
 
procedure TForm1.Button4Click(Sender: TObject); 
begin 
  DoUndo(Memo1); 
end; 
 
procedure TForm1.Button6Click(Sender: TObject); 
begin 
  UndoStop(Memo1); 
  Label1.caption := UndoAnzeige(Memo1); 
end; 
 
procedure TForm1.FormCreate(Sender: TObject); 
begin 
  Label1.caption := UndoAnzeige(Memo1); 
end;




 

Zugriffe seit 6.9.2001 auf Delphi-Ecke