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