stringgrid颜色问题(50)

  • 主题发起人 主题发起人 maill01
  • 开始时间 开始时间
M

maill01

Unregistered / Unconfirmed
GUEST, unregistred user!
stringgrid 一个cell里有2个字:你好,请问怎么使“你”显示红色,“好”显示蓝色?
 
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);Var X,Y:Integer;begin X:=Rect.Left+2; Y:=Rect.Top+2; StringGrid1.Canvas.Font.Color:=clred; StringGrid1.Canvas.TextOut ( X, Y, '你'); StringGrid1.Canvas.Font.Color:=clblue; X := X+ StringGrid1.Canvas.TextWidth('你'); StringGrid1.Canvas.TextOut ( X, Y, '好');end;呵呵,太麻烦了。
 
再试一个代码,呵呵procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);Const CHARARR:ARRAY [1..2] OF String=('你','好'); COLARR:ARRAY [1..2] OF TColor=(clRed,clBlue);Var X,Y,I:Integer; iPos:Integer; S,Head:String;begin S := StringGrid1.Cells[ACol,ARow]; For I:=Low(CHARARR) to High(CHARARR) do Begin iPos := Pos( CHARARR,S); Y:=Rect.Top+2; if iPos>0 then begin Head:=Copy(S,1,iPos-1); X:=Rect.Left+2+ TStringGrid(Sender).Canvas.TextWidth(Head); TStringGrid(Sender).Canvas.Font.Color:=COLARR; TStringGrid(Sender).Canvas.TextOut(X,Y,CHARARR); end; End;end;
 
楼上的几位正解。
 
这个问题我原来已问过,解决了,基本同上面的一样!
 
可以直接使用advsstringgrid
 
后退
顶部