Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Richedit Redo


hRb - Mo 27.03.17 21:21
Titel: Richedit Redo
Ich habe die Frage nach Undo/Redo 2015 im Zusammenhang mit Richedit-Class1 (Delphi 7) schon einmal gestellt. Nun erneuere ich die Frage für
Class2 oder Class3. Derzeit arbeite ich mit Delphi XE3 oder höher. Dort funktioniert mehrfaches Undo auf Anhieb. Die vergleichbare Redo-Funktion lässt sich jedoch überhaupt nicht compilieren, obwohl sie in der Microsoft-Dokumentation beschrieben ist, siehe:
Zitat:
https://msdn.microsoft.com/en-us/library/ windows/desktop/bb774218(v=vs.85).aspx (ohne Blank vor Windows)

Bei folgender Befehlsfolge kommt die Compiler-Meldung, dass CanRedo und Redo nicht bekannt sind:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
uses Vcl.StdCtrls
procedure TForm1.ReduClick(Sender: TObject);
begin
  if  SendMessage(Richedit1.Handle, EM_CANREDO, 00) <> 0 
   then SendMessage(Richedit1.Handle, EM_REDO, 00);
end;

Tatsächlich nutze ich eine Routine, die in diesem Forum Frühlingsrolle an anderer Stelle für Undo veröffentlich hat. (für mehrere Richedit in der Form)

Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TForm1.mmiUndoClick(Sender: TObject);
begin
  if FComponent is TCustomEdit then
    TCustomEdit(FComponent).Undo // lässt sich übersetzen und funktioniert
end;

Wird Undo jedoch durch Redo ersetzt, so lässt sich auch dieser Code nicht compilieren. Woran könnte dies liegen?


Delete - Mo 27.03.17 21:59

- Nachträglich durch die Entwickler-Ecke gelöscht -


hRb - Di 28.03.17 16:33

Vielen Dank, wusste nicht, dass dies Constanten sind. Funktioniert nun allerbestens und bin happy. Kenne zwar nicht die Anzahl der Schritte (habe im Test bei 5 aufgehört), aber für mich reicht dies allemal. :D
Bist schon ein tolles Delphi- :twisted: im guten Sinne!


jaenicke - Mi 29.03.17 09:44

Es sollte reichen die Unit Winapi.RichEdit in uses zu schreiben.