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