//然后将AbsolutePage的数据乾坤大挪移到StringGrid1中 procedure TForm1.ShowData(page:integer); var iRow, iCol, iCount : Integer; rs : ADOInt.Recordset; begin ADoquery1.Recordset.AbsolutePage:=Page; Currpage:=page; iRow := 0; iCol := 1; stringgrid1.Cells[iCol, iRow] := ''''FixedCol1''''; Inc(iCol); stringgrid1.Cells[iCol, iRow] := ''''FixedCol2''''; Inc(iRow); Dec(iCol); rs := adoquery1.Recordset; for iCount := 1 to SpinEdit1.Value do begin stringgrid1.Cells[iCol, iRow] := rs.Fields.Get_Item(''''FieldName1'''').Value; Inc(iCol); stringgrid1.Cells[iCol, iRow] := rs.Fields.Get_Item(''''FieldName1'''').Value; Inc(iRow); Dec(iCol); rs.MoveNext; end;
//上一页 procedure TForm1.Button2Click(Sender: TObject); begin If (CurrPage)<>1 then ShowData(CurrPage-1); end;
//下一页 procedure TForm1.Button3Click(Sender: TObject); begin If CurrPage<>ADoquery1.Recordset.PageCount then ShowData(CurrPage+1); end;
打印StringGrid的程序源码这段代码没有看懂,但是可能有的朋友需要,所以共享一下子 :) procedure TForm1.SpeedButton11Click(Sender: TObject); Var Index_R ,ALeft: Integer; Index : Integer; begin 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,HeaderControl1.Sections.Items[0].Width,20, HeaderControl1.Sections[0].Text,taLeftJustify); with Create_QRDBText(DetailBand1,ALeft,8,StringGrid1.ColWidths[0],20, StringGrid1.Font,taLeftJustify) do begin DataSet := ADOTable1; DataField := ADOTable1.Fields[0].DisplayName; end; ALeft := ALeft + StringGrid1.ColWidths[0] * Index_R + Index_R; For Index := 1 to ADOTable1.FieldCount - 1 do begin Create_VLine(TitleBand1,ALeft - 13,16,1,40); Create_Title(TitleBand1,ALeft,24,HeaderControl1.Sections.Items[Index].Width,20, HeaderControl1.Sections[Index].Text,taLeftJustify); Create_VLine(DetailBand1,ALeft - 13,-1,1,31); with Create_QRDBText(DetailBand1,ALeft ,8,StringGrid1.ColWidths[Index] * Index_R,20, StringGrid1.Font,taLeftJustify) do begin DataSet := ADOTable1; DataField := ADOTable1.Fields[Index].DisplayName; end; ALeft := ALeft + StringGrid1.ColWidths[Index] * Index_R + Index_R; end; QuickRep1.Preview; end;
function TForm1.ReSize(AGridWidth: Integer): Integer; begin Result := Trunc(718 / AGridWidth); end;
function TForm1.StringGrid_File(AFileName: String): Boolean; var StrValue : String; Index : Integer; ACol , ARow : Integer; AFileValue : System.TextFile; begin StrValue := ''''''''; Try AssignFile(AFileValue , AFileName); ReWrite(AFileValue); StrValue := HeaderControl1.Sections[0].Text; For Index := 1 to HeaderControl1.Sections.Count - 1 do StrValue := StrValue + '''','''' + HeaderControl1.Sections[Index].Text; Writeln(AFileValue,StrValue); StrValue := ''''''''; For ARow := 0 To StringGrid1.RowCount - 1 do begin StrValue := ''''''''; StrValue := StringGrid1.Cells[0,ARow]; For ACol := 1 To StringGrid1.ColCount - 1 do begin StrValue := StrValue + '''', '''' + StringGrid1.Cells[ACol,ARow]; end; Writeln(AFileValue,StrValue); end; Finally CloseFile(AFileValue); end; end;
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;
function TForm1.Create_QRDBText(Sender: TWinControl; ALeft, ATop, AWidth, AHight: Integer; AFont: TFont; AAlignMent: TAlignment): TQRDBText; var AQRDBText : TQRDBText; begin AQRDBText := TQRDBText.Create(Nil); with AQRDBText do begin Parent := Sender; Left := ALeft; Top := ATop; Width := AWidth; Height := AHight; AlignMent := AAlignMent; Font.Assign(AFont); end; Result := AQRDBText; end;
function TForm1.Create_VLine(Sender: TWinControl; ALeft, ATop, AWidth, AHight: Integer): TQRShape; var AQRShapeV : TQRShape; begin AQRShapeV := TQRShape.Create(Nil); with AQRShapeV do begin Parent := Sender; Left := ALeft; Top := ATop; Width := AWidth; Height := AHight; end; Result := AQRShapeV; end;
procedure TForm1.Create_Title(Sender: TWinControl; ALeft, ATop, AWidth, AHight: Integer; ACaption: String; AAlignMent: TAlignment); var AQRLabel : TQRLabel; begin AQRLabel := TQRLabel.Create(Nil); with AQRLabel do begin Parent := Sender; Left := ALeft; Top := ATop; Width := AWidth; AlignMent := AAlignMent; Caption := ACaption; end; end;