亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ureportclass.pas

?? Barcode And LabelPrint
?? PAS
字號:
unit UReportClass;

interface

uses
   Windows,classes,Forms,RpRave,RvClass,RvCSstd,RVProj,RpDefine,RpConDS,
     RvDirectDataView,RvCsData,RvCsRpt,rvData,RpRenderPreView,Rpfiler,sysUtils,
     RpRenderPrinter,rvUtil,Controls,Graphics,RvCsDraw,RpBase,Printers;  //UGlobalSet,

type
  ReportClass=class(TComponent)
  private
    ClsIndexList:TStringList;
    FRpPage:TRavePage;
    FReport:TRaveReport;
    function GetReportName: CString;//
    procedure SetOnPVPageChange(const Value: TNotifyEvent);
    function GetPVPageChange: TNotifyEvent;
  protected
    RvProject: TRvProject;
    RvNDRWriter: TRvNDRWriter;
    RvRenderPreView: TRvRenderPreView;
    RvRenderPrinter: TRvRenderPrinter;
    DataViewList:TList;
    function GetCtrlName(Cls:TClass):CString;
  public
    PreViewTop,PreViewLeft:Integer;
    property OnPVPageChange:TNotifyEvent read GetPVPageChange write SetOnPVPageChange;
    //
    property ReportName:CString read GetReportName;
    procedure ProjectExecute;
    constructor Create(AWoner:TComponent);override;
    destructor Destroy;override;
    //
    function AddText(Parent:TRavecomponent;aText:CString;Top,Left,
                     width,Height:Single;Font:TRaveFont):TRaveText;
    function AddDataText(Parent:TRavecomponent;DataViewId:Integer;
                           FieldName:CString;Top,Left,width,
                           Height:Single;Font:TRaveFont):TRaveDataText;
    function AddRegion(Parent:TRavecomponent;Top,Left,width,Height:Single):TRaveRegion;
    function AddDataBind(RvRegion:TRaveRegion;Height:Single;DataViewID:Integer):TRaveDataBand;
    function AddDataCycle(dataViewId:Integer):TRaveDataCycle;
    function AddBitmap(parent: TRavecomponent;aBitmap:TBitmap;
                          Top,Left,width,Height:Single): TRaveBitmap;
    //
    function XPointToInch(X:Integer):Single;//點坐標到英寸
    function YPointToInch(Y:Integer):Single;//點坐標到英寸
    procedure AddDataSetConnection(DSConn:TRvDataSetConnection); //加入數據連接
    procedure SaveRav; //保存報表
    //以下全部是關于預覽的函數與過程
    procedure PreView(ScrollBox:TScrollBox);
    procedure PreViewfirstPage;
    Procedure PreViewPrevPage;
    Procedure PreViewNextPage;
    procedure PreViewLastPage;
    procedure GotoPage(Index:Integer);
    procedure PreViewReDrawPage;
    procedure PreViewZoomIn;
    procedure PreViewZoomOut;
    procedure PreViewFitPage;
    function PreviewPages:Integer;
    function PreviewCurPage:Integer;
    function PreviewBof:Boolean; //首頁
    function PreviewEof:Boolean; //尾頁
    function PreViewPrinter:Boolean; //預覽后打印
    procedure refreshScollBox;
    //設置頁面大小
    procedure SetPageSize(Height,Width:Single);
    function Printer:Boolean; //打印
  end;

implementation


{ ReportClass }

function ReportClass.AddBitmap(parent: TRavecomponent;aBitmap:TBitmap;Top,Left,width,Height:Single): TRaveBitmap;
var
  RvBmp:TRaveBitmap;
begin
    if Parent=nil then Parent:=FRpPage;
    RvBmp:=TRaveBitmap.Create(parent);
    RvBmp.Name:=GetCtrlName(TRaveBitmap);
    Rvbmp.Parent:=parent;
    RvBmp.Top:=Top;
    RvBmp.Left:=Left;
    if Assigned(aBitmap) then
    begin
        RvBmp.Image.Assign(aBitmap);
    end;
    Result:=RvBmp;
end;

function ReportClass.AddDataBind(RvRegion: TRaveRegion; Height:Single;
  DataViewID: Integer): TRaveDataBand;
var
  RvDataBand:TRaveDataBand;
begin
    RvDataBand:=TRaveDataBand.Create(RvRegion);
    RvDataBand.Name:=GetCtrlName(TRaveDataBand);
    RvDataBand.Parent:=RvRegion;
    RvDataBand.Height:=Height;
    RvDataBand.DataView:=TRaveDataView(DataViewList.items[DataViewID]);
    Result:=RvDataBand;
end;

function ReportClass.AddDataCycle(dataViewId: Integer): TRaveDataCycle;
var
  Cycle:TRaveDataCycle;
begin
    Cycle:=TRaveDataCycle.Create(FRpPage);
    Cycle.Name:=GetCtrlName(TRaveDataCycle);
    Cycle.Parent:=FRpPage;
    Cycle.DataView:=TRaveDataView(DataViewList.Items[dataViewId]);
    Result:=Cycle;
end;

procedure ReportClass.AddDataSetConnection(DSConn: TRvDataSetConnection);
var
  RvDataView:TRaveDataView;
  FieldList:TList;
begin
    FieldList:=TList.Create;
    RvDataView:=RvProject.ProjMan.NewDataObject(TRaveDataView) as TRaveDataView;
    RvDataView.Name:=GetCtrlName(TRaveDataView);
    RvDataView.ConnectionName:=DSConn.Name;
    rvData.CreateFields(RvDataView,nil,nil,true);
    DataViewList.Add(RvDataView);
    FieldList.Free;
end;

function ReportClass.AddDataText(Parent: TRavecomponent;
  DataViewId: Integer; FieldName: CString; Top, Left,width,
  Height: Single;Font:TRaveFont):TRaveDataText;
var
  RvDataText:TRaveDataText;
begin
    if Parent=nil then Parent:=FRpPage;
    RvDataText:=TRaveDataText.Create(Parent);
    RvDataText.Name:=GetCtrlName(TRaveDataText);
    RvDataText.Parent:=Parent;
    RvDataText.Top:=Top;
    RvDataText.Left:=Left;
    RvDataText.DataView:=TRaveDataView(DataViewList.Items[DataViewId]);
    RvDataText.DataField:=FieldName;
    if Assigned(Font) then RvDataText.Font.Assign(Font);
    Result:=RvDataText;
end;

function ReportClass.AddRegion(Parent: TRavecomponent; Top, Left, width,
  Height: Single): TRaveRegion;
var
  RvRegion:TRaveRegion;
begin
    if Parent=nil then Parent:=FRpPage;
    RvRegion:=TRaveRegion.Create(Parent);
    RvRegion.Name:=GetCtrlName(TRaveRegion);
    RvRegion.Parent:=Parent;
    RvRegion.Top:=Top;
    RvRegion.Left:=Left;
    RvRegion.Width:=Width;
    RvRegion.Height:=Height;
    Result:=RvRegion;
end;

function ReportClass.AddText(Parent:TRavecomponent;aText: CString; Top, Left,width,
  Height: Single;Font:TRaveFont):TRaveText;
var
  RvText:TRaveText;
begin
    if Parent=nil then Parent:=FRpPage;
    RvText:=TRaveText.Create(Parent);
    RvText.Name:=GetCtrlName(TRaveText);
    RvText.Parent:=Parent;
    RvText.Top:=Top;
    RvText.Left:=Left;
    RvText.Text:=aText;
    if Assigned(Font) then RvText.Font.Assign(Font);
    Result:=RvText;
end;

constructor ReportClass.Create(AWoner: TComponent);
begin
    inherited;
    PreViewTop:=10;
    PreViewLeft:=10;
    ClsIndexList:=TStringList.Create;
    DataViewList:=TList.Create ;
    RvProject:=TRvProject.Create(self);
    RvProject.New;
    FReport:=RvProject.ProjMan.FindRaveComponent(ReportName,nil) as TRaveReport;
    FRpPage:=FReport.FirstPage;
    //
    RvNDRWriter:=TRvNDRWriter.Create(self);
    RvNDRWriter.StreamMode:=SMUser;
    RvNDRWriter.Stream:=TMemoryStream.Create ;
    RvRenderPreView:=TRvRenderPreView.Create(self);
    RvRenderPrinter:=TRvRenderPrinter.Create(self);
end;

destructor ReportClass.Destroy;
begin
    RvRenderPrinter.Free;
    RvNDRWriter.Stream.Free;
    RvNDRWriter.Free;
    RvRenderPreView.Free;
    //
    RvProject.Free;
    DataViewList.Free;
    ClsIndexList.Free;
    inherited;
end;

function ReportClass.GetCtrlName(Cls: TClass): CString;
var
  idx:Integer;
begin
    idx:=StrToIntDef(ClsIndexList.Values[cls.ClassName],0);
    Result:=cls.ClassName+inttostr(idx);
    ClsIndexList.Values[cls.ClassName]:=IntToStr(idx+1);
end;

function ReportClass.GetReportName: CString;
begin
    Result:=RvProject.ReportName;
end;

function ReportClass.PreviewPages: Integer;
begin
    Result:=RvRenderPreView.Pages
end;

procedure ReportClass.PreView(ScrollBox: TScrollBox);
begin
    RvProject.Engine:=RvNDRWriter;
    RvProject.Execute;
    RvRenderPreView.ScrollBox:=ScrollBox;
    RvRenderPreView.Render(RvNDRWriter.Stream);
    refreshScollBox;
    RvProject.Engine:=nil;
end;

procedure ReportClass.PreViewfirstPage;
begin
    RvRenderPreView.RenderPage(0);
    refreshScollBox;
end;

procedure ReportClass.PreViewLastPage;
begin
    RvRenderPreView.RenderPage(RvRenderPreView.Pages);
    refreshScollBox;
end;

procedure ReportClass.PreViewNextPage;
begin
    RvRenderPreView.NextPage;
    refreshScollBox;
end;

procedure ReportClass.PreViewPrevPage;
begin
    RvRenderPreView.PrevPage;
    refreshScollBox;
end;

function ReportClass.PreViewPrinter: Boolean;
begin
    RvRenderPrinter.Render(RvNDRWriter.Stream);
    Result:=True;
end;

function ReportClass.Printer: Boolean;
begin
    RvProject.Engine:=RvNDRWriter;
    RvProject.Execute;
    Result:=PreViewPrinter;
    RvProject.Engine:=nil;
end;

procedure ReportClass.ProjectExecute;
begin
    RvProject.Execute
end;

procedure ReportClass.SaveRav;
begin
    RvProject.SaveToFile('RP.rav');
end;

procedure ReportClass.SetPageSize(Height, Width: single);
begin
    //若設置大小超出范圍,將不起作用
    FRpPage.PageHeight:=Height;
    FRpPage.PageWidth:=Width;
end;

function ReportClass.PreviewBof: Boolean;
begin
    if RvRenderPreView.CurrentPage=1 then
        Result:=True
    else Result:=False;
end;

function ReportClass.PreviewEof: Boolean;
begin
    if RvRenderPreView.CurrentPage=RvRenderPreView.Pages then
        Result:=True
    else Result:=False;
end;

procedure ReportClass.SetOnPVPageChange(const Value: TNotifyEvent);
begin
    RvRenderPreView.OnPageChange := Value;
end;

function ReportClass.GetPVPageChange: TNotifyEvent;
begin
    Result := RvRenderPreView.OnPageChange;
end;

function ReportClass.PreviewCurPage: Integer;
begin
    Result:=RvRenderPreView.CurrentPage;
end;

procedure ReportClass.GotoPage(Index: Integer);
begin
    if (Index>0) And (Index<=RvRenderPreView.Pages) then
    begin
        RvRenderPreView.RenderPage(Index);
        refreshScollBox;
    end;
end;

procedure ReportClass.PreViewReDrawPage;
begin
    RvRenderPreView.RedrawPage;
end;

procedure ReportClass.PreViewZoomIn;
begin
    RvRenderPreView.ZoomIn ;
    refreshScollBox;
end;

procedure ReportClass.PreViewZoomOut;
begin
    RvRenderPreView.ZoomOut ;
    refreshScollBox;
end;

procedure ReportClass.PreViewFitPage;
begin
    RvRenderPreView.ZoomFactor:=RvRenderPreView.ZoomPageFactor;
    refreshScollBox
end;

procedure ReportClass.refreshScollBox;
begin
    RvRenderPreView.ScrollBox.ScrollBy(PreViewTop,PreViewLeft);
    RvRenderPreView.ScrollBox.Refresh;
end;

function ReportClass.XPointToInch(X: Integer): Single;
var
  dpiX:Integer;
begin
    dpiX   :=   GetDeviceCaps(GetDC(0),LOGPIXELSX);
    Result   :=   X/dpiX;
end;

function ReportClass.YPointToInch(Y: Integer): Single;
var
  dpiY:Integer;
begin
    dpiY   :=   GetDeviceCaps(GetDC(0),LOGPIXELSY);
    Result   :=   Y/dpiY;
end;

end.
 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品电影在线播放| 久久久久久久综合日本| 56国语精品自产拍在线观看| 欧美激情资源网| 国产mv日韩mv欧美| av影院午夜一区| 欧美专区日韩专区| 欧美一区二区三区小说| 欧美精品一区二区三区在线播放 | 亚洲国产综合视频在线观看| 麻豆精品一二三| 国产精品一区二区无线| 91亚洲大成网污www| 91麻豆精品久久久久蜜臀| 久久久久国色av免费看影院| 日韩成人免费看| 欧美日韩中文字幕精品| 裸体一区二区三区| 久久精品国产免费看久久精品| 国产成人综合视频| 欧美精品色综合| 国产精品嫩草99a| 琪琪一区二区三区| 91理论电影在线观看| 欧美成人激情免费网| 亚洲欧美激情插 | 一区二区久久久久久| 老司机免费视频一区二区| 色狠狠一区二区| 亚洲国产成人一区二区三区| 日韩影院在线观看| 91麻豆精品视频| 自拍视频在线观看一区二区| 性久久久久久久久久久久| 捆绑变态av一区二区三区| 色综合天天狠狠| 国产亚洲1区2区3区| 日韩二区三区在线观看| 色综合咪咪久久| 国产精品―色哟哟| 国产一区二区三区免费看| 91精品一区二区三区久久久久久| 亚洲乱码国产乱码精品精小说| 国产在线看一区| 欧美一区二区三区喷汁尤物| 亚洲黄一区二区三区| 国产suv一区二区三区88区| 欧美α欧美αv大片| 五月天亚洲精品| 91精彩视频在线观看| 亚洲视频在线一区二区| 成人开心网精品视频| 久久久一区二区三区| 久久精品噜噜噜成人av农村| 欧美日韩不卡在线| 亚洲国产色一区| 欧美亚洲动漫精品| 亚洲女人的天堂| 91丨porny丨首页| 国产精品欧美一级免费| 国产成人精品三级麻豆| 国产日韩精品久久久| 国产一区二区三区日韩| 欧美精品一区二区三区视频| 久久成人免费网站| 日韩天堂在线观看| 美女一区二区久久| 日韩精品一区二区三区三区免费 | 99国产精品久| 亚洲精品一区二区在线观看| 东方欧美亚洲色图在线| 久久成人18免费观看| 久久久另类综合| 欧美主播一区二区三区美女| 日本在线不卡一区| 中文字幕精品在线不卡| 欧美视频一区在线观看| 国产精品99久久久久久久vr| 国产精品久久777777| 日韩一区二区精品在线观看| 亚洲制服欧美中文字幕中文字幕| 成人性生交大片免费看在线播放| 欧美激情综合五月色丁香 | 精品久久久三级丝袜| 精品区一区二区| 东方aⅴ免费观看久久av| 午夜欧美在线一二页| 欧美激情一区二区三区不卡| 久久毛片高清国产| 日韩三级电影网址| 免费日本视频一区| 中文字幕不卡的av| 日韩欧美一级特黄在线播放| 欧美丝袜第三区| 国产69精品一区二区亚洲孕妇| 石原莉奈一区二区三区在线观看| 国产人久久人人人人爽| 日韩亚洲欧美成人一区| 欧美日韩国产a| 欧美影视一区在线| 99久久精品免费看| 国产ts人妖一区二区| 亚洲狠狠爱一区二区三区| 日韩亚洲欧美高清| 337p日本欧洲亚洲大胆精品| 亚洲黄色av一区| 欧美电影在哪看比较好| 亚洲欧美日韩在线| 制服视频三区第一页精品| 精品国产乱子伦一区| 日韩精品五月天| 国产无人区一区二区三区| 色噜噜狠狠一区二区三区果冻| 日韩国产欧美视频| 国产视频一区在线观看| 91福利在线导航| 国产99久久久国产精品潘金网站| 久久av资源网| 国产一区二区网址| www.亚洲精品| 欧美日本一区二区三区| 日韩一区二区在线播放| wwwwww.欧美系列| 日韩美女天天操| 国产欧美一二三区| 一区二区三区中文字幕| 国产自产v一区二区三区c| 亚洲男同性视频| 51午夜精品国产| 成人激情免费网站| 日韩不卡在线观看日韩不卡视频| 国产精品美女久久久久av爽李琼 | 亚洲欧美另类在线| 久久综合九色综合欧美就去吻| 91视视频在线直接观看在线看网页在线看| 奇米影视在线99精品| 亚洲人成网站精品片在线观看| 精品日韩在线观看| 欧美午夜一区二区三区免费大片| 国产精品一区二区果冻传媒| 午夜精品123| 亚洲欧洲综合另类在线| 久久久高清一区二区三区| 欧美乱妇15p| 色素色在线综合| 成人国产精品免费观看动漫| 久久99日本精品| 午夜视黄欧洲亚洲| 亚洲激情自拍偷拍| 国产精品乱码人人做人人爱| 精品日产卡一卡二卡麻豆| 欧美揉bbbbb揉bbbbb| 91女神在线视频| av高清不卡在线| 粉嫩一区二区三区性色av| 日韩欧美国产麻豆| 国产成人免费高清| 日韩手机在线导航| 亚洲国产精品视频| 高清不卡在线观看| 久久精品人人爽人人爽| 日本少妇一区二区| 欧美视频完全免费看| 亚洲日本在线看| 色一情一乱一乱一91av| 国产成人精品影视| 免费观看一级特黄欧美大片| 亚洲成人黄色小说| 亚洲综合成人在线| 亚洲欧美另类久久久精品| 亚洲欧洲性图库| 国产精品女上位| 国产精品免费久久久久| 国产拍揄自揄精品视频麻豆| 精品国产乱码久久久久久1区2区| 欧美一区二区三区的| 欧美一区二区久久| 日韩一级黄色片| 日韩丝袜情趣美女图片| 日韩欧美国产综合一区| 日韩免费一区二区三区在线播放| 日韩精品中文字幕一区| 日韩亚洲欧美中文三级| 日韩精品中文字幕一区二区三区 | 91精品免费观看| 色婷婷av久久久久久久| 99精品视频在线观看免费| 不卡的av网站| 一本到一区二区三区| 99riav久久精品riav| 99国产精品视频免费观看| 91网上在线视频| 在线一区二区三区做爰视频网站| 在线精品观看国产| 欧美婷婷六月丁香综合色| 欧美日本乱大交xxxxx| 91精品国产一区二区| 日韩美女在线视频 | 成人激情小说乱人伦| 99久久久久免费精品国产|