home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 September / Chip_2001-09_cd1.bin / zkuste / delphi / kolekce / d56 / RMCTL.ZIP / rmScrnCtrls.pas < prev    next >
Pascal/Delphi Source File  |  2001-06-22  |  8KB  |  292 lines

  1. {================================================================================
  2. Copyright (C) 1997-2001 Mills Enterprise
  3.  
  4. Unit     : rmScrnCtrls
  5. Purpose  : This is a basic unit containing the controls that are used by the
  6.            rmControls for various types of dropdowns.
  7. Date     : 09-24-2000
  8. Author   : Ryan J. Mills
  9. Version  : 1.80
  10. ================================================================================}
  11.  
  12. unit rmScrnCtrls;
  13.  
  14. interface
  15.  
  16. {$I CompilerDefines.INC}
  17.  
  18. uses Windows, Messages, Controls, Classes, StdCtrls, ComCtrls, rmPathTreeView;
  19.  
  20. const
  21.    WM_CaptureKeyDown = WM_USER + $B900; //These constants were found using WinSight.....
  22.    WM_CaptureKeyUP = WM_CaptureKeyDown + 1;
  23.  
  24. type
  25.   TrmCustomScreenListBox = class(TListBox)
  26.   private
  27.    { Private declarations }
  28.    procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
  29.    procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
  30.    procedure WMLButtonDown(var Message: TWMLButtonDown); message WM_LBUTTONDOWN;
  31.    procedure WMMouseMove(var Message: TWMMouse); message WM_MOUSEMOVE;
  32.   protected
  33.    { Protected declarations }
  34.    procedure CreateParams(var Params: TCreateParams); override;
  35.    procedure CreateWnd; override;
  36.    procedure VisibleChanging; override;
  37.   public
  38.    { Public declarations }
  39.    procedure WndProc(var Message: TMessage); override;
  40.   end;
  41.  
  42.   TrmCustomScreenTreeView = class(TTreeView)
  43.   private
  44.    { Private declarations }
  45.    procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
  46.    procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
  47.    procedure WMLButtonDown(var Message: TWMLButtonDown); message WM_LBUTTONDOWN;
  48.    procedure WMMouseMove(var Message: TWMMouse); message WM_MOUSEMOVE;
  49.   protected
  50.    { Protected declarations }
  51.    procedure CreateParams(var Params: TCreateParams); override;
  52.    procedure CreateWnd; override;
  53.    procedure VisibleChanging; override;
  54.   public
  55.    { Public declarations }
  56.    procedure WndProc(var Message: TMessage); override;
  57.   end;
  58.  
  59.   TrmCustomScreenPathTreeView = class(TrmPathTreeView)
  60.   private
  61.    { Private declarations }
  62.    procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
  63.    procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
  64.    procedure WMLButtonDown(var Message: TWMLButtonDown); message WM_LBUTTONDOWN;
  65.    procedure WMMouseMove(var Message: TWMMouse); message WM_MOUSEMOVE;
  66.   protected
  67.    { Protected declarations }
  68.    procedure CreateParams(var Params: TCreateParams); override;
  69.    procedure CreateWnd; override;
  70.    procedure VisibleChanging; override;
  71.   public
  72.    { Public declarations }
  73.    procedure WndProc(var Message: TMessage); override;
  74.   end;
  75.  
  76. implementation
  77.  
  78. { TrmCustomScreenListBox }
  79.  
  80. procedure TrmCustomScreenListBox.CMMouseEnter(var Message: TMessage);
  81. begin
  82.   inherited;
  83.   ReleaseCapture;
  84. end;
  85.  
  86. procedure TrmCustomScreenListBox.CMMouseLeave(var Message: TMessage);
  87. begin
  88.   inherited;
  89.   SetCaptureControl(self);
  90. end;
  91.  
  92. procedure TrmCustomScreenListBox.CreateParams(var Params: TCreateParams);
  93. begin
  94.   inherited CreateParams(Params);
  95.   with Params do
  96.   begin
  97.     Style := Style or WS_BORDER;
  98.     ExStyle := WS_EX_TOOLWINDOW or WS_EX_TOPMOST;
  99.     WindowClass.Style := CS_SAVEBITS;
  100.   end;
  101. end;
  102.  
  103. procedure TrmCustomScreenListBox.CreateWnd;
  104. begin
  105.   inherited CreateWnd;
  106.   Windows.SetParent(Handle, 0);
  107.   CallWindowProc(DefWndProc, Handle, wm_SetFocus, 0, 0);
  108. end;
  109.  
  110. procedure TrmCustomScreenListBox.VisibleChanging;
  111. begin
  112.   if Visible = false then
  113.     SetCaptureControl(self)
  114.   else
  115.     ReleaseCapture;
  116.   inherited;
  117. end;
  118.  
  119. procedure TrmCustomScreenListBox.WMLButtonDown(
  120.   var Message: TWMLButtonDown);
  121. begin
  122.   if not ptInRect(clientrect, point(message.xpos, message.ypos)) then
  123.     Visible := false;
  124.   inherited;
  125. end;
  126.  
  127. procedure TrmCustomScreenListBox.WMMouseMove(var Message: TWMMouse);
  128. begin
  129.   if ptInRect(clientrect, point(message.xpos, message.ypos)) then
  130.     ReleaseCapture;
  131.   inherited;
  132. end;
  133.  
  134. procedure TrmCustomScreenListBox.WndProc(var Message: TMessage);
  135. begin
  136.   case Message.Msg of
  137.     WM_CaptureKeyDown:
  138.       begin
  139.         Message.msg := wm_KeyDown;
  140.       end;
  141.     WM_CaptureKeyup:
  142.       begin
  143.         Message.msg := wm_KeyUp;
  144.       end;
  145.   end;
  146.   inherited WndProc(Message);
  147. end;
  148.  
  149. { TrmCustomScreenTreeView }
  150.  
  151. procedure TrmCustomScreenTreeView.CMMouseEnter(var Message: TMessage);
  152. begin
  153.    inherited;
  154.    ReleaseCapture;
  155. end;
  156.  
  157. procedure TrmCustomScreenTreeView.CMMouseLeave(var Message: TMessage);
  158. begin
  159.    inherited;
  160.    SetCaptureControl(self);
  161. end;
  162.  
  163. procedure TrmCustomScreenTreeView.CreateParams(var Params: TCreateParams);
  164. begin
  165.    inherited CreateParams(Params);
  166.    with Params do
  167.    begin
  168.       Style := Style or WS_BORDER;
  169.       ExStyle := WS_EX_TOOLWINDOW or WS_EX_TOPMOST;
  170.       WindowClass.Style := CS_SAVEBITS;
  171.    end;
  172. end;
  173.  
  174. procedure TrmCustomScreenTreeView.CreateWnd;
  175. begin
  176.    inherited CreateWnd;
  177.    Windows.SetParent(Handle, 0);
  178.    CallWindowProc(DefWndProc, Handle, wm_SetFocus, 0, 0);
  179. end;
  180.  
  181. procedure TrmCustomScreenTreeView.VisibleChanging;
  182. begin
  183.    if Visible = false then
  184.       SetCaptureControl(self)
  185.    else
  186.       ReleaseCapture;
  187.    inherited;
  188. end;
  189.  
  190. procedure TrmCustomScreenTreeView.WMLButtonDown(
  191.    var Message: TWMLButtonDown);
  192. begin
  193.    if not ptInRect(clientrect, point(message.xpos, message.ypos)) then
  194.       Visible := false;
  195.    inherited;
  196. end;
  197.  
  198. procedure TrmCustomScreenTreeView.WMMouseMove(var Message: TWMMouse);
  199. begin
  200.    if ptInRect(clientrect, point(message.xpos, message.ypos)) then
  201.       ReleaseCapture;
  202.    inherited;
  203. end;
  204.  
  205. procedure TrmCustomScreenTreeView.WndProc(var Message: TMessage);
  206. begin
  207.    case Message.Msg of
  208.       WM_CaptureKeyDown:
  209.          begin
  210.             Message.msg := wm_KeyDown;
  211.          end;
  212.       WM_CaptureKeyup:
  213.          begin
  214.             Message.msg := wm_KeyUp;
  215.          end;
  216.    end;
  217.    inherited WndProc(Message);
  218. end;
  219.  
  220. { TrmCustomScreenPathTreeView }
  221.  
  222. procedure TrmCustomScreenPathTreeView.CMMouseEnter(var Message: TMessage);
  223. begin
  224.    inherited;
  225.    ReleaseCapture;
  226. end;
  227.  
  228. procedure TrmCustomScreenPathTreeView.CMMouseLeave(var Message: TMessage);
  229. begin
  230.    inherited;
  231.    SetCaptureControl(self);
  232. end;
  233.  
  234. procedure TrmCustomScreenPathTreeView.CreateParams(var Params: TCreateParams);
  235. begin
  236.    inherited CreateParams(Params);
  237.    with Params do
  238.    begin
  239.       Style := Style or WS_BORDER;
  240.       ExStyle := WS_EX_TOOLWINDOW or WS_EX_TOPMOST;
  241.       WindowClass.Style := CS_SAVEBITS;
  242.    end;
  243. end;
  244.  
  245. procedure TrmCustomScreenPathTreeView.CreateWnd;
  246. begin
  247.    inherited CreateWnd;
  248.    Windows.SetParent(Handle, 0);
  249.    CallWindowProc(DefWndProc, Handle, wm_SetFocus, 0, 0);
  250. end;
  251.  
  252. procedure TrmCustomScreenPathTreeView.VisibleChanging;
  253. begin
  254.    if Visible = false then
  255.       SetCaptureControl(self)
  256.    else
  257.       ReleaseCapture;
  258.    inherited;
  259. end;
  260.  
  261. procedure TrmCustomScreenPathTreeView.WMLButtonDown(
  262.    var Message: TWMLButtonDown);
  263. begin
  264.    if not ptInRect(clientrect, point(message.xpos, message.ypos)) then
  265.       Visible := false;
  266.    inherited;
  267. end;
  268.  
  269. procedure TrmCustomScreenPathTreeView.WMMouseMove(var Message: TWMMouse);
  270. begin
  271.    if ptInRect(clientrect, point(message.xpos, message.ypos)) then
  272.       ReleaseCapture;
  273.    inherited;
  274. end;
  275.  
  276. procedure TrmCustomScreenPathTreeView.WndProc(var Message: TMessage);
  277. begin
  278.    case Message.Msg of
  279.       WM_CaptureKeyDown:
  280.          begin
  281.             Message.msg := wm_KeyDown;
  282.          end;
  283.       WM_CaptureKeyup:
  284.          begin
  285.             Message.msg := wm_KeyUp;
  286.          end;
  287.    end;
  288.    inherited WndProc(Message);
  289. end;
  290.  
  291. end.
  292.