Firemonkey tEdit OnPaint - PullRequest
       17

Firemonkey tEdit OnPaint

0 голосов
/ 02 февраля 2019

У меня есть 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 нон-стоп.Как я могу избежать этого?Я знаю, что при рисовании прямоугольника элемента управления я должен также заботиться о тексте элемента управления, но я должен также беспокоиться о курсоре мыши?Есть ли способ добиться этого поведения с помощью стилей?

...