Hai ihr lieben,
mit diesem Code zeichne ich im OnEnter eines TEdits einen Rahmen um dieses und entferne ihn im OnExit wieder.
Eigentlich funktioniert dies auch ... aber ... wenn ich die Anwendung starte (einfach zwei Edits auf der Form und beiden das selbe OnEnter , OnExit zugewiesen) hast das erste Edit keinen Rahmen. Erst wenn ich den Focus ändere wird er so gezeichnet wie ich es möchte.
Hat einer eine Idee woran das liegen kann?
Delphi-Quellcode:
procedure DrawControlRect(AHandel: HWND; AColor: TColor);
// Diese Procedure habe ich im großen und ganzen bei
// den Jedis "geklaut"
var
LHDC: HDC;
LRect: TRect;
LCanvas: TCanvas;
begin
LHDC := GetWindowDC(AHandel);
try
GetWindowRect(AHandel, LRect);
OffsetRect(LRect, -LRect.Left, -LRect.Top);
LCanvas := TCanvas.Create;
with LCanvas
do
begin
try
Handle := LHDC;
Brush.Color := AColor;
FrameRect(LRect);
InflateRect(LRect, -1, -1);
FrameRect(LRect);
finally
Free;
end;
end;
finally
ReleaseDC(AHandel, LHDC);
end;
end;
procedure TForm1.edt_Edit2Enter(Sender: TObject);
begin
DrawControlRect((Sender
as TWinControl).Handle, clBlue);
end;
procedure TForm1.edt_Edit2Exit(Sender: TObject);
begin
(Sender
as TWinControl).Perform(CM_RECREATEWND, 0, 0);
end;
Stephan B.
"Lasst den Gänsen ihre Füßchen"