0

我有一个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不间断的循环。我怎样才能避免这种情况发生?我知道在绘制控件的矩形时,我也必须注意控件的文本,但我也应该关心鼠标光标吗?有没有办法使用样式来实现这种行为?

4

0 回答 0