Tstststs ... anstatt stundenlang die Haare zu raufen und irgendwas auszuprobieren, hätten ein paar gezielte Strg-Clicks auf DrawFocusRect zunächst hierhin gebracht:
Delphi-Quellcode:
unit Vcl.Graphics;
...
procedure TCanvas.DrawFocusRect(
const Rect: TRect);
begin
Changing;
RequiredState([csHandleValid, csBrushValid]);
Winapi.Windows.DrawFocusRect(FHandle, Rect);
Changed;
end;
Dann hierhin:
Delphi-Quellcode:
unit Winapi.Windows;
...
function DrawFocusRect;
external user32
name '
DrawFocusRect';
Und schließlich hierhin:
MSDN: DrawFocusRect function
Und was finden wir da?
Zitat von
MSDN: DrawFocusRect function:
Because DrawFocusRect is an XOR function, calling it a second time with the same rectangle removes the rectangle from the screen.
Aha, damit ist also auch geklärt, warum das explizite Löschen des Canvas eher kontraproduktiv als hilfreich ist
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)