home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PASCAL / RMOUSE11.ZIP / RMOUSE.DOC < prev    next >
Encoding:
Text File  |  1992-10-09  |  15.2 KB  |  276 lines

  1.  
  2.  
  3.               ██████████████████████████████████████
  4.           ██████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██████
  5.       ██████▒▒▒▒▒        RMouse 1.10            ▒▒▒▒▒▒██████
  6.  ███████▒▒▒▒▒▒░░░    MOUSE Handling Toolbox     ░░░░▒▒▒▒▒▒██████
  7.  ███████▒▒▒▒▒▒░░░      Turbo Pascal 6.0         ░░░░▒▒▒▒▒▒██████
  8.  ███████▒▒▒▒▒▒░░░                               ░░░░▒▒▒▒▒▒██████
  9.  ███████▒▒▒▒▒▒░░░  Includes:                    ░░░░▒▒▒▒▒▒██████
  10.  ███████▒▒▒▒▒▒░░░                               ░░░░▒▒▒▒▒▒██████
  11.  ███████▒▒▒▒▒▒░░░  - convenient program         ░░░░▒▒▒▒▒▒██████
  12.  ███████▒▒▒▒▒▒░░░    interfface;                ░░░░▒▒▒▒▒▒██████
  13.  ███████▒▒▒▒▒▒░░░  - GRAPHIC Mouse cursor       ░░░░▒▒▒▒▒▒██████
  14.  ███████▒▒▒▒▒▒░░░    in TEXT mode for EGA       ░░░░▒▒▒▒▒▒██████
  15.  ███████▒▒▒▒▒▒░░░    VGA adapters (a'la NORTON  ░░░░▒▒▒▒▒▒██████
  16.  ███████▒▒▒▒▒▒░░░    Utilities 6.0).            ░░░░▒▒▒▒▒▒██████
  17.  ███████▒▒▒▒▒▒░░░                               ░░░░▒▒▒▒▒▒██████
  18.  ███████▒▒▒▒▒▒░░░   Copyright 1992              ░░░░▒▒▒▒▒▒██████
  19.  ███████▒▒▒▒▒▒░░░     Igor Evsikov,             ░░░░▒▒▒▒▒▒██████
  20.  ███████▒▒▒▒▒▒░░░     Sergey Shmakov and        ░░░░▒▒▒▒▒▒██████
  21.  ███████▒▒▒▒▒▒░░░     Pete Sychov               ░░░░▒▒▒▒▒▒██████
  22.  ███████▒▒▒▒▒▒░░░                               ░░░░▒▒▒▒▒▒██████
  23.       ██████▒▒▒▒▒         October 1992          ▒▒▒▒▒▒██████
  24.          ███████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██████
  25.              ██████████████████████████████████████
  26.  
  27.  
  28.   RMOUSE is a Turbo Pascal 6.0 mouse handling unit for
  29.   application programs. In comparison with another units this
  30.   one gives you advantages:
  31.  
  32.   - simple and convenient program interface. Most units (e. g.
  33.     Turbo Professional TPMOUSE) simply gives you Pascal interface
  34.     to mouse support driver interrupt INT 33. This is a powerful
  35.     tool but rather complicated and not transparent  one.  This
  36.     unit provides a set of function to handle MOUSE and KEYBOARD
  37.     events in a similar way (as in MS Windows). From our point of
  38.     view simplicity and convenience of the event driven approach
  39.     well compensate a slight loss of flexibility compared to the
  40.     custom INT 33 based technique.
  41.  
  42.   - for EGA or VGA adapters you may use GRAPHIC mouse cursor
  43.     (a'la NORTON UTILITIES 6.0) in TEXT videomode. A variety of
  44.     the mouse cursor shapes is supplied. When selected, the
  45.     graphic mouse cursor _smoothly_ moves through the screen.
  46.     Text modes 132x25, 132x43, 80x43(50) are supported.
  47.  
  48.     AMOUSE10.ZIP contains :
  49.  
  50.   - RMOUSE.TPU    Turbo Pascal 6.0 Unit
  51.   - RMOUS.DOC     with interface part of unit
  52.   - DEMO.PAS      demo source
  53.   - DEMO.INC      demo source
  54.   - DEMO.EXE      demo EXE-file
  55.   - RMOUSE.REG
  56.  
  57.   Registered  users will receive source code for RMouse.tpu
  58.   through e-mail.
  59.  
  60.     Demo SYNTAX:
  61.         >DEMO [/b] [/n] [/e] [/mXX]
  62.  
  63.         where
  64.         /b   ... black and white mode on
  65.         /n   ... normal (not grathic) mouse cursor for VGA/EGA
  66.         /e   ... switch to EGA mode with VGA adapter
  67.         /mXX ... switch screen to XX mode (for demo 132x25, 
  68.                  80x43,...)
  69.  
  70.  
  71. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  72. ░░░███████████████████████████████████████████████████████████░░░
  73. ░░░███████████████████Technical Support███████████████████████░░░
  74. ░░░███████████████████████████████████████████████████████████░░░
  75. ░░░█  Questions and comments can send for me on then e-mail  █░░░
  76. ░░░█               evsikov@lcta.jinr.dubna.su                █░░░
  77. ░░░███████████████████████████████████████████████████████████░░░
  78. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  79.  
  80.       This  program  is  being  distributed  under the Shareware
  81. concept.
  82.  
  83.       If you like this program and use it, a registration fee of
  84. $ 5.00 is required for non-profit users. Commercial users
  85. registration fee of $ 15.00. Registered  users will receive
  86. source code for RMouse.tpu through e-mail. See the file
  87. RMOUSE.REG.  Registration also includes free technical support,
  88. within the limitations of my time and resources.
  89.  
  90.       This registration fee is intended to cover my personal
  91. time and expense in developing, documenting, distributing,
  92. and supporting this toolbox.
  93.  
  94.  
  95.             Write to:
  96.  
  97.                         Igor I. Evsikov
  98.                         LCTA, JINR, (Dubna)
  99.                         P.O. Box 79, Head Post Office
  100.                         Moscow 101000 Russia
  101.  
  102.             E-mail:     evsikov@lcta5.jinr.dubna.su
  103.  
  104. {▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒}
  105. {▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒Interface Listing for  RMouse.pas▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒}
  106. {▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒}
  107.  
  108. {▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒}
  109. {▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒UNIT  RMouse.pas▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒}
  110. {▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒}
  111. {$R-,L-,D-,S-,F-,V-,A+,O+,I+,B-,E-,N-,G-,X-}
  112.  
  113. unit RMouse;
  114.  
  115. interface
  116.  
  117. uses crt,dos;
  118.  
  119.  
  120. Type
  121.  
  122.  InsideProc = procedure;
  123.                                         {████████████████████████████████████}
  124.  imageArray = array[0..15] of byte;     {█ Pixel array for arrow images     █}
  125.                                         {████████████████████████████████████}
  126.  EventStatus = (No_Event, Left_Button,  {█ Mouse Status for all mouse       █}
  127.             Right_Button, Both_Button,  {████████████████████████████████████}
  128.     Center_Button, Left_Center_Button,  {█ Status for 3-buttons mouse       █}
  129.      Right_Center_Button, All3_Button,  {████████████████████████████████████}
  130.             KBD_Key, KBD_Special_Key);  {█ Keyboard Status                  █}
  131.                                         {████████████████████████████████████}
  132.  
  133.  ImageArrowName = (
  134.              NormalArrow, DragArrow,    {████████████████████████████████████}
  135.              DragArrowL,  DragArrowR,   {█ The names of mouse cursor images █}
  136.              ClockArrow,  HandArrow,    {████████████████████████████████████}
  137.              Hand1Arrow,  Clock2Arrow,
  138.              Hand2Arrow,  BigArrow,
  139.              SU29Arrow,   Hand3Arrow,
  140.              PencilArrow, FootArrow,
  141.              PlusArrow,   Big2Arrow,
  142.              SightArrow,  UserArrow);
  143.  
  144. const                                   {████████████████████████████████████}
  145.  NumberOfButtons : integer = 0;         {█The number of buttons             █}
  146.  AMouse          : boolean = false;     {█If False then standard cursor     █}
  147.  ClickTime       : integer = 9;         {█Double click time in timer ticks  █}
  148.  MouseReady      : boolean = false;     {█True if a mouse is installed      █}
  149.  SwitchToEGA     : boolean = false;     {█if True then VGA converted to EGA █}
  150.                                         {█mode for more smoothing moves     █}
  151. var                                     {████████████████████████████████████}
  152.  CurrentStatus   : EventStatus;         {█Who pressed now                   █}
  153.                                         {████████████████████████████████████}
  154.  
  155. {▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒}
  156. {▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ MAIN PROCEDURES ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒}
  157. {▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒}
  158.  
  159.  
  160. {░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░}
  161. {░░░░░░░░░░░░░░░░░░░░░} Procedure ReInitArrowMouse; {░░░░░░░░░░░░░░░░░░░░░░░░}
  162. {░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░}
  163. {░░░██████████████████████████████████████████████████████████████████████░░░}
  164. {░░░█ Detect mouse driver, reinitialize Arrow Mouse, set Event  Handler, █░░░}
  165. {░░░█ init variables, select default Mouse Image etc.  AMouse  initiates █░░░}
  166. {░░░█ automatically, so this to use after DoneArrowMouse                 █░░░}
  167. {░░░██████████████████████████████████████████████████████████████████████░░░}
  168. {░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░}
  169.  
  170. {░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░}
  171. {░░░░░░░░░░░░░░░░░░░░░░░░░} function  GetEvent  {░░░░░░░░░░░░░░░░░░░░░░░░░░░░}
  172. {░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░}
  173. {░░░░░░░░░░}(var Ch                     : Char;                    {░░░░░░░░░}
  174. {░░░░░░░░░░} var x                      : byte;                    {░░░░░░░░░}
  175. {░░░░░░░░░░} var y                      : byte;                    {░░░░░░░░░}
  176. {░░░░░░░░░░} UserRutineIfNotProcessed   : InSideProc;              {░░░░░░░░░}
  177. {░░░░░░░░░░} UserRutineIfButtonPressed  : InSideproc): EventStatus;{░░░░░░░░░}
  178. {░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░}
  179. {░░░██████████████████████████████████████████████████████████████████████░░░}
  180. {░░░█ After any KEYBOARD or MOUSE event, Returns KBD/MOUSE Status,       █░░░}
  181. {░░░█ character under mouse cursor or from keyboard (ASCII or extended)  █░░░}
  182. {░░░█ position of mouse/KBD cursor. If there is no user routine, use     █░░░}
  183. {░░░█ PROCEDURE NothingDo, for example see DEMO.PAS...                   █░░░}
  184. {░░░██████████████████████████████████████████████████████████████████████░░░}
  185. {░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░}
  186.  
  187. {░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░}
  188. {░░░░░░░░░░░░░░░░░░░░░░} Procedure DoneArrowMouse; {░░░░░░░░░░░░░░░░░░░░░░░░░}
  189. {░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░}
  190. {░░░██████████████████████████████████████████████████████████████████████░░░}
  191. {░░░█ Shutdowm Arrow mouse CORRECTLY. Use this procedure before exit to  █░░░}
  192. {░░░█ DOS or start child process                                         █░░░}
  193. {░░░██████████████████████████████████████████████████████████████████████░░░}
  194. {░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░}
  195.  
  196.  
  197. {▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒}
  198. {▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ADDITIONAL PROCEDURES ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒}
  199. {▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒}
  200.  
  201.  
  202. {░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░}
  203. {░░░░░░░░░░░░░░░░░░░░░░░░░░} Procedure ShowArrow; {░░░░░░░░░░░░░░░░░░░░░░░░░░}
  204. {░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░}
  205. {░░░██████████████████████████████████████████████████████████████████████░░░}
  206. {░░░█ Show the mouse cursor.                                             █░░░}
  207. {░░░██████████████████████████████████████████████████████████████████████░░░}
  208. {░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░}
  209.  
  210. {░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░}
  211. {░░░░░░░░░░░░░░░░░░░░░░░░░░} Procedure  HideArrow; {░░░░░░░░░░░░░░░░░░░░░░░░░}
  212. {░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░}
  213. {░░░██████████████████████████████████████████████████████████████████████░░░}
  214. {░░░█ Hide the mouse.                                                    █░░░}
  215. {░░░██████████████████████████████████████████████████████████████████████░░░}
  216. {░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░}
  217.  
  218. {░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░}
  219. {░░░░░░░░░░░░░░░░░░░░░░} Function  WhereArrowX : byte; {░░░░░░░░░░░░░░░░░░░░░}
  220. {░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░}
  221. {░░░██████████████████████████████████████████████████████████████████████░░░}
  222. {░░░█ Return current X coordinate for mouse                              █░░░}
  223. {░░░██████████████████████████████████████████████████████████████████████░░░}
  224. {░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░}
  225.  
  226. {░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░}
  227. {░░░░░░░░░░░░░░░░░░░░░░} Function  WhereArrowY : byte; {░░░░░░░░░░░░░░░░░░░░░}
  228. {░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░}
  229. {░░░██████████████████████████████████████████████████████████████████████░░░}
  230. {░░░█ Return current Y coordinate for mouse.                             █░░░}
  231. {░░░██████████████████████████████████████████████████████████████████████░░░}
  232. {░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░}
  233.  
  234. {░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░}
  235. {░░░░░░░░░░░░░} Procedure GotoArrowXY( MouseX, MouseY : Byte); {░░░░░░░░░░░░░}
  236. {░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░}
  237. {░░░██████████████████████████████████████████████████████████████████████░░░}
  238. {░░░█ Set mouse position.                                                █░░░}
  239. {░░░██████████████████████████████████████████████████████████████████████░░░}
  240. {░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░}
  241.  
  242. {░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░}
  243. {░░░░░} Procedure SelectNotPressedImage( NameOfImage : ImageArrowName); {░░░░}
  244. {░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░}
  245. {░░░██████████████████████████████████████████████████████████████████████░░░}
  246. {░░░█ Select New notpressed mouse cursor image.                          █░░░}
  247. {░░░██████████████████████████████████████████████████████████████████████░░░}
  248. {░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░}
  249.  
  250. {░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░}
  251. {░░░░░░} Procedure SelectPressedImage( NameOfImage : ImageArrowName); {░░░░░░}
  252. {░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░}
  253. {░░░██████████████████████████████████████████████████████████████████████░░░}
  254. {░░░█ Select New pressed mouse cursor image.                             █░░░}
  255. {░░░██████████████████████████████████████████████████████████████████████░░░}
  256. {░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░}
  257.  
  258. {░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░}
  259. {░░░░░░░░░░░░░░░░░░░░░░░} Procedure LinkUserImageWith {░░░░░░░░░░░░░░░░░░░░░░}
  260. {░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░}
  261. {░░░░░░░░░░░░░░} (ArrowName                 : ImageArrowName; {░░░░░░░░░░░░░░}
  262. {░░░░░░░░░░░░░░}  var UserImage             : ImageArray);    {░░░░░░░░░░░░░░}
  263. {░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░}
  264. {░░░██████████████████████████████████████████████████████████████████████░░░}
  265. {░░░█ Define User Mouse Image for ArrowName from ImageArrowName.         █░░░}
  266. {░░░██████████████████████████████████████████████████████████████████████░░░}
  267. {░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░}
  268.  
  269. {░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░}
  270. {░░░░░░░░░░░░░░░░░░░░░░░░░░} Procedure  NothingDo; {░░░░░░░░░░░░░░░░░░░░░░░░░}
  271. {░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░}
  272. {░░░██████████████████████████████████████████████████████████████████████░░░}
  273. {░░░█ Simply return.                                                     █░░░}
  274. {░░░██████████████████████████████████████████████████████████████████████░░░}
  275. {░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░}
  276.