最近因为工作需要需要作一些东西,写完之后,再回头看一看,竟然又拾起了以前的一些知识,来和大家一分享,或许太过于粗糙。StringGrid的对齐(水平对齐、垂直对齐、字体格式设置。)
可说的不对,只有一句,将其看成由一块一块的小方块组成,只需要在其Canvas上作文章就可以了。如代码:
      For Index_Grid := 0 to StringGrid1.ColCount do
      begin
        if FormatRC(Index_Grid) then
        begin          if FFormat = 3 then
          begin
            For Index := Low(Result_R) to High(Result_R) do
            begin
              if ACol = Result_R[Index] then
              begin
                TempR := StringGrid1.CellRect(Result_R[Index],ARow);
                FillRect(TempR);//清除原有内容
                if ACol = Result_R[Index] then
                begin
                  DrawText(Handle, PChar(Cells[ACol, ARow]),
                  Length(Cells[ACol, ARow]), R, DT_RIGHT or DT_SINGLELINE or
                  FormatView_V )
                end;
              end;
            end;
            For Index := Low(Result_C) to High(Result_C) do
            begin
              if ACol = Result_C[Index] then
              begin
                TempR := StringGrid1.CellRect(ACol,ARow);
                FillRect(TempR);//清除原有内容
                if ACol = Result_C[Index] then
                begin
                  DrawText(Handle, PChar(Cells[ACol, ARow]),
                  Length(Cells[ACol, ARow]), R,DT_CENTER  or DT_SINGLELINE or
                  FormatView_V)
                end;
              end;
            end;
          end ......注释没有加,如果需要,我会放到我的站点 www.nxit.net的FTP区上。
而打印,我是利用ADO存取技术(只需要一个ADOTable,其它的数据集组件均不需要,而且不用进行太多配制)function TForm1.LinkTextFile: Boolean;
begin
  Result := False;
  with ADOTable1 do
  begin
    ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;' +
                        'Data Source= D:\;Extended Properties=Text;' +
                        'Persist Security Info=False';
    TableName := 'AAA#TXT';
    Open;       
    if Active then
      Result := True;
  end;
end;
而当打印时,我完全采用了动态生成。如:
procedure TForm1.PreViewEvent;
Var
  Index_R ,ALeft: Integer;
  Index : Integer;
begin
  QRFree;
  StringGrid_File('D:\AAA.TXT');
  if Not LinkTextFile then
  begin
    ShowMessage('失败');
    Exit;
  end;
  //
  QuickRep1.DataSet := ADOTable1;
  Index_R := ReSize(StringGrid1.Width);
  ALeft := 13;
  Create_Title(TitleBand1,ALeft,24,Size_(0),20,
     HeaderControl1.Sections[0].Text,taLeftJustify);
  with Create_QRDBText(DetailBand1,ALeft,8,Size_(0),20,
         StringGrid1.Font,taLeftJustify) do
  begin
    DataSet := ADOTable1;
    DataField := ADOTable1.Fields[0].DisplayName;
  end;
  ALeft := ALeft + Size_(0) + 1;
  For Index := 1 to ADOTable1.FieldCount - 1 do
  begin
    Create_VLine(TitleBand1,ALeft - 13,16,1,40);
    Create_Title(TitleBand1,ALeft,24,Size_(Index),20,
      HeaderControl1.Sections[Index].Text,taLeftJustify);
    Create_VLine(DetailBand1,ALeft - 13,-1,1,31);
    with Create_QRDBText(DetailBand1,ALeft ,8,Size_(Index),20,
         StringGrid1.Font,taLeftJustify) do
    begin
      DataSet := ADOTable1;
      DataField := ADOTable1.Fields[Index].DisplayName;
    end;
    ALeft := ALeft + Size_(Index) + 1;
  end;
  QuickRep1.Preview;
end;注释没有加:(  
欢迎大家访问www.nxit.net/bbs
在那个上边, 您将发现更多的资源。另诚招版主....