当我在TfrPage->Columns设=2时,第一页左、右分栏打印正常,第二页应在左侧打印变到右侧,第三页超出边界打印白纸请教怎样修改原码或哪个板本没问题
我用2.50/2.51都有一样问题,从第二页开始移位

解决方案 »

  1.   

    转自WWW。51DELPHI。COM:
     
        //多列时错位问题解决
         
         procedure TfrPage.NewColumn(Band: TfrBand);
         var
         b: TfrBand;
         tmpXAdjust: integer; //MK2004-03-28 由于XAdjust 可能在 ShowBand(Bands[btColumnHeader]); 后被改,用 tmpXAdjust 暂存之,多列时错位问题解决
         begin
         if CurColumn < ColCount - 1 then
         begin
         ShowBand(Bands[btColumnFooter]);
         Inc(CurColumn);
         Inc(XAdjust, ColWidth + ColGap);
         tmpXAdjust := XAdjust;
         CurY := LastStaticColumnY;
         ShowBand(Bands[btColumnHeader]);
         XAdjust := tmpXAdjust;
         end
         else
         NewPage;
         b := Bands[btGroupHeader];
         if b <> nil then
         while (b <> nil) and (b <> Band) do
         begin
         b.DisableInit := True;
         if (b.Flags and flBandRepeatHeader) <> 0 then
         if (b.Typ <> btGroupHeader) or not DisableRepeatHeader then
         ShowBand(b);
         b.DisableInit := False;
         b := b.Next;
         end;
         if Band.Typ in [btMasterData, btDetailData, btSubDetailData] then
         if (Band.HeaderBand <> nil) and
         ((Band.HeaderBand.Flags and flBandRepeatHeader) <> 0) then
         ShowBand(Band.HeaderBand);
         end;
     
    试试。
      

  2.   

    将 源代码注释成如下procedure TfrPage.DrawPageFooters;
    //var
    //  sadj : integer;
    begin
      CurColumn := 0;
    //  sadj:=XAdjust;
      XAdjust := LeftMargin;
      if (PageNo <> 0) or ((Bands[btPageFooter].Flags and flBandOnFirstPage) <> 0) then
        while PageNo < MasterReport.EMFPages.Count do
        begin
          if not (Append and WasPF) then
          begin
            if (CurReport <> nil) and Assigned(CurReport.FOnEndPage) then
              CurReport.FOnEndPage(PageNo);
            if (MasterReport <> CurReport) and (MasterReport <> nil) and
              Assigned(MasterReport.FOnEndPage) then
              MasterReport.FOnEndPage(PageNo);
            ShowBand(Bands[btPageFooter]);
          end;
          Inc(PageNo);
        end;
      PageNo := MasterReport.EMFPages.Count;
    //  XAdjust:=sadj;
    end;