Q&A

  • 스트링그리드 출력??
여러 테이블에서 쿼리를 한 결과가 스트링 그리드에 보여집니다.
조회를 할때 마다 row수는 항상 변하는데요..
스트링 그리드를 퀵리포트를 이용해서 출력을 할려고 합니다.
형식은 그리드 형식으로요
row수가 항상 정해져 있는게 아니라서 qrlabel를 지정할수가 없습니다.
어떻게 해야 할지 알려주세요  
3  COMMENTS
  • Profile
    오병주 2005.02.16 02:18
    팁란에 올려놓을걸 다시 올립니다.

    일단 질문을 하시기 전에 팁란이나 강의실을 먼저 체크해보시고 물어보시는 편이
    개인적으로 더 도움이 될듯 싶군요..^^

    그럼 수고하세요...

    uses
      Printers;

    procedure PrintGrid(sGrid: Tstringgrid; sTitle: string);
    var
      X1, X2: Integer;
      Y1, Y2: Integer;
      TmpI: Integer;
      F: Integer;
      TR: TRect;
    begin
      Printer.Title := sTitle;
      Printer.BeginDoc;
      Printer.Canvas.Pen.Color  := 0;
      Printer.Canvas.Font.Name  := 'Times New Roman';
      Printer.Canvas.Font.Size  := 12;
      Printer.Canvas.Font.Style := [fsBold, fsUnderline];
      Printer.Canvas.TextOut(0, 100, Printer.Title);
      for F := 1 to sGrid.ColCount - 1 do  
      begin
        X1 := 0;
        for TmpI := 1 to (F - 1) do
          X1 := X1 + 5 * (sGrid.ColWidths[TmpI]);
        Y1 := 300;
        X2 := 0;
        for TmpI := 1 to F do
          X2 := X2 + 5 * (sGrid.ColWidths[TmpI]);
        Y2 := 450;
        TR := Rect(X1, Y1, X2 - 30, Y2);
        Printer.Canvas.Font.Style := [fsBold];
        Printer.Canvas.Font.Size := 7;
        Printer.Canvas.TextRect(TR, X1 + 50, 350, sGrid.Cells[F, 0]);
        Printer.Canvas.Font.Style := [];
        for TmpI := 1 to sGrid.RowCount - 1 do  
        begin
          Y1 := 150 * TmpI + 300;
          Y2 := 150 * (TmpI + 1) + 300;
          TR := Rect(X1, Y1, X2 - 30, Y2);
          Printer.Canvas.TextRect(TR, X1 + 50, Y1 + 50, sGrid.Cells[F, TmpI]);
        end;
      end;
      Printer.EndDoc;
    end;


    //Examplem, Beispiel:

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      PrintGrid(StringGrid1, 'Print stringgrid');
    end;



  • Profile
    모영철 2005.02.16 01:36
    어지간 하면..하나의 쿼리로 만들어서

    퀵리포트의 데이타셋과 연결하고 Detail 밴드를 이용해 뿌려주는게 가장 편하겠지요..

    만일 하나의 쿼리로 만들수 없다면..

    스트링그리드를 하나의 테이블이라 생각하고 TQuery에다가 필드수를 맞춰주고..

    스트링그리드의 내용을 Append를 시킵니다.

    그 TQuery로 퀵리포트와 연결하여 뽑으셔도 됩니다.


  • Profile
    KDDG_RNStone 2005.02.16 01:21
    검색에서 OnNeedData 로 검색 해 보시고,

    델파이 Demos에 보시면 QuickRep 부분에 OnNeedData 예제가 있습니다.

    이걸로 해결 할 수 있을듯 싶습니다만...

    즐코 하세요.