XClockImpl.pas
上传用户:fh681027
上传日期:2022-07-23
资源大小:1959k
文件大小:8k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. unit XClockImpl;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  5.   ActiveX, AxCtrls, XClockLib_TLB, ExtCtrls, StdCtrls, Stdvcl;
  6. {$WARN SYMBOL_PLATFORM OFF}
  7. type
  8.   TXClock = class(TActiveForm, IXClock)
  9.     Label1: TLabel;
  10.     Timer1: TTimer;
  11.     procedure Timer1Timer(Sender: TObject);
  12.   private
  13.     { Private declarations }
  14.     FEvents: IXClockEvents;
  15.     procedure ActivateEvent(Sender: TObject);
  16.     procedure ClickEvent(Sender: TObject);
  17.     procedure CreateEvent(Sender: TObject);
  18.     procedure DblClickEvent(Sender: TObject);
  19.     procedure DeactivateEvent(Sender: TObject);
  20.     procedure DestroyEvent(Sender: TObject);
  21.     procedure KeyPressEvent(Sender: TObject; var Key: Char);
  22.     procedure PaintEvent(Sender: TObject);
  23.   protected
  24.     { Protected declarations }
  25.     procedure DefinePropertyPages(DefinePropertyPage: TDefinePropertyPage); override;
  26.     procedure EventSinkChanged(const EventSink: IUnknown); override;
  27.     function Get_Active: WordBool; safecall;
  28.     function Get_AutoScroll: WordBool; safecall;
  29.     function Get_AutoSize: WordBool; safecall;
  30.     function Get_AxBorderStyle: TxActiveFormBorderStyle; safecall;
  31.     function Get_BiDiMode: TxBiDiMode; safecall;
  32.     function Get_Caption: WideString; safecall;
  33.     function Get_Color: OLE_COLOR; safecall;
  34.     function Get_Cursor: Smallint; safecall;
  35.     function Get_DoubleBuffered: WordBool; safecall;
  36.     function Get_DropTarget: WordBool; safecall;
  37.     function Get_Enabled: WordBool; safecall;
  38.     function Get_Font: IFontDisp; safecall;
  39.     function Get_HelpFile: WideString; safecall;
  40.     function Get_KeyPreview: WordBool; safecall;
  41.     function Get_PixelsPerInch: Integer; safecall;
  42.     function Get_PrintScale: TxPrintScale; safecall;
  43.     function Get_Scaled: WordBool; safecall;
  44.     function Get_Visible: WordBool; safecall;
  45.     procedure _Set_Font(const Value: IFontDisp); safecall;
  46.     procedure Set_AutoScroll(Value: WordBool); safecall;
  47.     procedure Set_AutoSize(Value: WordBool); safecall;
  48.     procedure Set_AxBorderStyle(Value: TxActiveFormBorderStyle); safecall;
  49.     procedure Set_BiDiMode(Value: TxBiDiMode); safecall;
  50.     procedure Set_Caption(const Value: WideString); safecall;
  51.     procedure Set_Color(Value: OLE_COLOR); safecall;
  52.     procedure Set_Cursor(Value: Smallint); safecall;
  53.     procedure Set_DoubleBuffered(Value: WordBool); safecall;
  54.     procedure Set_DropTarget(Value: WordBool); safecall;
  55.     procedure Set_Enabled(Value: WordBool); safecall;
  56.     procedure Set_Font(const Value: IFontDisp); safecall;
  57.     procedure Set_HelpFile(const Value: WideString); safecall;
  58.     procedure Set_KeyPreview(Value: WordBool); safecall;
  59.     procedure Set_PixelsPerInch(Value: Integer); safecall;
  60.     procedure Set_PrintScale(Value: TxPrintScale); safecall;
  61.     procedure Set_Scaled(Value: WordBool); safecall;
  62.     procedure Set_Visible(Value: WordBool); safecall;
  63.   public
  64.     { Public declarations }
  65.     procedure Initialize; override;
  66.   end;
  67. implementation
  68. uses ComObj, ComServ;
  69. {$R *.DFM}
  70. { TXClock }
  71. procedure TXClock.DefinePropertyPages(DefinePropertyPage: TDefinePropertyPage);
  72. begin
  73.   { Define property pages here.  Property pages are defined by calling
  74.     DefinePropertyPage with the class id of the page.  For example,
  75.       DefinePropertyPage(Class_XClockPage); }
  76. end;
  77. procedure TXClock.EventSinkChanged(const EventSink: IUnknown);
  78. begin
  79.   FEvents := EventSink as IXClockEvents;
  80. end;
  81. procedure TXClock.Initialize;
  82. begin
  83.   inherited Initialize;
  84.   OnActivate := ActivateEvent;
  85.   OnClick := ClickEvent;
  86.   OnCreate := CreateEvent;
  87.   OnDblClick := DblClickEvent;
  88.   OnDeactivate := DeactivateEvent;
  89.   OnDestroy := DestroyEvent;
  90.   OnKeyPress := KeyPressEvent;
  91.   OnPaint := PaintEvent;
  92. end;
  93. function TXClock.Get_Active: WordBool;
  94. begin
  95.   Result := Active;
  96. end;
  97. function TXClock.Get_AutoScroll: WordBool;
  98. begin
  99.   Result := AutoScroll;
  100. end;
  101. function TXClock.Get_AutoSize: WordBool;
  102. begin
  103.   Result := AutoSize;
  104. end;
  105. function TXClock.Get_AxBorderStyle: TxActiveFormBorderStyle;
  106. begin
  107.   Result := Ord(AxBorderStyle);
  108. end;
  109. function TXClock.Get_BiDiMode: TxBiDiMode;
  110. begin
  111.   Result := Ord(BiDiMode);
  112. end;
  113. function TXClock.Get_Caption: WideString;
  114. begin
  115.   Result := WideString(Caption);
  116. end;
  117. function TXClock.Get_Color: OLE_COLOR;
  118. begin
  119.   Result := OLE_COLOR(Color);
  120. end;
  121. function TXClock.Get_Cursor: Smallint;
  122. begin
  123.   Result := Smallint(Cursor);
  124. end;
  125. function TXClock.Get_DoubleBuffered: WordBool;
  126. begin
  127.   Result := DoubleBuffered;
  128. end;
  129. function TXClock.Get_DropTarget: WordBool;
  130. begin
  131.   Result := DropTarget;
  132. end;
  133. function TXClock.Get_Enabled: WordBool;
  134. begin
  135.   Result := Enabled;
  136. end;
  137. function TXClock.Get_Font: IFontDisp;
  138. begin
  139.   GetOleFont(Font, Result);
  140. end;
  141. function TXClock.Get_HelpFile: WideString;
  142. begin
  143.   Result := WideString(HelpFile);
  144. end;
  145. function TXClock.Get_KeyPreview: WordBool;
  146. begin
  147.   Result := KeyPreview;
  148. end;
  149. function TXClock.Get_PixelsPerInch: Integer;
  150. begin
  151.   Result := PixelsPerInch;
  152. end;
  153. function TXClock.Get_PrintScale: TxPrintScale;
  154. begin
  155.   Result := Ord(PrintScale);
  156. end;
  157. function TXClock.Get_Scaled: WordBool;
  158. begin
  159.   Result := Scaled;
  160. end;
  161. function TXClock.Get_Visible: WordBool;
  162. begin
  163.   Result := Visible;
  164. end;
  165. procedure TXClock._Set_Font(const Value: IFontDisp);
  166. begin
  167.   SetOleFont(Font, Value);
  168. end;
  169. procedure TXClock.Set_AutoScroll(Value: WordBool);
  170. begin
  171.   AutoScroll := Value;
  172. end;
  173. procedure TXClock.Set_AutoSize(Value: WordBool);
  174. begin
  175.   AutoSize := Value;
  176. end;
  177. procedure TXClock.Set_AxBorderStyle(Value: TxActiveFormBorderStyle);
  178. begin
  179.   AxBorderStyle := TActiveFormBorderStyle(Value);
  180. end;
  181. procedure TXClock.Set_BiDiMode(Value: TxBiDiMode);
  182. begin
  183.   BiDiMode := TBiDiMode(Value);
  184. end;
  185. procedure TXClock.Set_Caption(const Value: WideString);
  186. begin
  187.   Caption := TCaption(Value);
  188. end;
  189. procedure TXClock.Set_Color(Value: OLE_COLOR);
  190. begin
  191.   Color := TColor(Value);
  192. end;
  193. procedure TXClock.Set_Cursor(Value: Smallint);
  194. begin
  195.   Cursor := TCursor(Value);
  196. end;
  197. procedure TXClock.Set_DoubleBuffered(Value: WordBool);
  198. begin
  199.   DoubleBuffered := Value;
  200. end;
  201. procedure TXClock.Set_DropTarget(Value: WordBool);
  202. begin
  203.   DropTarget := Value;
  204. end;
  205. procedure TXClock.Set_Enabled(Value: WordBool);
  206. begin
  207.   Enabled := Value;
  208. end;
  209. procedure TXClock.Set_Font(const Value: IFontDisp);
  210. begin
  211.   SetOleFont(Font, Value);
  212. end;
  213. procedure TXClock.Set_HelpFile(const Value: WideString);
  214. begin
  215.   HelpFile := String(Value);
  216. end;
  217. procedure TXClock.Set_KeyPreview(Value: WordBool);
  218. begin
  219.   KeyPreview := Value;
  220. end;
  221. procedure TXClock.Set_PixelsPerInch(Value: Integer);
  222. begin
  223.   PixelsPerInch := Value;
  224. end;
  225. procedure TXClock.Set_PrintScale(Value: TxPrintScale);
  226. begin
  227.   PrintScale := TPrintScale(Value);
  228. end;
  229. procedure TXClock.Set_Scaled(Value: WordBool);
  230. begin
  231.   Scaled := Value;
  232. end;
  233. procedure TXClock.Set_Visible(Value: WordBool);
  234. begin
  235.   Visible := Value;
  236. end;
  237. procedure TXClock.ActivateEvent(Sender: TObject);
  238. begin
  239.   if FEvents <> nil then FEvents.OnActivate;
  240. end;
  241. procedure TXClock.ClickEvent(Sender: TObject);
  242. begin
  243.   if FEvents <> nil then FEvents.OnClick;
  244. end;
  245. procedure TXClock.CreateEvent(Sender: TObject);
  246. begin
  247.   if FEvents <> nil then FEvents.OnCreate;
  248. end;
  249. procedure TXClock.DblClickEvent(Sender: TObject);
  250. begin
  251.   if FEvents <> nil then FEvents.OnDblClick;
  252. end;
  253. procedure TXClock.DeactivateEvent(Sender: TObject);
  254. begin
  255.   if FEvents <> nil then FEvents.OnDeactivate;
  256. end;
  257. procedure TXClock.DestroyEvent(Sender: TObject);
  258. begin
  259.   if FEvents <> nil then FEvents.OnDestroy;
  260. end;
  261. procedure TXClock.KeyPressEvent(Sender: TObject; var Key: Char);
  262. var
  263.   TempKey: Smallint;
  264. begin
  265.   TempKey := Smallint(Key);
  266.   if FEvents <> nil then FEvents.OnKeyPress(TempKey);
  267.   Key := Char(TempKey);
  268. end;
  269. procedure TXClock.PaintEvent(Sender: TObject);
  270. begin
  271.   if FEvents <> nil then FEvents.OnPaint;
  272. end;
  273. procedure TXClock.Timer1Timer(Sender: TObject);
  274. begin
  275.   Label1.Caption := TimeToStr (Time);
  276. end;
  277. initialization
  278.   TActiveFormFactory.Create(
  279.     ComServer,
  280.     TActiveFormControl,
  281.     TXClock,
  282.     Class_XClock,
  283.     1,
  284.     '',
  285.     OLEMISC_SIMPLEFRAME or OLEMISC_ACTSLIKELABEL,
  286.     tmApartment);
  287. end.
  288.