⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iwdnprinter.pas

📁 用delphi+intraweb写的简单报表系统(activeform使用技术)
💻 PAS
字号:
UNIT IWDnPrinter;

{$WARN SYMBOL_PLATFORM OFF}

INTERFACE

USES
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ActiveX, AxCtrls, ActiveIWDnPrinter_TLB, StdVcl, OleCtrls, ADODB, ADOInt,
  DATANEWPRINTERLib_TLB;

TYPE
  TActiveFormX=CLASS(TActiveForm, IActiveFormX)
    DNPrinter:TDNPrinter;
    procedure ActiveFormDestroy(Sender: TObject);
  PRIVATE
    { Private declarations }
    FEvents:IActiveFormXEvents;
    PROCEDURE ActivateEvent(Sender:TObject);
    PROCEDURE ClickEvent(Sender:TObject);
    PROCEDURE CreateEvent(Sender:TObject);
    PROCEDURE DblClickEvent(Sender:TObject);
    PROCEDURE DeactivateEvent(Sender:TObject);
    PROCEDURE DestroyEvent(Sender:TObject);
    PROCEDURE KeyPressEvent(Sender:TObject; VAR Key:Char);
    PROCEDURE PaintEvent(Sender:TObject);
  PROTECTED
    { Protected declarations }
    PROCEDURE DNPrinterClose(Sender:TObject);
    PROCEDURE DefinePropertyPages(DefinePropertyPage:TDefinePropertyPage); OVERRIDE;
    PROCEDURE EventSinkChanged(CONST EventSink:IUnknown); OVERRIDE;
    FUNCTION Get_Active:WordBool; SAFECALL;
    FUNCTION Get_AlignDisabled:WordBool; SAFECALL;
    FUNCTION Get_AutoScroll:WordBool; SAFECALL;
    FUNCTION Get_AutoSize:WordBool; SAFECALL;
    FUNCTION Get_AxBorderStyle:TxActiveFormBorderStyle; SAFECALL;
    FUNCTION Get_Caption:WideString; SAFECALL;
    FUNCTION Get_Color:OLE_COLOR; SAFECALL;
    FUNCTION Get_DoubleBuffered:WordBool; SAFECALL;
    FUNCTION Get_DropTarget:WordBool; SAFECALL;
    FUNCTION Get_Enabled:WordBool; SAFECALL;
    FUNCTION Get_Font:IFontDisp; SAFECALL;
    FUNCTION Get_HelpFile:WideString; SAFECALL;
    FUNCTION Get_KeyPreview:WordBool; SAFECALL;
    FUNCTION Get_PixelsPerInch:Integer; SAFECALL;
    FUNCTION Get_PrintScale:TxPrintScale; SAFECALL;
    FUNCTION Get_Scaled:WordBool; SAFECALL;
    FUNCTION Get_ScreenSnap:WordBool; SAFECALL;
    FUNCTION Get_SnapBuffer:Integer; SAFECALL;
    FUNCTION Get_Visible:WordBool; SAFECALL;
    FUNCTION Get_VisibleDockClientCount:Integer; SAFECALL;
    PROCEDURE _Set_Font(VAR Value:IFontDisp); SAFECALL;
    PROCEDURE Set_AutoScroll(Value:WordBool); SAFECALL;
    PROCEDURE Set_AutoSize(Value:WordBool); SAFECALL;
    PROCEDURE Set_AxBorderStyle(Value:TxActiveFormBorderStyle); SAFECALL;
    PROCEDURE Set_Caption(CONST Value:WideString); SAFECALL;
    PROCEDURE Set_Color(Value:OLE_COLOR); SAFECALL;
    PROCEDURE Set_DoubleBuffered(Value:WordBool); SAFECALL;
    PROCEDURE Set_DropTarget(Value:WordBool); SAFECALL;
    PROCEDURE Set_Enabled(Value:WordBool); SAFECALL;
    PROCEDURE Set_Font(CONST Value:IFontDisp); SAFECALL;
    PROCEDURE Set_HelpFile(CONST Value:WideString); SAFECALL;
    PROCEDURE Set_KeyPreview(Value:WordBool); SAFECALL;
    PROCEDURE Set_PixelsPerInch(Value:Integer); SAFECALL;
    PROCEDURE Set_PrintScale(Value:TxPrintScale); SAFECALL;
    PROCEDURE Set_Scaled(Value:WordBool); SAFECALL;
    PROCEDURE Set_ScreenSnap(Value:WordBool); SAFECALL;
    PROCEDURE Set_SnapBuffer(Value:Integer); SAFECALL;
    PROCEDURE Set_Visible(Value:WordBool); SAFECALL;
    procedure GetDNPrinter(vFile: PChar; var vData: OleVariant); safecall;
    function Get_ViewRep(const vSQL, vRepFile: WideString): WideString;
      safecall;
    procedure Set_ViewRep(const vSQL, vRepFile, vConnStr: WideString);  function IActiveFormX.Get_ViewRep = IActiveFormX_Get_ViewRep;
  
    function IActiveFormX_Get_ViewRep(const vSQL,
      vRepFile: WideString): HResult; safecall;
  PUBLIC
    { Public declarations }
    PROCEDURE Initialize; OVERRIDE;
  END;

IMPLEMENTATION

USES ComObj, ComServ, HapReportFuncs;

{$R *.DFM}

{ TActiveFormX }

PROCEDURE TActiveFormX.DefinePropertyPages(DefinePropertyPage:TDefinePropertyPage);
BEGIN
  { Define property pages here.  Property pages are defined by calling
    DefinePropertyPage with the class id of the page.  For example,
      DefinePropertyPage(Class_ActiveFormXPage); }
END;

PROCEDURE TActiveFormX.EventSinkChanged(CONST EventSink:IUnknown);
BEGIN
  FEvents:=EventSink AS IActiveFormXEvents;
  INHERITED EventSinkChanged(EventSink);
END;

PROCEDURE TActiveFormX.Initialize;
BEGIN
  INHERITED Initialize;
  OnActivate:=ActivateEvent;
  OnClick:=ClickEvent;
  OnCreate:=CreateEvent;
  OnDblClick:=DblClickEvent;
  OnDeactivate:=DeactivateEvent;
  OnDestroy:=DestroyEvent;
  OnKeyPress:=KeyPressEvent;
  OnPaint:=PaintEvent;
END;

FUNCTION TActiveFormX.Get_Active:WordBool;
BEGIN
  Result:=Active;
END;

FUNCTION TActiveFormX.Get_AlignDisabled:WordBool;
BEGIN
  Result:=AlignDisabled;
END;

FUNCTION TActiveFormX.Get_AutoScroll:WordBool;
BEGIN
  Result:=AutoScroll;
END;

FUNCTION TActiveFormX.Get_AutoSize:WordBool;
BEGIN
  Result:=AutoSize;
END;

FUNCTION TActiveFormX.Get_AxBorderStyle:TxActiveFormBorderStyle;
BEGIN
  Result:=Ord(AxBorderStyle);
END;

FUNCTION TActiveFormX.Get_Caption:WideString;
BEGIN
  Result:=WideString(Caption);
END;

FUNCTION TActiveFormX.Get_Color:OLE_COLOR;
BEGIN
  Result:=OLE_COLOR(Color);
END;

FUNCTION TActiveFormX.Get_DoubleBuffered:WordBool;
BEGIN
  Result:=DoubleBuffered;
END;

FUNCTION TActiveFormX.Get_DropTarget:WordBool;
BEGIN
  Result:=DropTarget;
END;

FUNCTION TActiveFormX.Get_Enabled:WordBool;
BEGIN
  Result:=Enabled;
END;

FUNCTION TActiveFormX.Get_Font:IFontDisp;
BEGIN
  GetOleFont(Font, Result);
END;

FUNCTION TActiveFormX.Get_HelpFile:WideString;
BEGIN
  Result:=WideString(HelpFile);
END;

FUNCTION TActiveFormX.Get_KeyPreview:WordBool;
BEGIN
  Result:=KeyPreview;
END;

FUNCTION TActiveFormX.Get_PixelsPerInch:Integer;
BEGIN
  Result:=PixelsPerInch;
END;

FUNCTION TActiveFormX.Get_PrintScale:TxPrintScale;
BEGIN
  Result:=Ord(PrintScale);
END;

FUNCTION TActiveFormX.Get_Scaled:WordBool;
BEGIN
  Result:=Scaled;
END;

FUNCTION TActiveFormX.Get_ScreenSnap:WordBool;
BEGIN
  Result:=ScreenSnap;
END;

FUNCTION TActiveFormX.Get_SnapBuffer:Integer;
BEGIN
  Result:=SnapBuffer;
END;

FUNCTION TActiveFormX.Get_Visible:WordBool;
BEGIN
  Result:=Visible;
END;

FUNCTION TActiveFormX.Get_VisibleDockClientCount:Integer;
BEGIN
  Result:=VisibleDockClientCount;
END;

PROCEDURE TActiveFormX._Set_Font(VAR Value:IFontDisp);
BEGIN
  SetOleFont(Font, Value);
END;

PROCEDURE TActiveFormX.ActivateEvent(Sender:TObject);
BEGIN
  IF FEvents<>NIL THEN FEvents.OnActivate;
END;

PROCEDURE TActiveFormX.ClickEvent(Sender:TObject);
BEGIN
  IF FEvents<>NIL THEN FEvents.OnClick;
END;

PROCEDURE TActiveFormX.CreateEvent(Sender:TObject);
BEGIN
  IF FEvents<>NIL THEN FEvents.OnCreate;
END;

PROCEDURE TActiveFormX.DblClickEvent(Sender:TObject);
BEGIN
  IF FEvents<>NIL THEN FEvents.OnDblClick;
END;

PROCEDURE TActiveFormX.DeactivateEvent(Sender:TObject);
BEGIN
  IF FEvents<>NIL THEN FEvents.OnDeactivate;
END;

PROCEDURE TActiveFormX.DestroyEvent(Sender:TObject);
BEGIN
  IF FEvents<>NIL THEN FEvents.OnDestroy;
END;

PROCEDURE TActiveFormX.KeyPressEvent(Sender:TObject; VAR Key:Char);
VAR
  TempKey:Smallint;
BEGIN
  TempKey:=Smallint(Key);
  IF FEvents<>NIL THEN FEvents.OnKeyPress(TempKey);
  Key:=Char(TempKey);
END;

PROCEDURE TActiveFormX.PaintEvent(Sender:TObject);
BEGIN
  IF FEvents<>NIL THEN FEvents.OnPaint;
END;

PROCEDURE TActiveFormX.Set_AutoScroll(Value:WordBool);
BEGIN
  AutoScroll:=Value;
END;

PROCEDURE TActiveFormX.Set_AutoSize(Value:WordBool);
BEGIN
  AutoSize:=Value;
END;

PROCEDURE TActiveFormX.Set_AxBorderStyle(Value:TxActiveFormBorderStyle);
BEGIN
  AxBorderStyle:=TActiveFormBorderStyle(Value);
END;

PROCEDURE TActiveFormX.Set_Caption(CONST Value:WideString);
BEGIN
  Caption:=TCaption(Value);
END;

PROCEDURE TActiveFormX.Set_Color(Value:OLE_COLOR);
BEGIN
  Color:=TColor(Value);
END;

PROCEDURE TActiveFormX.Set_DoubleBuffered(Value:WordBool);
BEGIN
  DoubleBuffered:=Value;
END;

PROCEDURE TActiveFormX.Set_DropTarget(Value:WordBool);
BEGIN
  DropTarget:=Value;
END;

PROCEDURE TActiveFormX.Set_Enabled(Value:WordBool);
BEGIN
  Enabled:=Value;
END;

PROCEDURE TActiveFormX.Set_Font(CONST Value:IFontDisp);
BEGIN
  SetOleFont(Font, Value);
END;

PROCEDURE TActiveFormX.Set_HelpFile(CONST Value:WideString);
BEGIN
  HelpFile:=STRING(Value);
END;

PROCEDURE TActiveFormX.Set_KeyPreview(Value:WordBool);
BEGIN
  KeyPreview:=Value;
END;

PROCEDURE TActiveFormX.Set_PixelsPerInch(Value:Integer);
BEGIN
  PixelsPerInch:=Value;
END;

PROCEDURE TActiveFormX.Set_PrintScale(Value:TxPrintScale);
BEGIN
  PrintScale:=TPrintScale(Value);
END;

PROCEDURE TActiveFormX.Set_Scaled(Value:WordBool);
BEGIN
  Scaled:=Value;
END;

PROCEDURE TActiveFormX.Set_ScreenSnap(Value:WordBool);
BEGIN
  ScreenSnap:=Value;
END;

PROCEDURE TActiveFormX.Set_SnapBuffer(Value:Integer);
BEGIN
  SnapBuffer:=Value;
END;

PROCEDURE TActiveFormX.Set_Visible(Value:WordBool);
BEGIN
  Visible:=Value;
END;

PROCEDURE TActiveFormX.DNPrinterClose(Sender:TObject);
BEGIN
  Self.Close;
END;

procedure TActiveFormX.GetDNPrinter(vFile: PChar; var vData: OleVariant);
begin

end;

function TActiveFormX.Get_ViewRep(const vSQL,
  vRepFile, vConnStr: WideString): WideString;
BEGIN

end;

procedure TActiveFormX.Set_ViewRep(const vSQL, vRepFile,
  vConnStr: WideString);
VAR
  aqTmp: TADOQuery;
begin
  aqTmp:=tadoquery.Create(nil);
  aqTmp.ConnectionString:=vConnStr;

  try
    OpenQuery(aqTmp, vSQL);
    if aqTmp.RecordCount>0 then
      ViewReportByRecordset(DNPrinter, vRepFile, aqTmp.Recordset);
  finally
    aqTmp.Free;
  end;
end;

procedure TActiveFormX.ActiveFormDestroy(Sender: TObject);
begin
  Self.Free;
end;

function TActiveFormX.IActiveFormX_Get_ViewRep(const vSQL,
  vRepFile: WideString): HResult;
begin

end;

function TActiveFormX.IActiveFormX_Get_ViewRep(const vSQL,
  vRepFile: WideString): HResult;
begin

end;

INITIALIZATION
  TActiveFormFactory.Create(
    ComServer,
    TActiveFormControl,
    TActiveFormX,
    Class_ActiveFormX,
    1,
    '',
    OLEMISC_SIMPLEFRAME OR OLEMISC_ACTSLIKELABEL,
    tmApartment);
END.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -