Ja kannst du,
in meiner ursprünglichen Verbesserung sollte das Form1.refresh sowieso raus.
Wenn du es aber ganz richtig machen willst machst du es Double Buffered.
Dazu gehst du her und nimmst ein TBitmap das du immer genau gleich groß hälst wie deine Form.
und am Anfang vom OnKey machst du dann was in der Art :
Delphi-Quellcode:
var b:Tbitmap;
Procedure Tform1.OnKeyIrgendwas(..);
begin
b.canvas.rectangle(-1,-1,clientwidth+1,clientheight+1);
with b.canvas do begin
(*
Der Ganze Alte Code
*)
// Am Schluss
form1.canvas.draw(0,0,b);
end;
Dann flackert nichts mehr.