home *** CD-ROM | disk | FTP | other *** search
/ PC Expert 29 / Pce29cd.iso / RUNIMAGE / DELPHI40 / DEMOS / ACTIVEX / DELCTRLS / controlbarimpl1.pas < prev    next >
Pascal/Delphi Source File  |  1998-06-16  |  12KB  |  425 lines

  1. unit ControlBarImpl1;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, ActiveX, Classes, Controls, Graphics, Menus, Forms, StdCtrls,
  7.   ComServ, StdVCL, AXCtrls, DelCtrls_TLB, ExtCtrls;
  8.  
  9. type
  10.   TControlBarX = class(TActiveXControl, IControlBarX)
  11.   private
  12.     { Private declarations }
  13.     FDelphiControl: TControlBar;
  14.     FEvents: IControlBarXEvents;
  15.     procedure CanResizeEvent(Sender: TObject; var NewWidth, NewHeight: Integer;
  16.       var Resize: Boolean);
  17.     procedure ClickEvent(Sender: TObject);
  18.     procedure ConstrainedResizeEvent(Sender: TObject; var MinWidth, MinHeight,
  19.       MaxWidth, MaxHeight: Integer);
  20.     procedure DblClickEvent(Sender: TObject);
  21.     procedure PaintEvent(Sender: TObject);
  22.     procedure ResizeEvent(Sender: TObject);
  23.   protected
  24.     { Protected declarations }
  25.     procedure DefinePropertyPages(DefinePropertyPage: TDefinePropertyPage); override;
  26.     procedure EventSinkChanged(const EventSink: IUnknown); override;
  27.     procedure InitializeControl; override;
  28.     function ClassNameIs(const Name: WideString): WordBool; safecall;
  29.     function DrawTextBiDiModeFlags(Flags: Integer): Integer; safecall;
  30.     function DrawTextBiDiModeFlagsReadingOnly: Integer; safecall;
  31.     function Get_AutoDrag: WordBool; safecall;
  32.     function Get_AutoSize: WordBool; safecall;
  33.     function Get_BevelInner: TxBevelCut; safecall;
  34.     function Get_BevelKind: TxBevelKind; safecall;
  35.     function Get_BevelOuter: TxBevelCut; safecall;
  36.     function Get_BiDiMode: TxBiDiMode; safecall;
  37.     function Get_Color: OLE_COLOR; safecall;
  38.     function Get_Cursor: Smallint; safecall;
  39.     function Get_DockSite: WordBool; safecall;
  40.     function Get_DoubleBuffered: WordBool; safecall;
  41.     function Get_DragCursor: Smallint; safecall;
  42.     function Get_DragMode: TxDragMode; safecall;
  43.     function Get_Enabled: WordBool; safecall;
  44.     function Get_ParentColor: WordBool; safecall;
  45.     function Get_ParentCtl3D: WordBool; safecall;
  46.     function Get_ParentFont: WordBool; safecall;
  47.     function Get_Picture: IPictureDisp; safecall;
  48.     function Get_RowSnap: WordBool; safecall;
  49.     function Get_Visible: WordBool; safecall;
  50.     function GetControlsAlignment: TxAlignment; safecall;
  51.     function IsRightToLeft: WordBool; safecall;
  52.     function UseRightToLeftAlignment: WordBool; safecall;
  53.     function UseRightToLeftReading: WordBool; safecall;
  54.     function UseRightToLeftScrollBar: WordBool; safecall;
  55.     procedure AboutBox; safecall;
  56.     procedure FlipChildren(AllLevels: WordBool); safecall;
  57.     procedure InitiateAction; safecall;
  58.     procedure Set_AutoDrag(Value: WordBool); safecall;
  59.     procedure Set_AutoSize(Value: WordBool); safecall;
  60.     procedure Set_BevelInner(Value: TxBevelCut); safecall;
  61.     procedure Set_BevelKind(Value: TxBevelKind); safecall;
  62.     procedure Set_BevelOuter(Value: TxBevelCut); safecall;
  63.     procedure Set_BiDiMode(Value: TxBiDiMode); safecall;
  64.     procedure Set_Color(Value: OLE_COLOR); safecall;
  65.     procedure Set_Cursor(Value: Smallint); safecall;
  66.     procedure Set_DockSite(Value: WordBool); safecall;
  67.     procedure Set_DoubleBuffered(Value: WordBool); safecall;
  68.     procedure Set_DragCursor(Value: Smallint); safecall;
  69.     procedure Set_DragMode(Value: TxDragMode); safecall;
  70.     procedure Set_Enabled(Value: WordBool); safecall;
  71.     procedure Set_ParentColor(Value: WordBool); safecall;
  72.     procedure Set_ParentCtl3D(Value: WordBool); safecall;
  73.     procedure Set_ParentFont(Value: WordBool); safecall;
  74.     procedure Set_Picture(const Value: IPictureDisp); safecall;
  75.     procedure Set_RowSnap(Value: WordBool); safecall;
  76.     procedure Set_Visible(Value: WordBool); safecall;
  77.     procedure StickControls; safecall;
  78.   end;
  79.  
  80. implementation
  81.  
  82. uses ComObj, About8;
  83.  
  84. { TControlBarX }
  85.  
  86. procedure TControlBarX.DefinePropertyPages(DefinePropertyPage: TDefinePropertyPage);
  87. begin
  88.   { Define property pages here.  Property pages are defined by calling
  89.     DefinePropertyPage with the class id of the page.  For example,
  90.       DefinePropertyPage(Class_ControlBarXPage); }
  91. end;
  92.  
  93. procedure TControlBarX.EventSinkChanged(const EventSink: IUnknown);
  94. begin
  95.   FEvents := EventSink as IControlBarXEvents;
  96. end;
  97.  
  98. procedure TControlBarX.InitializeControl;
  99. begin
  100.   FDelphiControl := Control as TControlBar;
  101.   FDelphiControl.OnCanResize := CanResizeEvent;
  102.   FDelphiControl.OnClick := ClickEvent;
  103.   FDelphiControl.OnConstrainedResize := ConstrainedResizeEvent;
  104.   FDelphiControl.OnDblClick := DblClickEvent;
  105.   FDelphiControl.OnPaint := PaintEvent;
  106.   FDelphiControl.OnResize := ResizeEvent;
  107. end;
  108.  
  109. function TControlBarX.ClassNameIs(const Name: WideString): WordBool;
  110. begin
  111.   Result := FDelphiControl.ClassNameIs(Name);
  112. end;
  113.  
  114. function TControlBarX.DrawTextBiDiModeFlags(Flags: Integer): Integer;
  115. begin
  116.   Result := FDelphiControl.DrawTextBiDiModeFlags(Flags);
  117. end;
  118.  
  119. function TControlBarX.DrawTextBiDiModeFlagsReadingOnly: Integer;
  120. begin
  121.   Result := FDelphiControl.DrawTextBiDiModeFlagsReadingOnly;
  122. end;
  123.  
  124. function TControlBarX.Get_AutoDrag: WordBool;
  125. begin
  126.   Result := FDelphiControl.AutoDrag;
  127. end;
  128.  
  129. function TControlBarX.Get_AutoSize: WordBool;
  130. begin
  131.   Result := FDelphiControl.AutoSize;
  132. end;
  133.  
  134. function TControlBarX.Get_BevelInner: TxBevelCut;
  135. begin
  136.   Result := Ord(FDelphiControl.BevelInner);
  137. end;
  138.  
  139. function TControlBarX.Get_BevelKind: TxBevelKind;
  140. begin
  141.   Result := Ord(FDelphiControl.BevelKind);
  142. end;
  143.  
  144. function TControlBarX.Get_BevelOuter: TxBevelCut;
  145. begin
  146.   Result := Ord(FDelphiControl.BevelOuter);
  147. end;
  148.  
  149. function TControlBarX.Get_BiDiMode: TxBiDiMode;
  150. begin
  151.   Result := Ord(FDelphiControl.BiDiMode);
  152. end;
  153.  
  154. function TControlBarX.Get_Color: OLE_COLOR;
  155. begin
  156.   Result := OLE_COLOR(FDelphiControl.Color);
  157. end;
  158.  
  159. function TControlBarX.Get_Cursor: Smallint;
  160. begin
  161.   Result := Smallint(FDelphiControl.Cursor);
  162. end;
  163.  
  164. function TControlBarX.Get_DockSite: WordBool;
  165. begin
  166.   Result := FDelphiControl.DockSite;
  167. end;
  168.  
  169. function TControlBarX.Get_DoubleBuffered: WordBool;
  170. begin
  171.   Result := FDelphiControl.DoubleBuffered;
  172. end;
  173.  
  174. function TControlBarX.Get_DragCursor: Smallint;
  175. begin
  176.   Result := Smallint(FDelphiControl.DragCursor);
  177. end;
  178.  
  179. function TControlBarX.Get_DragMode: TxDragMode;
  180. begin
  181.   Result := Ord(FDelphiControl.DragMode);
  182. end;
  183.  
  184. function TControlBarX.Get_Enabled: WordBool;
  185. begin
  186.   Result := FDelphiControl.Enabled;
  187. end;
  188.  
  189. function TControlBarX.Get_ParentColor: WordBool;
  190. begin
  191.   Result := FDelphiControl.ParentColor;
  192. end;
  193.  
  194. function TControlBarX.Get_ParentCtl3D: WordBool;
  195. begin
  196.   Result := FDelphiControl.ParentCtl3D;
  197. end;
  198.  
  199. function TControlBarX.Get_ParentFont: WordBool;
  200. begin
  201.   Result := FDelphiControl.ParentFont;
  202. end;
  203.  
  204. function TControlBarX.Get_Picture: IPictureDisp;
  205. begin
  206.   GetOlePicture(FDelphiControl.Picture, Result);
  207. end;
  208.  
  209. function TControlBarX.Get_RowSnap: WordBool;
  210. begin
  211.   Result := FDelphiControl.RowSnap;
  212. end;
  213.  
  214. function TControlBarX.Get_Visible: WordBool;
  215. begin
  216.   Result := FDelphiControl.Visible;
  217. end;
  218.  
  219. function TControlBarX.GetControlsAlignment: TxAlignment;
  220. begin
  221.  Result := TxAlignment(FDelphiControl.GetControlsAlignment);
  222. end;
  223.  
  224. function TControlBarX.IsRightToLeft: WordBool;
  225. begin
  226.   Result := FDelphiControl.IsRightToLeft;
  227. end;
  228.  
  229. function TControlBarX.UseRightToLeftAlignment: WordBool;
  230. begin
  231.   Result := FDelphiControl.UseRightToLeftAlignment;
  232. end;
  233.  
  234. function TControlBarX.UseRightToLeftReading: WordBool;
  235. begin
  236.   Result := FDelphiControl.UseRightToLeftReading;
  237. end;
  238.  
  239. function TControlBarX.UseRightToLeftScrollBar: WordBool;
  240. begin
  241.   Result := FDelphiControl.UseRightToLeftScrollBar;
  242. end;
  243.  
  244. procedure TControlBarX.AboutBox;
  245. begin
  246.   ShowControlBarXAbout;
  247. end;
  248.  
  249. procedure TControlBarX.FlipChildren(AllLevels: WordBool);
  250. begin
  251.   FDelphiControl.FlipChildren(AllLevels);
  252. end;
  253.  
  254. procedure TControlBarX.InitiateAction;
  255. begin
  256.   FDelphiControl.InitiateAction;
  257. end;
  258.  
  259. procedure TControlBarX.Set_AutoDrag(Value: WordBool);
  260. begin
  261.   FDelphiControl.AutoDrag := Value;
  262. end;
  263.  
  264. procedure TControlBarX.Set_AutoSize(Value: WordBool);
  265. begin
  266.   FDelphiControl.AutoSize := Value;
  267. end;
  268.  
  269. procedure TControlBarX.Set_BevelInner(Value: TxBevelCut);
  270. begin
  271.   FDelphiControl.BevelInner := TBevelCut(Value);
  272. end;
  273.  
  274. procedure TControlBarX.Set_BevelKind(Value: TxBevelKind);
  275. begin
  276.   FDelphiControl.BevelKind := TBevelKind(Value);
  277. end;
  278.  
  279. procedure TControlBarX.Set_BevelOuter(Value: TxBevelCut);
  280. begin
  281.   FDelphiControl.BevelOuter := TBevelCut(Value);
  282. end;
  283.  
  284. procedure TControlBarX.Set_BiDiMode(Value: TxBiDiMode);
  285. begin
  286.   FDelphiControl.BiDiMode := TBiDiMode(Value);
  287. end;
  288.  
  289. procedure TControlBarX.Set_Color(Value: OLE_COLOR);
  290. begin
  291.   FDelphiControl.Color := TColor(Value);
  292. end;
  293.  
  294. procedure TControlBarX.Set_Cursor(Value: Smallint);
  295. begin
  296.   FDelphiControl.Cursor := TCursor(Value);
  297. end;
  298.  
  299. procedure TControlBarX.Set_DockSite(Value: WordBool);
  300. begin
  301.   FDelphiControl.DockSite := Value;
  302. end;
  303.  
  304. procedure TControlBarX.Set_DoubleBuffered(Value: WordBool);
  305. begin
  306.   FDelphiControl.DoubleBuffered := Value;
  307. end;
  308.  
  309. procedure TControlBarX.Set_DragCursor(Value: Smallint);
  310. begin
  311.   FDelphiControl.DragCursor := TCursor(Value);
  312. end;
  313.  
  314. procedure TControlBarX.Set_DragMode(Value: TxDragMode);
  315. begin
  316.   FDelphiControl.DragMode := TDragMode(Value);
  317. end;
  318.  
  319. procedure TControlBarX.Set_Enabled(Value: WordBool);
  320. begin
  321.   FDelphiControl.Enabled := Value;
  322. end;
  323.  
  324. procedure TControlBarX.Set_ParentColor(Value: WordBool);
  325. begin
  326.   FDelphiControl.ParentColor := Value;
  327. end;
  328.  
  329. procedure TControlBarX.Set_ParentCtl3D(Value: WordBool);
  330. begin
  331.   FDelphiControl.ParentCtl3D := Value;
  332. end;
  333.  
  334. procedure TControlBarX.Set_ParentFont(Value: WordBool);
  335. begin
  336.   FDelphiControl.ParentFont := Value;
  337. end;
  338.  
  339. procedure TControlBarX.Set_Picture(const Value: IPictureDisp);
  340. begin
  341.   SetOlePicture(FDelphiControl.Picture, Value);
  342. end;
  343.  
  344. procedure TControlBarX.Set_RowSnap(Value: WordBool);
  345. begin
  346.   FDelphiControl.RowSnap := Value;
  347. end;
  348.  
  349. procedure TControlBarX.Set_Visible(Value: WordBool);
  350. begin
  351.   FDelphiControl.Visible := Value;
  352. end;
  353.  
  354. procedure TControlBarX.StickControls;
  355. begin
  356.   FDelphiControl.StickControls;
  357. end;
  358.  
  359. procedure TControlBarX.CanResizeEvent(Sender: TObject; var NewWidth,
  360.   NewHeight: Integer; var Resize: Boolean);
  361. var
  362.   TempNewWidth: Integer;
  363.   TempNewHeight: Integer;
  364.   TempResize: WordBool;
  365. begin
  366.   TempNewWidth := Integer(NewWidth);
  367.   TempNewHeight := Integer(NewHeight);
  368.   TempResize := WordBool(Resize);
  369.   if FEvents <> nil then FEvents.OnCanResize(TempNewWidth, TempNewHeight, TempResize);
  370.   NewWidth := Integer(TempNewWidth);
  371.   NewHeight := Integer(TempNewHeight);
  372.   Resize := Boolean(TempResize);
  373. end;
  374.  
  375. procedure TControlBarX.ClickEvent(Sender: TObject);
  376. begin
  377.   if FEvents <> nil then FEvents.OnClick;
  378. end;
  379.  
  380. procedure TControlBarX.ConstrainedResizeEvent(Sender: TObject;
  381.   var MinWidth, MinHeight, MaxWidth, MaxHeight: Integer);
  382. var
  383.   TempMinWidth: Integer;
  384.   TempMinHeight: Integer;
  385.   TempMaxWidth: Integer;
  386.   TempMaxHeight: Integer;
  387. begin
  388.   TempMinWidth := Integer(MinWidth);
  389.   TempMinHeight := Integer(MinHeight);
  390.   TempMaxWidth := Integer(MaxWidth);
  391.   TempMaxHeight := Integer(MaxHeight);
  392.   if FEvents <> nil then FEvents.OnConstrainedResize(TempMinWidth, TempMinHeight, TempMaxWidth, TempMaxHeight);
  393.   MinWidth := Integer(TempMinWidth);
  394.   MinHeight := Integer(TempMinHeight);
  395.   MaxWidth := Integer(TempMaxWidth);
  396.   MaxHeight := Integer(TempMaxHeight);
  397. end;
  398.  
  399. procedure TControlBarX.DblClickEvent(Sender: TObject);
  400. begin
  401.   if FEvents <> nil then FEvents.OnDblClick;
  402. end;
  403.  
  404. procedure TControlBarX.PaintEvent(Sender: TObject);
  405. begin
  406.   if FEvents <> nil then FEvents.OnPaint;
  407. end;
  408.  
  409. procedure TControlBarX.ResizeEvent(Sender: TObject);
  410. begin
  411.   if FEvents <> nil then FEvents.OnResize;
  412. end;
  413.  
  414. initialization
  415.   TActiveXControlFactory.Create(
  416.     ComServer,
  417.     TControlBarX,
  418.     TControlBar,
  419.     Class_ControlBarX,
  420.     8,
  421.     '{695CDB10-02E5-11D2-B20D-00C04FA368D4}',
  422.     OLEMISC_SIMPLEFRAME or OLEMISC_ACTSLIKELABEL,
  423.     tmApartment);
  424. end.
  425.