tlb文件定义如下:TImage = class(TDBOleControl)
private
FOnBeforeDragOver: TImageBeforeDragOver;
FOnBeforeDropOrPaste: TImageBeforeDropOrPaste;
FOnError: TImageError;
FIntf: IImage;
function GetControlInterface: IImage;
protected
procedure CreateControl;
procedure InitControlData; override;
function Get_Object_: IDispatch;
function Get_Parent: IDispatch;
function Get_BoundValue: OleVariant;
public
procedure SetFocus;
function _GethWnd: SYSINT;
function _GetID: Integer;
procedure _Move(Left: Integer; Top: Integer; Width: Integer; Height: Integer);
procedure _ZOrder(zPosition: fmZOrder);
property ControlInterface: IImage read GetControlInterface;
property DefaultInterface: IImage read GetControlInterface;
property InSelection: WordBool index -2147385341 read GetWordBoolProp write SetWordBoolProp;
property LayoutEffect: TOleEnum index -2147385340 read GetTOleEnumProp;
property OldHeight: Single index -2147385339 read GetSingleProp;
property OldLeft: Single index -2147385338 read GetSingleProp;
property OldTop: Single index -2147385337 read GetSingleProp;
property OldWidth: Single index -2147385336 read GetSingleProp;
property Object_: IDispatch index -2147385335 read GetIDispatchProp;
property Parent: IDispatch index -2147418104 read GetIDispatchProp;
published
property Anchors;
property Cancel: WordBool index -2147418056 read GetWordBoolProp write SetWordBoolProp stored False;
property ControlSource: WideString index -2147385343 read GetWideStringProp write SetWideStringProp stored False;
property ControlTipText: WideString index -2147418043 read GetWideStringProp write SetWideStringProp stored False;
property Default: WordBool index -2147418057 read GetWordBoolProp write SetWordBoolProp stored False;
property HelpContextID: Integer index -2147418062 read GetIntegerProp write SetIntegerProp stored False;
property Name: WideString index -2147418112 read GetWideStringProp write SetWideStringProp stored False;
property RowSource: WideString index -2147385330 read GetWideStringProp write SetWideStringProp stored False;
property RowSourceType: Smallint index -2147385329 read GetSmallintProp write SetSmallintProp stored False;
property TabIndex: Smallint index -2147418097 read GetSmallintProp write SetSmallintProp stored False;
property TabStop: WordBool index -2147418098 read GetWordBoolProp write SetWordBoolProp stored False;
property Tag: WideString index -2147418101 read GetWideStringProp write SetWideStringProp stored False;
property Visible: WordBool index -2147418105 read GetWordBoolProp write SetWordBoolProp stored False;
property Enabled: WordBool index -514 read GetWordBoolProp write SetWordBoolProp stored False;
property MousePointer: TOleEnum index -521 read GetTOleEnumProp write SetTOleEnumProp stored False;
property AutoSize: WordBool index -500 read GetWordBoolProp write SetWordBoolProp stored False;
property BackColor: TColor index -501 read GetTColorProp write SetTColorProp stored False;
property BackStyle: TOleEnum index -502 read GetTOleEnumProp write SetTOleEnumProp stored False;
property BorderColor: TColor index -503 read GetTColorProp write SetTColorProp stored False;
property BorderStyle: TOleEnum index -504 read GetTOleEnumProp write SetTOleEnumProp stored False;
property Picture: TPicture index -523 read GetTPictureProp write SetTPictureProp stored False;
property MouseIcon: TPicture index -522 read GetTPictureProp write SetTPictureProp stored False;
property PictureSizeMode: TOleEnum index 27 read GetTOleEnumProp write SetTOleEnumProp stored False;
property PictureAlignment: TOleEnum index 26 read GetTOleEnumProp write SetTOleEnumProp stored False;
property PictureTiling: WordBool index 28 read GetWordBoolProp write SetWordBoolProp stored False;
property SpecialEffect: TOleEnum index 12 read GetTOleEnumProp write SetTOleEnumProp stored False;
property OnBeforeDragOver: TImageBeforeDragOver read FOnBeforeDragOver write FOnBeforeDragOver;
property OnBeforeDropOrPaste: TImageBeforeDropOrPaste read FOnBeforeDropOrPaste write FOnBeforeDropOrPaste;
property OnError: TImageError read FOnError write FOnError;
end;
我想给image 绑定事件,这个怎么实现,我看有说invoke的,有的好像IConnectionPoint,这个要怎么实现,自己要重新写实现类吗,我目前有个TEventSink 的类
private
FOnBeforeDragOver: TImageBeforeDragOver;
FOnBeforeDropOrPaste: TImageBeforeDropOrPaste;
FOnError: TImageError;
FIntf: IImage;
function GetControlInterface: IImage;
protected
procedure CreateControl;
procedure InitControlData; override;
function Get_Object_: IDispatch;
function Get_Parent: IDispatch;
function Get_BoundValue: OleVariant;
public
procedure SetFocus;
function _GethWnd: SYSINT;
function _GetID: Integer;
procedure _Move(Left: Integer; Top: Integer; Width: Integer; Height: Integer);
procedure _ZOrder(zPosition: fmZOrder);
property ControlInterface: IImage read GetControlInterface;
property DefaultInterface: IImage read GetControlInterface;
property InSelection: WordBool index -2147385341 read GetWordBoolProp write SetWordBoolProp;
property LayoutEffect: TOleEnum index -2147385340 read GetTOleEnumProp;
property OldHeight: Single index -2147385339 read GetSingleProp;
property OldLeft: Single index -2147385338 read GetSingleProp;
property OldTop: Single index -2147385337 read GetSingleProp;
property OldWidth: Single index -2147385336 read GetSingleProp;
property Object_: IDispatch index -2147385335 read GetIDispatchProp;
property Parent: IDispatch index -2147418104 read GetIDispatchProp;
published
property Anchors;
property Cancel: WordBool index -2147418056 read GetWordBoolProp write SetWordBoolProp stored False;
property ControlSource: WideString index -2147385343 read GetWideStringProp write SetWideStringProp stored False;
property ControlTipText: WideString index -2147418043 read GetWideStringProp write SetWideStringProp stored False;
property Default: WordBool index -2147418057 read GetWordBoolProp write SetWordBoolProp stored False;
property HelpContextID: Integer index -2147418062 read GetIntegerProp write SetIntegerProp stored False;
property Name: WideString index -2147418112 read GetWideStringProp write SetWideStringProp stored False;
property RowSource: WideString index -2147385330 read GetWideStringProp write SetWideStringProp stored False;
property RowSourceType: Smallint index -2147385329 read GetSmallintProp write SetSmallintProp stored False;
property TabIndex: Smallint index -2147418097 read GetSmallintProp write SetSmallintProp stored False;
property TabStop: WordBool index -2147418098 read GetWordBoolProp write SetWordBoolProp stored False;
property Tag: WideString index -2147418101 read GetWideStringProp write SetWideStringProp stored False;
property Visible: WordBool index -2147418105 read GetWordBoolProp write SetWordBoolProp stored False;
property Enabled: WordBool index -514 read GetWordBoolProp write SetWordBoolProp stored False;
property MousePointer: TOleEnum index -521 read GetTOleEnumProp write SetTOleEnumProp stored False;
property AutoSize: WordBool index -500 read GetWordBoolProp write SetWordBoolProp stored False;
property BackColor: TColor index -501 read GetTColorProp write SetTColorProp stored False;
property BackStyle: TOleEnum index -502 read GetTOleEnumProp write SetTOleEnumProp stored False;
property BorderColor: TColor index -503 read GetTColorProp write SetTColorProp stored False;
property BorderStyle: TOleEnum index -504 read GetTOleEnumProp write SetTOleEnumProp stored False;
property Picture: TPicture index -523 read GetTPictureProp write SetTPictureProp stored False;
property MouseIcon: TPicture index -522 read GetTPictureProp write SetTPictureProp stored False;
property PictureSizeMode: TOleEnum index 27 read GetTOleEnumProp write SetTOleEnumProp stored False;
property PictureAlignment: TOleEnum index 26 read GetTOleEnumProp write SetTOleEnumProp stored False;
property PictureTiling: WordBool index 28 read GetWordBoolProp write SetWordBoolProp stored False;
property SpecialEffect: TOleEnum index 12 read GetTOleEnumProp write SetTOleEnumProp stored False;
property OnBeforeDragOver: TImageBeforeDragOver read FOnBeforeDragOver write FOnBeforeDragOver;
property OnBeforeDropOrPaste: TImageBeforeDropOrPaste read FOnBeforeDropOrPaste write FOnBeforeDropOrPaste;
property OnError: TImageError read FOnError write FOnError;
end;
我想给image 绑定事件,这个怎么实现,我看有说invoke的,有的好像IConnectionPoint,这个要怎么实现,自己要重新写实现类吗,我目前有个TEventSink 的类
解决方案 »
- 有没有知道delphi中的TPaintBox是那个控件,我怎么找不到啊,急死了。谢谢了
- 历史遗留问题,listview头部重画问题.已经基本实现,需要优化,谢绝灌水.高手进.
- 棘手的问题
- mdac问题
- Edit的简单问题,在线等!问题解决马上给分!!急呀!!小弟在此谢过了!!高手帮帮我!!只有这些分了,都给!!
- 标题栏上的icon图标
- 我想在文本文件中写入字符,以tab键分割,有那位能告诉tab的ascii码,谢谢
- 帮忙请
- 如何用setupapi实现象devcon中的enable id 、disable id 、status id
- 我是新手,请帮帮忙!(因为我是第一次来,所以分不多,请各位高手帮帮忙吧)
- 为什么设计时加载图片(Picture属性)会出错?
- 请问 : 一个用 AlphaControl换肤的问题?
// *********************************************************************//
// Interface: IImage
// Flags: (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID: {4C599243-6926-101B-9992-00000B65C6F9}
// *********************************************************************//
IImage = interface(IControl)
['{4C599243-6926-101B-9992-00000B65C6F9}']
procedure Set_Enabled(fEnabled: WordBool); safecall;
function Get_Enabled: WordBool; safecall;
procedure Set_MousePointer(MousePointer: fmMousePointer); safecall;
function Get_MousePointer: fmMousePointer; safecall;
procedure Set_AutoSize(fAutoSize: WordBool); safecall;
function Get_AutoSize: WordBool; safecall;
procedure Set_BackColor(BackColor: OLE_COLOR); safecall;
function Get_BackColor: OLE_COLOR; safecall;
procedure Set_BackStyle(BackStyle: fmBackStyle); safecall;
function Get_BackStyle: fmBackStyle; safecall;
procedure Set_BorderColor(BorderColor: OLE_COLOR); safecall;
function Get_BorderColor: OLE_COLOR; safecall;
procedure Set_BorderStyle(Style: fmBorderStyle); safecall;
function Get_BorderStyle: fmBorderStyle; safecall;
procedure Set_Picture(const Picture: IPictureDisp); safecall;
procedure _Set_Picture(const Picture: IPictureDisp); safecall;
function Get_Picture: IPictureDisp; safecall;
procedure Set_MouseIcon(const MouseIcon: IPictureDisp); safecall;
procedure _Set_MouseIcon(const MouseIcon: IPictureDisp); safecall;
function Get_MouseIcon: IPictureDisp; safecall;
procedure Set_PictureSizeMode(PictureSizeMode: fmPictureSizeMode); safecall;
function Get_PictureSizeMode: fmPictureSizeMode; safecall;
procedure Set_PictureAlignment(PictureAlignment: fmPictureAlignment); safecall;
function Get_PictureAlignment: fmPictureAlignment; safecall;
procedure Set_PictureTiling(PictureTiling: WordBool); safecall;
function Get_PictureTiling: WordBool; safecall;
procedure Set_SpecialEffect(SpecialEffect: fmSpecialEffect); safecall;
function Get_SpecialEffect: fmSpecialEffect; safecall;
property Enabled: WordBool read Get_Enabled write Set_Enabled;
property MousePointer: fmMousePointer read Get_MousePointer write Set_MousePointer;
property AutoSize: WordBool read Get_AutoSize write Set_AutoSize;
property BackColor: OLE_COLOR read Get_BackColor write Set_BackColor;
property BackStyle: fmBackStyle read Get_BackStyle write Set_BackStyle;
property BorderColor: OLE_COLOR read Get_BorderColor write Set_BorderColor;
property BorderStyle: fmBorderStyle read Get_BorderStyle write Set_BorderStyle;
property Picture: IPictureDisp read Get_Picture write Set_Picture;
property MouseIcon: IPictureDisp read Get_MouseIcon write Set_MouseIcon;
property PictureSizeMode: fmPictureSizeMode read Get_PictureSizeMode write Set_PictureSizeMode;
property PictureAlignment: fmPictureAlignment read Get_PictureAlignment write Set_PictureAlignment;
property PictureTiling: WordBool read Get_PictureTiling write Set_PictureTiling;
property SpecialEffect: fmSpecialEffect read Get_SpecialEffect write Set_SpecialEffect;
end;// *********************************************************************//
// DispIntf: IImageDisp
// Flags: (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID: {4C599243-6926-101B-9992-00000B65C6F9}
// *********************************************************************//
IImageDisp = dispinterface
['{4C599243-6926-101B-9992-00000B65C6F9}']
property Enabled: WordBool dispid -514;
property MousePointer: fmMousePointer dispid -521;
property Picture: IPictureDisp dispid -523;
property MouseIcon: IPictureDisp dispid -522;
property PictureSizeMode: fmPictureSizeMode dispid 27;
property PictureAlignment: fmPictureAlignment dispid 26;
property PictureTiling: WordBool dispid 28;
property SpecialEffect: fmSpecialEffect dispid 12;
property Cancel: WordBool dispid -2147418056;
property ControlSource: WideString dispid -2147385343;
property ControlTipText: WideString dispid -2147418043;
property Default: WordBool dispid -2147418057;
procedure _SetHeight(Height: Integer); dispid 1610743816;
procedure _GetHeight(out Height: Integer); dispid 1610743817;
property Height: Single dispid -2147418106;
property HelpContextID: Integer dispid -2147418062;
property InSelection: WordBool dispid -2147385341;
property LayoutEffect: fmLayoutEffect readonly dispid -2147385340;
procedure _SetLeft(Left: Integer); dispid 1610743825;
procedure _GetLeft(out Left: Integer); dispid 1610743826;
property Left: Single dispid -2147418109;
property Name: WideString dispid -2147418112;
procedure _GetOldHeight(out OldHeight: Integer); dispid 1610743831;
property OldHeight: Single readonly dispid -2147385339;
procedure _GetOldLeft(out OldLeft: Integer); dispid 1610743833;
property OldLeft: Single readonly dispid -2147385338;
procedure _GetOldTop(out OldTop: Integer); dispid 1610743835;
property OldTop: Single readonly dispid -2147385337;
procedure _GetOldWidth(out OldWidth: Integer); dispid 1610743837;
property OldWidth: Single readonly dispid -2147385336;
property Object_: IDispatch readonly dispid -2147385335;
property Parent: IDispatch readonly dispid -2147418104;
property RowSource: WideString dispid -2147385330;
property RowSourceType: Smallint dispid -2147385329;
property TabIndex: Smallint dispid -2147418097;
property TabStop: WordBool dispid -2147418098;
property Tag: WideString dispid -2147418101;
procedure _SetTop(Top: Integer); dispid 1610743851;
procedure _GetTop(out Top: Integer); dispid 1610743852;
property Top: Single dispid -2147418108;
function BoundValue: {??POleVariant1}OleVariant; dispid -2147385328;
property Visible: WordBool dispid -2147418105;
procedure _SetWidth(Width: Integer); dispid 1610743859;
procedure _GetWidth(out Width: Integer); dispid 1610743860;
property Width: Single dispid -2147418107;
procedure Move(Left: OleVariant; Top: OleVariant; Width: OleVariant; Height: OleVariant;
Layout: OleVariant); dispid -2147385088;
procedure ZOrder(zPosition: OleVariant); dispid -2147385083;
procedure Select(SelectInGroup: WordBool); dispid -2147385086;
procedure SetFocus; dispid -2147385085;
function _GethWnd: SYSINT; dispid 1610743867;
function _GetID: Integer; dispid 1610743868;
procedure _Move(Left: Integer; Top: Integer; Width: Integer; Height: Integer); dispid 1610743869;
procedure _ZOrder(zPosition: fmZOrder); dispid 1610743870;
end;
// *********************************************************************//
// DispIntf: ImageEvents
// Flags: (4112) Hidden Dispatchable
// GUID: {4C5992A5-6926-101B-9992-00000B65C6F9}
// *********************************************************************//
ImageEvents = dispinterface
['{4C5992A5-6926-101B-9992-00000B65C6F9}']
procedure BeforeDragOver(const Cancel: ReturnBoolean; const Data: DataObject; X: Single;
Y: Single; DragState: fmDragState; const Effect: ReturnEffect;
Shift: Smallint); dispid 3;
procedure BeforeDropOrPaste(const Cancel: ReturnBoolean; Action: fmAction;
const Data: DataObject; X: Single; Y: Single;
const Effect: ReturnEffect; Shift: Smallint); dispid 4;
procedure Click; dispid -600;
procedure DblClick(const Cancel: ReturnBoolean); dispid -601;
procedure Error(Number: Smallint; const Description: ReturnString; SCode: Integer;
const Source: WideString; const HelpFile: WideString; HelpContext: Integer;
const CancelDisplay: ReturnBoolean); dispid -608;
procedure MouseDown(Button: Smallint; Shift: Smallint; X: Single; Y: Single); dispid -605;
procedure MouseMove(Button: Smallint; Shift: Smallint; X: Single; Y: Single); dispid -606;
procedure MouseUp(Button: Smallint; Shift: Smallint; X: Single; Y: Single); dispid -607;
end;
代码如下:
{-----------------------------------------------------------------------------
Unit Name: MSOEventSink Author: Vadim Krochak
Copyright: ?2003 All rights reserved.
E.Mail: [email protected]
License: Don't redistribute for cash. Don't change and
redistribute under your name. Let me know if you fix anything or improve
anything.
Purpose: TCommandBarButtonEventsSink, TCommandBarsEventsSink and
TCommandBarComboBoxEventsSink implementation
History:
-----------------------------------------------------------------------------}unit MSOEventSink;interfaceuses EventSink, Office_TLB;type TOnCommandBarButtonClick = procedure(const Ctrl: CommandBarButton; var CancelDefault: WordBool) of object; TCommandBarButtonEventsSink = class(TEventSink)
private
FOnCommandBarButtonClick: TOnCommandBarButtonClick; protected
function Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer;
Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; procedure ProcessEvent(Params: Pointer); public
property OnCommandBarButtonClick: TOnCommandBarButtonClick read FOnCommandBarButtonClick write FOnCommandBarButtonClick; end;
TOnCommandBarsUpdate = procedure() of object; TCommandBarsEventsSink = class(TEventSink)
private
FOnCommandBarsUpdate: TOnCommandBarsUpdate;
protected
function Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer;
Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; procedure ProcessEvent(Params: Pointer);
public
property OnCommandBarsUpdate: TOnCommandBarsUpdate read FOnCommandBarsUpdate write FOnCommandBarsUpdate;
end; TOnCommandBarComboBoxChange = procedure(const Ctrl: CommandBarComboBox) of object; TCommandBarComboBoxEventsSink = class(TEventSink)
private
FOnCommandBarComboBoxChange: TOnCommandBarComboBoxChange;
protected
function Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer;
Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; procedure ProcessEvent(Params: Pointer);
public
property OnCommandBarComboBoxChange: TOnCommandBarComboBoxChange read FOnCommandBarComboBoxChange write FOnCommandBarComboBoxChange;
end;//******************************************************************************
//******************************************************************************implementationuses Windows, ActiveX;//******************************************************************************
//******************************************************************************function TCommandBarButtonEventsSink.Invoke(DispID: Integer;
const IID: TGUID; LocaleID: Integer; Flags: Word; var Params; VarResult,
ExcepInfo, ArgErr: Pointer): HResult;
begin if ( DispID = 1 ) and ( TDispParams(Params).cArgs = 2 ) then
begin
Self.ProcessEvent(Pointer(@Params));
Result := S_OK;
end
else
begin
Result := inherited Invoke(DispID, IID, LocaleID, Flags, Params, VarResult, ExcepInfo, ArgErr );
end;// if-elseend;//******************************************************************************
procedure TCommandBarButtonEventsSink.ProcessEvent(Params: Pointer);
var
CanCancel: WordBool;
begin if Assigned(Self.FOnCommandBarButtonClick) then
begin CanCancel := PDispParams(Params)^.rgvarg[0].pbool^;
Self.FOnCommandBarButtonClick(
CommandBarButton(PDispParams(Params)^.rgvarg[1].pdispVal), CanCancel
); PDispParams(Params)^.rgvarg[0].pbool^ := CanCancel; end;// ifend;{ TCommandBarsEventsSink }//******************************************************************************
procedure TCommandBarsEventsSink.ProcessEvent(Params: Pointer);
begin if Assigned(Self.FOnCommandBarsUpdate) then
begin
Self.FOnCommandBarsUpdate();
end;// ifend;//******************************************************************************
function TCommandBarsEventsSink.Invoke(DispID: Integer; const IID: TGUID;
LocaleID: Integer; Flags: Word; var Params; VarResult, ExcepInfo,
ArgErr: Pointer): HResult;
begin if DispID = 1 then
begin
Self.ProcessEvent(Pointer(@Params));
Result := S_OK;
end
else
begin
Result := inherited Invoke(DispID, IID, LocaleID, Flags, Params, VarResult, ExcepInfo, ArgErr );
end;// if-elseend;
{ TCommandBarComboBoxEventsSink }//******************************************************************************
procedure TCommandBarComboBoxEventsSink.ProcessEvent(Params: Pointer);
begin if Assigned(Self.FOnCommandBarComboBoxChange) then
begin Self.FOnCommandBarComboBoxChange(
CommandBarComboBox( PDispParams(Params)^.rgvarg[0].pdispVal )
); end;// ifend;//******************************************************************************
function TCommandBarComboBoxEventsSink.Invoke(DispID: Integer;
const IID: TGUID; LocaleID: Integer; Flags: Word; var Params; VarResult,
ExcepInfo, ArgErr: Pointer): HResult;
begin if ( DispID = 1 ) and ( TDispParams(Params).cArgs = 1 ) then
begin
Self.ProcessEvent(Pointer(@Params));
Result := S_OK;
end
else
begin
Result := inherited Invoke(DispID, IID, LocaleID, Flags, Params, VarResult, ExcepInfo, ArgErr );
end;// if-elseend;end.