采用画出不同字体的文字: procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); var Lft:integer; begin StringGrid1.Canvas.Font.Size:=20; StringGrid1.Canvas.Brush.Style:= bsClear; if ACol=0 then StringGrid1.Canvas.TextRect(Rect,2,2,'aaa'); if ACol=1 then begin StringGrid1.Canvas.Font.Size:=12;
Lft:=(ACol+1)*StringGrid1.DefaultColWidth; StringGrid1.Canvas.TextOut(Lft+5,2,'aaa'); end; if ACol=2 then begin StringGrid1.Canvas.Font.Size:=14; Lft:=(ACol+1)*StringGrid1.DefaultColWidth; StringGrid1.Canvas.TextOut(Lft+10,2,'aaa'); end; end;
由两个stringgrid组成,第一个stringgrid作为fixrow,它的rows设为2,fixrow设为1,stringgrid.height等于defaultrowheight就可以;stringgrid2的fixrow设为0。
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
Lft:integer;
begin
StringGrid1.Canvas.Font.Size:=20;
StringGrid1.Canvas.Brush.Style:= bsClear;
if ACol=0 then
StringGrid1.Canvas.TextRect(Rect,2,2,'aaa');
if ACol=1 then
begin
StringGrid1.Canvas.Font.Size:=12;
Lft:=(ACol+1)*StringGrid1.DefaultColWidth;
StringGrid1.Canvas.TextOut(Lft+5,2,'aaa');
end;
if ACol=2 then
begin
StringGrid1.Canvas.Font.Size:=14;
Lft:=(ACol+1)*StringGrid1.DefaultColWidth;
StringGrid1.Canvas.TextOut(Lft+10,2,'aaa');
end;
end;