PS:本来不应该有多难,结果折腾了半天,
firemonkey EDit Canvas 按需绘颜色
procedure TForm.EditPaint(Sender: TObject; Canvas: TCanvas; const ARect: TRectF); var ARect1: TRectF; begin //绘制颜色 (Sender as TEdit).BeginUpdate; ARect1:=ARect; ARect1.Left:=1; ARect1.Top:=1; ARect1.Bottom:=ARect.Bottom-1; ARect1.Right:=ARect.Right-1; if (Sender as TEdit).Text= ((Sender as TEdit).Hint) then begin Canvas.Fill.Kind := TBrushKind.Solid; Canvas.Fill.Color := TAlphaColorRec.Blue; Canvas.FillRect(ARect1, 0, 0, [], 1); (Sender as TEdit ).FontColor:=TAlphaColorRec.red; end else begin // Canvas.Fill.Kind := TBrushKind.Solid; Canvas.Fill.Color := TAlphaColorRec.Red; Canvas.FillRect(ARect1, 0, 0, [], 1); (Sender as TEdit ).FontColor:=TAlphaColorRec.blue; end; Canvas.Fill.Color := TAlphaColorRec.Black; Canvas.Font.Size:=12; Canvas.FillText(ARect1, (Sender as tedit).Text, false,1, [], TTextAlign.Center, TTextAlign.Center); (Sender as TEdit).EndUpdate; end;