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

Delphi控件源码

开发平台:

Delphi

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