Firemonkey tEdit OnPaint

У меня есть tEdit и я хочу нарисовать его прямо с другим набором Fill а также Stroke цвета. Я закодировал следующее:

procedure TForm1.FormCreate (Sender: TObject);
begin
  Edit1.OnPaint := HandleEditPaint;
end;

procedure TForm1.HandleEditPaint (Sender: tObject; Canvas: tCanvas; const aRect: tRectF);
begin
  Canvas.BeginScene;
  Canvas.Fill  .Color := TAlphaColorRec.Aqua;
  Canvas.Fill  .Kind  := TBrushKind.bkSolid;
  Canvas.Stroke.Color := TAlphaColorRec.Red;
  Canvas.Stroke.Kind  := TBrushKind.bkSolid;
  Canvas.FillRect (aRect, 0, 0, AllCorners, 1, TCornerType.Bevel);
  Canvas.DrawRect (aRect, 0, 0, AllCorners, 1, TCornerType.Bevel);
  Canvas.EndScene;
end;

Он правильно рисует прямоугольник элемента управления, но не может быть сфокусирован, потому что при нажатии на элемент управления он входит в цикл, который запускает HandleEditPaint без остановки. Как я могу избежать этого? Я знаю, что при рисовании прямоугольника элемента управления я должен также заботиться о тексте элемента управления, но я должен также беспокоиться о курсоре мыши? Есть ли способ добиться этого поведения с помощью стилей?

0 ответов

Другие вопросы по тегам