Marco Web Center |
Home: Code Repository: Mastering Delphi 5Project XFUSER
Project StructureXFUSER.DPRlibrary XFUser; uses ComServ, XFUser_TLB in 'XFUser_TLB.pas', XUserF in 'XUserF.pas' {XFormUser: TActiveForm} {XFormUser: CoClass}; {$E ocx} exports DllGetClassObject, DllCanUnloadNow, DllRegisterServer, DllUnregisterServer; {$R *.TLB} {$R *.RES} begin end. XFUSER_TLB.PASunit XFUser_TLB; // ************************************************************************ // // WARNING // // ------- // // The types declared in this file were generated from data read from a // // Type Library. If this type library is explicitly or indirectly (via // // another type library referring to this type library) re-imported, or the // // 'Refresh' command of the Type Library Editor activated while editing the // // Type Library, the contents of this file will be regenerated and all // // manual modifications will be lost. // // ************************************************************************ // // PASTLWTR : $Revision: 1.11.1.63 $ // File generated on 6/26/98 7:22:40 PM from Type Library described below. // ************************************************************************ // // Type Lib: C:\md4code\Part5\23\XFUSER\XFUser.tlb // IID\LCID: {DB9C3240-0D2A-11D2-B9F1-004845400FAA}\0 // Helpfile: // HelpString: XUser Library // Version: 1.0 // ************************************************************************ // interface uses Windows, ActiveX, Classes, Graphics, OleCtrls, StdVCL; // *********************************************************************// // GUIDS declared in the TypeLibrary. Following prefixes are used: // // Type Libraries : LIBID_xxxx // // CoClasses : CLASS_xxxx // // DISPInterfaces : DIID_xxxx // // Non-DISP interfaces: IID_xxxx // // *********************************************************************// const LIBID_XFUser: TGUID = '{DB9C3240-0D2A-11D2-B9F1-004845400FAA}'; IID_IXFormUser: TGUID = '{DB9C3241-0D2A-11D2-B9F1-004845400FAA}'; DIID_IXFormUserEvents: TGUID = '{DB9C3243-0D2A-11D2-B9F1-004845400FAA}'; CLASS_XFormUser: TGUID = '{DB9C3245-0D2A-11D2-B9F1-004845400FAA}'; // *********************************************************************// // Declaration of Enumerations defined in Type Library // // *********************************************************************// // TxActiveFormBorderStyle constants type TxActiveFormBorderStyle = TOleEnum; const afbNone = $00000000; afbSingle = $00000001; afbSunken = $00000002; afbRaised = $00000003; // TxPrintScale constants type TxPrintScale = TOleEnum; const poNone = $00000000; poProportional = $00000001; poPrintToFit = $00000002; // TxMouseButton constants type TxMouseButton = TOleEnum; const mbLeft = $00000000; mbRight = $00000001; mbMiddle = $00000002; // TxBiDiMode constants type TxBiDiMode = TOleEnum; const bdLeftToRight = $00000000; bdRightToLeft = $00000001; bdRightToLeftNoAlign = $00000002; bdRightToLeftReadingOnly = $00000003; type // *********************************************************************// // Forward declaration of interfaces defined in Type Library // // *********************************************************************// IXFormUser = interface; IXFormUserDisp = dispinterface; IXFormUserEvents = dispinterface; // *********************************************************************// // Declaration of CoClasses defined in Type Library // // (NOTE: Here we map each CoClass to its Default Interface) // // *********************************************************************// XFormUser = IXFormUser; // *********************************************************************// // Interface: IXFormUser // Flags: (4416) Dual OleAutomation Dispatchable // GUID: {DB9C3241-0D2A-11D2-B9F1-004845400FAA} // *********************************************************************// IXFormUser = interface(IDispatch) ['{DB9C3241-0D2A-11D2-B9F1-004845400FAA}'] function Get_Visible: WordBool; safecall; procedure Set_Visible(Value: WordBool); safecall; function Get_AutoScroll: WordBool; safecall; procedure Set_AutoScroll(Value: WordBool); safecall; function Get_AutoSize: WordBool; safecall; procedure Set_AutoSize(Value: WordBool); safecall; function Get_AxBorderStyle: TxActiveFormBorderStyle; safecall; procedure Set_AxBorderStyle(Value: TxActiveFormBorderStyle); safecall; function Get_Caption: WideString; safecall; procedure Set_Caption(const Value: WideString); safecall; function Get_Color: OLE_COLOR; safecall; procedure Set_Color(Value: OLE_COLOR); safecall; function Get_Font: IFontDisp; safecall; procedure _Set_Font(const Value: IFontDisp); safecall; procedure Set_Font(const Value: IFontDisp); safecall; function Get_KeyPreview: WordBool; safecall; procedure Set_KeyPreview(Value: WordBool); safecall; function Get_PixelsPerInch: Integer; safecall; procedure Set_PixelsPerInch(Value: Integer); safecall; function Get_PrintScale: TxPrintScale; safecall; procedure Set_PrintScale(Value: TxPrintScale); safecall; function Get_Scaled: WordBool; safecall; procedure Set_Scaled(Value: WordBool); safecall; function Get_Active: WordBool; safecall; function Get_DropTarget: WordBool; safecall; procedure Set_DropTarget(Value: WordBool); safecall; function Get_HelpFile: WideString; safecall; procedure Set_HelpFile(const Value: WideString); safecall; function Get_DoubleBuffered: WordBool; safecall; procedure Set_DoubleBuffered(Value: WordBool); safecall; function Get_Enabled: WordBool; safecall; procedure Set_Enabled(Value: WordBool); safecall; function Get_BiDiMode: TxBiDiMode; safecall; procedure Set_BiDiMode(Value: TxBiDiMode); safecall; function Get_Cursor: Smallint; safecall; procedure Set_Cursor(Value: Smallint); safecall; property Visible: WordBool read Get_Visible write Set_Visible; property AutoScroll: WordBool read Get_AutoScroll write Set_AutoScroll; property AutoSize: WordBool read Get_AutoSize write Set_AutoSize; property AxBorderStyle: TxActiveFormBorderStyle read Get_AxBorderStyle write Set_AxBorderStyle; property Caption: WideString read Get_Caption write Set_Caption; property Color: OLE_COLOR read Get_Color write Set_Color; property Font: IFontDisp read Get_Font write _Set_Font; property KeyPreview: WordBool read Get_KeyPreview write Set_KeyPreview; property PixelsPerInch: Integer read Get_PixelsPerInch write Set_PixelsPerInch; property PrintScale: TxPrintScale read Get_PrintScale write Set_PrintScale; property Scaled: WordBool read Get_Scaled write Set_Scaled; property Active: WordBool read Get_Active; property DropTarget: WordBool read Get_DropTarget write Set_DropTarget; property HelpFile: WideString read Get_HelpFile write Set_HelpFile; property DoubleBuffered: WordBool read Get_DoubleBuffered write Set_DoubleBuffered; property Enabled: WordBool read Get_Enabled write Set_Enabled; property BiDiMode: TxBiDiMode read Get_BiDiMode write Set_BiDiMode; property Cursor: Smallint read Get_Cursor write Set_Cursor; end; // *********************************************************************// // DispIntf: IXFormUserDisp // Flags: (4416) Dual OleAutomation Dispatchable // GUID: {DB9C3241-0D2A-11D2-B9F1-004845400FAA} // *********************************************************************// IXFormUserDisp = dispinterface ['{DB9C3241-0D2A-11D2-B9F1-004845400FAA}'] property Visible: WordBool dispid 1; property AutoScroll: WordBool dispid 2; property AutoSize: WordBool dispid 3; property AxBorderStyle: TxActiveFormBorderStyle dispid 4; property Caption: WideString dispid -518; property Color: OLE_COLOR dispid -501; property Font: IFontDisp dispid -512; property KeyPreview: WordBool dispid 5; property PixelsPerInch: Integer dispid 6; property PrintScale: TxPrintScale dispid 7; property Scaled: WordBool dispid 8; property Active: WordBool readonly dispid 9; property DropTarget: WordBool dispid 10; property HelpFile: WideString dispid 11; property DoubleBuffered: WordBool dispid 12; property Enabled: WordBool dispid -514; property BiDiMode: TxBiDiMode dispid 13; property Cursor: Smallint dispid 14; end; // *********************************************************************// // DispIntf: IXFormUserEvents // Flags: (0) // GUID: {DB9C3243-0D2A-11D2-B9F1-004845400FAA} // *********************************************************************// IXFormUserEvents = dispinterface ['{DB9C3243-0D2A-11D2-B9F1-004845400FAA}'] procedure OnActivate; dispid 1; procedure OnClick; dispid 2; procedure OnCreate; dispid 3; procedure OnDblClick; dispid 4; procedure OnDestroy; dispid 5; procedure OnDeactivate; dispid 6; procedure OnKeyPress(var Key: Smallint); dispid 10; procedure OnPaint; dispid 15; end; // *********************************************************************// // OLE Control Proxy class declaration // Control Name : TXFormUser // Help String : XFormUser Control // Default Interface: IXFormUser // Def. Intf. DISP? : No // Event Interface: IXFormUserEvents // TypeFlags : (34) CanCreate Control // *********************************************************************// TXFormUserOnKeyPress = procedure(Sender: TObject; var Key: Smallint) of object; TXFormUser = class(TOleControl) private FOnActivate: TNotifyEvent; FOnClick: TNotifyEvent; FOnCreate: TNotifyEvent; FOnDblClick: TNotifyEvent; FOnDestroy: TNotifyEvent; FOnDeactivate: TNotifyEvent; FOnKeyPress: TXFormUserOnKeyPress; FOnPaint: TNotifyEvent; FIntf: IXFormUser; function GetControlInterface: IXFormUser; protected procedure CreateControl; procedure InitControlData; override; public property ControlInterface: IXFormUser read GetControlInterface; property Visible: WordBool index 1 read GetWordBoolProp write SetWordBoolProp; property Active: WordBool index 9 read GetWordBoolProp; property DropTarget: WordBool index 10 read GetWordBoolProp write SetWordBoolProp; property HelpFile: WideString index 11 read GetWideStringProp write SetWideStringProp; property DoubleBuffered: WordBool index 12 read GetWordBoolProp write SetWordBoolProp; property Enabled: WordBool index -514 read GetWordBoolProp write SetWordBoolProp; property BiDiMode: TOleEnum index 13 read GetTOleEnumProp write SetTOleEnumProp; published property AutoScroll: WordBool index 2 read GetWordBoolProp write SetWordBoolProp stored False; property AutoSize: WordBool index 3 read GetWordBoolProp write SetWordBoolProp stored False; property AxBorderStyle: TOleEnum index 4 read GetTOleEnumProp write SetTOleEnumProp stored False; property Caption: WideString index -518 read GetWideStringProp write SetWideStringProp stored False; property Color: TColor index -501 read GetTColorProp write SetTColorProp stored False; property Font: TFont index -512 read GetTFontProp write SetTFontProp stored False; property KeyPreview: WordBool index 5 read GetWordBoolProp write SetWordBoolProp stored False; property PixelsPerInch: Integer index 6 read GetIntegerProp write SetIntegerProp stored False; property PrintScale: TOleEnum index 7 read GetTOleEnumProp write SetTOleEnumProp stored False; property Scaled: WordBool index 8 read GetWordBoolProp write SetWordBoolProp stored False; property Cursor: Smallint index 14 read GetSmallintProp write SetSmallintProp stored False; property OnActivate: TNotifyEvent read FOnActivate write FOnActivate; property OnClick: TNotifyEvent read FOnClick write FOnClick; property OnCreate: TNotifyEvent read FOnCreate write FOnCreate; property OnDblClick: TNotifyEvent read FOnDblClick write FOnDblClick; property OnDestroy: TNotifyEvent read FOnDestroy write FOnDestroy; property OnDeactivate: TNotifyEvent read FOnDeactivate write FOnDeactivate; property OnKeyPress: TXFormUserOnKeyPress read FOnKeyPress write FOnKeyPress; property OnPaint: TNotifyEvent read FOnPaint write FOnPaint; end; procedure Register; implementation uses ComObj; procedure TXFormUser.InitControlData; const CEventDispIDs: array [0..7] of DWORD = ( $00000001, $00000002, $00000003, $00000004, $00000005, $00000006, $0000000A, $0000000F); CTFontIDs: array [0..0] of DWORD = ( $FFFFFE00); CControlData: TControlData = ( ClassID: '{DB9C3245-0D2A-11D2-B9F1-004845400FAA}'; EventIID: '{DB9C3243-0D2A-11D2-B9F1-004845400FAA}'; EventCount: 8; EventDispIDs: @CEventDispIDs; LicenseKey: nil; Flags: $0000001D; Version: 300; FontCount: 1; FontIDs: @CTFontIDs); begin ControlData := @CControlData; end; procedure TXFormUser.CreateControl; procedure DoCreate; begin FIntf := IUnknown(OleObject) as IXFormUser; end; begin if FIntf = nil then DoCreate; end; function TXFormUser.GetControlInterface: IXFormUser; begin CreateControl; Result := FIntf; end; procedure Register; begin RegisterComponents('ActiveX',[TXFormUser]); end; end. XUSERF.PASunit XUserF; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ActiveX, AxCtrls, XFUser_TLB, StdCtrls; type TXFormUser = class(TActiveForm, IXFormUser) Button1: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); private { Private declarations } FEvents: IXFormUserEvents; 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 DefinePropertyPages(DefinePropertyPage: TDefinePropertyPage); override; procedure EventSinkChanged(const EventSink: IUnknown); override; function Get_Active: WordBool; safecall; function Get_AutoScroll: WordBool; safecall; function Get_AutoSize: WordBool; safecall; function Get_AxBorderStyle: TxActiveFormBorderStyle; safecall; function Get_BiDiMode: TxBiDiMode; safecall; function Get_Caption: WideString; safecall; function Get_Color: OLE_COLOR; safecall; function Get_Cursor: Smallint; 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_Visible: WordBool; safecall; procedure _Set_Font(const Value: IFontDisp); safecall; procedure Set_AutoScroll(Value: WordBool); safecall; procedure Set_AutoSize(Value: WordBool); safecall; procedure Set_AxBorderStyle(Value: TxActiveFormBorderStyle); safecall; procedure Set_BiDiMode(Value: TxBiDiMode); safecall; procedure Set_Caption(const Value: WideString); safecall; procedure Set_Color(Value: OLE_COLOR); safecall; procedure Set_Cursor(Value: Smallint); 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_Visible(Value: WordBool); safecall; public { Public declarations } procedure Initialize; override; end; implementation uses ComObj, ComServ; {$R *.DFM} { TXFormUser } procedure TXFormUser.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_XFormUserPage); } end; procedure TXFormUser.EventSinkChanged(const EventSink: IUnknown); begin FEvents := EventSink as IXFormUserEvents; end; procedure TXFormUser.Initialize; begin inherited Initialize; OnActivate := ActivateEvent; OnClick := ClickEvent; OnCreate := CreateEvent; OnDblClick := DblClickEvent; OnDeactivate := DeactivateEvent; OnDestroy := DestroyEvent; OnKeyPress := KeyPressEvent; OnPaint := PaintEvent; end; function TXFormUser.Get_Active: WordBool; begin Result := Active; end; function TXFormUser.Get_AutoScroll: WordBool; begin Result := AutoScroll; end; function TXFormUser.Get_AutoSize: WordBool; begin Result := AutoSize; end; function TXFormUser.Get_AxBorderStyle: TxActiveFormBorderStyle; begin Result := Ord(AxBorderStyle); end; function TXFormUser.Get_BiDiMode: TxBiDiMode; begin Result := Ord(BiDiMode); end; function TXFormUser.Get_Caption: WideString; begin Result := WideString(Caption); end; function TXFormUser.Get_Color: OLE_COLOR; begin Result := OLE_COLOR(Color); end; function TXFormUser.Get_Cursor: Smallint; begin Result := Smallint(Cursor); end; function TXFormUser.Get_DoubleBuffered: WordBool; begin Result := DoubleBuffered; end; function TXFormUser.Get_DropTarget: WordBool; begin Result := DropTarget; end; function TXFormUser.Get_Enabled: WordBool; begin Result := Enabled; end; function TXFormUser.Get_Font: IFontDisp; begin GetOleFont(Font, Result); end; function TXFormUser.Get_HelpFile: WideString; begin Result := WideString(HelpFile); end; function TXFormUser.Get_KeyPreview: WordBool; begin Result := KeyPreview; end; function TXFormUser.Get_PixelsPerInch: Integer; begin Result := PixelsPerInch; end; function TXFormUser.Get_PrintScale: TxPrintScale; begin Result := Ord(PrintScale); end; function TXFormUser.Get_Scaled: WordBool; begin Result := Scaled; end; function TXFormUser.Get_Visible: WordBool; begin Result := Visible; end; procedure TXFormUser._Set_Font(const Value: IFontDisp); begin SetOleFont(Font, Value); end; procedure TXFormUser.Set_AutoScroll(Value: WordBool); begin AutoScroll := Value; end; procedure TXFormUser.Set_AutoSize(Value: WordBool); begin AutoSize := Value; end; procedure TXFormUser.Set_AxBorderStyle(Value: TxActiveFormBorderStyle); begin AxBorderStyle := TActiveFormBorderStyle(Value); end; procedure TXFormUser.Set_BiDiMode(Value: TxBiDiMode); begin BiDiMode := TBiDiMode(Value); end; procedure TXFormUser.Set_Caption(const Value: WideString); begin Caption := TCaption(Value); end; procedure TXFormUser.Set_Color(Value: OLE_COLOR); begin Color := TColor(Value); end; procedure TXFormUser.Set_Cursor(Value: Smallint); begin Cursor := TCursor(Value); end; procedure TXFormUser.Set_DoubleBuffered(Value: WordBool); begin DoubleBuffered := Value; end; procedure TXFormUser.Set_DropTarget(Value: WordBool); begin DropTarget := Value; end; procedure TXFormUser.Set_Enabled(Value: WordBool); begin Enabled := Value; end; procedure TXFormUser.Set_Font(const Value: IFontDisp); begin SetOleFont(Font, Value); end; procedure TXFormUser.Set_HelpFile(const Value: WideString); begin HelpFile := String(Value); end; procedure TXFormUser.Set_KeyPreview(Value: WordBool); begin KeyPreview := Value; end; procedure TXFormUser.Set_PixelsPerInch(Value: Integer); begin PixelsPerInch := Value; end; procedure TXFormUser.Set_PrintScale(Value: TxPrintScale); begin PrintScale := TPrintScale(Value); end; procedure TXFormUser.Set_Scaled(Value: WordBool); begin Scaled := Value; end; procedure TXFormUser.Set_Visible(Value: WordBool); begin Visible := Value; end; procedure TXFormUser.ActivateEvent(Sender: TObject); begin if FEvents <> nil then FEvents.OnActivate; end; procedure TXFormUser.ClickEvent(Sender: TObject); begin if FEvents <> nil then FEvents.OnClick; end; procedure TXFormUser.CreateEvent(Sender: TObject); begin if FEvents <> nil then FEvents.OnCreate; end; procedure TXFormUser.DblClickEvent(Sender: TObject); begin if FEvents <> nil then FEvents.OnDblClick; end; procedure TXFormUser.DeactivateEvent(Sender: TObject); begin if FEvents <> nil then FEvents.OnDeactivate; end; procedure TXFormUser.DestroyEvent(Sender: TObject); begin if FEvents <> nil then FEvents.OnDestroy; end; procedure TXFormUser.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 TXFormUser.PaintEvent(Sender: TObject); begin if FEvents <> nil then FEvents.OnPaint; end; procedure TXFormUser.Button1Click(Sender: TObject); var UserName: string; Size: Cardinal; begin Size := 128; SetLength (UserName, Size); GetUserName (PChar(UserName), Size); Label1.Caption := UserName; end; initialization TActiveFormFactory.Create( ComServer, TActiveFormControl, TXFormUser, Class_XFormUser, 1, '', OLEMISC_SIMPLEFRAME or OLEMISC_ACTSLIKELABEL, tmApartment); end. XUSERF.DFMobject XFormUser: TXFormUser Left = 192 Top = 107 Width = 331 Height = 107 Caption = 'XFormUser' Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] OldCreateOrder = False PixelsPerInch = 96 TextHeight = 13 object Label1: TLabel Left = 120 Top = 32 Width = 153 Height = 13 Caption = 'Label1' end object Button1: TButton Left = 32 Top = 28 Width = 75 Height = 25 Caption = 'Button1' TabOrder = 0 OnClick = Button1Click end end
|
||
© Copyright Marco Cantù, 1995-2020, All rights reserved |