如何让TStringGrid中的内容靠右显示,标题居中显示,并且修改指定的某一行的颜色和字体。

解决方案 »

  1.   

    在StringGrid的OnDrawCell事件中:procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    var uFormat: Integer;
    begin
      with StringGrid1 do
      with Canvas do begin
        FillRect(Rect);
        if ARow = 0 then
          uFormat := DT_CENTER+DT_SINGLELINE+DT_VCENTER  // 居中
        else
          uFormat := DT_RIGHT+DT_SINGLELINE+DT_VCENTER;  // 居右
        if ARow = 2 then begin  // 如果是第二行则改颜色和字体
          Font.Color := clRed;
          Font.Name := '黑体';
        end;
        DrawText(Handle, PChar(Cells[ACol, ARow]), Length(Cells[ACol, ARow]),
                 Rect, uFormat);
      end;
    end;