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