📄 iwdnprinter.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 + -