am2000cache.pas
上传用户:powellwoo
上传日期:2007-01-07
资源大小:109k
文件大小:15k
源码类别:

Delphi控件源码

开发平台:

C++ Builder

  1. {*******************************************************}
  2. {                                                       }
  3. {       AnimatedMenus/2000                              }
  4. {       T_AM2000_MenuItemCache Unit                     }
  5. {       English Version                                 }
  6. {                                                       }
  7. {       Copyright (c) 1997-99 AnimatedMenus.com         }
  8. {       All rights reserved.                            }
  9. {                                                       }
  10. {*******************************************************}
  11. unit am2000cache;
  12. interface
  13. uses
  14.   Windows, Classes, Graphics;
  15. type
  16.   T_AM2000_MenuItemCacheItem = class
  17.   private
  18.     FBitmap   : HBitmap;
  19.     FBmpRes   : Integer;
  20.     function GetBitmap: HBitmap;
  21.   public
  22.     ShortCuts : String;
  23.     Hint      : String;
  24.     IsDefault : Boolean;
  25.     property Bitmap : HBitmap
  26.       read GetBitmap write FBitmap;
  27.     destructor Destroy; override;
  28.   end;
  29.   T_AM2000_MenuItemCache = class(TStringList)
  30.   private
  31.     function GetItem(const Caption: String): T_AM2000_MenuItemCacheItem;
  32.   public
  33.     property Items    [const Caption: String]: T_AM2000_MenuItemCacheItem read GetItem; default;
  34.     constructor Create;
  35.     destructor Destroy; override;
  36.     function AddCache(ACaption, AShortCuts, AHint: String; ABitmap: HBitmap; ADefault: Boolean): T_AM2000_MenuItemCacheItem;
  37.     function AddCacheRes(ACaption, AShortCuts, AHint: String; ABitmapResource: Integer; ADefault: Boolean): T_AM2000_MenuItemCacheItem;
  38.     function GetDefaultBitmap(Index: Integer): HBitmap;
  39.   end;
  40. var
  41.   MenuItemCache: T_AM2000_MenuItemCache;
  42. implementation
  43. uses
  44.   SysUtils,
  45.   am2000const;
  46. { Utilities }
  47. function GetStandardCaption(S: String): String;
  48. var
  49.   J: Integer;
  50. begin
  51.   Result:= '';
  52.   S:= AnsiUpperCase(S);
  53.   for J:= 1 to Length(S) do
  54.     if IsCharAlpha(S[J])
  55.     then AppendStr(Result, S[J]);
  56. end;
  57. { T_AM2000_MenuItemCacheItem }
  58. destructor T_AM2000_MenuItemCacheItem.Destroy;
  59. begin
  60.   if FBitmap <> 0
  61.   then DeleteObject(FBitmap);
  62.   inherited;
  63. end;
  64. function T_AM2000_MenuItemCacheItem.GetBitmap: HBitmap;
  65. begin
  66.   if (FBitmap = 0) and (FBmpRes <> 0)
  67.   then FBitmap:= LoadBitmap(HInstance, MakeIntResource(FBmpRes));
  68.   Result:= FBitmap;
  69. end;
  70. { T_AM2000_MenuItemCache }
  71. constructor T_AM2000_MenuItemCache.Create;
  72. begin
  73.   inherited;
  74.   Sorted:= True;
  75.   // initialize default menu items
  76.   AddCacheRes('ADDRESSBOOK', '', 'Displays the list of contacts', BMP_AM2000_ADDRESSBOOK, True);
  77.   AddCacheRes('ALIGNCENTER', SCtrl+'+E', 'Centers the paragraph between the margins', BMP_AM2000_ALIGNCENTER, True);
  78.   AddCacheRes('ALIGNLEFT', SCtrl+'+L', 'Aligns the paragraph at the left margin', BMP_AM2000_ALIGNLEFT, True);
  79.   AddCacheRes('ALIGNRIGHT', SCtrl+'+R', 'Aligns the paragraph at the right margin', BMP_AM2000_ALIGNRIGHT, True);
  80.   AddCacheRes('AUTOPREVIEW', '', 'Shows or hides the autopreview pane', BMP_AM2000_AUTOPREVIEW, True);
  81.   AddCacheRes('BOLD', SCtrl+'+B', 'Bold Text', BMP_AM2000_BOLD, True);
  82.   AddCacheRes('BOOKMARKS', '', 'Insert a bookmark at the cursor', BMP_AM2000_BOOKMARKS, True);
  83.   AddCacheRes('BULLETS', '', 'Inserts a bullet on this line', BMP_AM2000_BULLETS, True);
  84.   AddCacheRes('CASCADE', '', 'Arranges the windows as overlapping tiles', BMP_AM2000_CASCADE, True);
  85.   AddCacheRes('CONTENTS', '', 'Displays help topics', BMP_AM2000_CONTENTS, False);
  86.   AddCacheRes('CONTENTSANDINDEX', 'F1', 'Displays help topics', BMP_AM2000_CONTENTSANDINDEX, True);
  87.   AddCacheRes('COPY', SCtrl+'+C;'+SCtrl+'+'+SIns, 'Copies the selection to the clipboard', BMP_AM2000_COPY, True);
  88.   AddCacheRes('CUT', SCtrl+'+X;'+SShift+'+'+SDel, 'Cuts the selection and moves it to the clipboard', BMP_AM2000_CUT, True);
  89.   AddCacheRes('DATE', '', 'Inserts today''s date', BMP_AM2000_SETDATE, False);
  90.   AddCacheRes('DATEANDTIME', '', 'Inserts today''s date and/or time', BMP_AM2000_DATEANDTIME, True);
  91.   AddCacheRes('DATETIME', '', 'Inserts today''s date and/or time', BMP_AM2000_DATEANDTIME, False);
  92.   AddCacheRes('DECREASEINDENT', '', 'Decrease indent', BMP_AM2000_DECREASEINDENT, True);
  93.   AddCacheRes('DELETE', ''+SDel+';'+SCtrl+'+'+SDel, 'Erases the selection', BMP_AM2000_DELETE, True);
  94.   AddCacheRes('FIND', SCtrl+'+F;F3', 'Finds the specified text in the active document', BMP_AM2000_FIND, True);
  95.   AddCacheRes('FINDNEXT', SShift+'+F3', 'Repeats the last find', BMP_AM2000_FINDNEXT, True);
  96.   AddCacheRes('FONT', '', 'View or edit the character attributes of the selected text', BMP_AM2000_SETFONT, False);
  97.   AddCacheRes('FONTSIZE', '', 'View or edit the font size of the selected text', BMP_AM2000_FONTSIZE, True);
  98.   AddCacheRes('FONTSTYLE', '', 'View or edit the font style of the selected text', BMP_AM2000_FONTSTYLE, True);
  99.   AddCacheRes('FULLSCREEN', 'F11', 'Zooms the active document to the full screen', BMP_AM2000_FULLSCREEN, True);
  100.   AddCacheRes('GOTOBOOKMARK', '', 'Moves the cursor to the specified bookmark', BMP_AM2000_SETBOOKMARK, False);
  101.   AddCacheRes('HELPONHELP', 'F1', 'Display instructions about how to use help', BMP_AM2000_HELP, True);
  102.   AddCacheRes('HOME', '', 'Browses the web', BMP_AM2000_HOME, True);
  103.   AddCacheRes('HYPERLINK', '', 'Insert a new hyperlink', BMP_AM2000_HYPERLINK, True);
  104.   AddCacheRes('INCREASEINDENT', '', 'Increase indent', BMP_AM2000_INCREASEINDENT, True);
  105.   AddCacheRes('INDENT', '', 'Increase Indent', BMP_AM2000_INCREASEINDENT, False);
  106.   AddCacheRes('ITALIC', SCtrl+'+I', 'Italic Text', BMP_AM2000_ITALIC, True);
  107.   AddCacheRes('ALIGNJUSTIFY', SCtrl+'+J', 'Justifies the paragraph between the margins', BMP_AM2000_JUSTIFY, True);
  108.   AddCacheRes('JUSTIFY', SCtrl+'+J', 'Justifies the paragraph between the margins', BMP_AM2000_JUSTIFY, False);
  109.   AddCacheRes('MARKASREAD', '', 'Marks the selected messages as read', BMP_AM2000_MARKASREAD, True);
  110.   AddCacheRes('MARKASUNREAD', '', 'Marks the selected messages as unread', BMP_AM2000_MARKASUNREAD, True);
  111.   AddCacheRes('MOVETOFOLDER', '', 'Moves selected items to another folder', BMP_AM2000_MOVETOFOLDER, True);
  112.   AddCacheRes('NEW', SCtrl+'+N', 'Create a new document', BMP_AM2000_NEW, True);
  113.   AddCacheRes('NEWFOLDER', '', 'Create a new folder', BMP_AM2000_NEWFOLDER, True);
  114.   AddCacheRes('NEWMAIL', '', 'Create a new email message', BMP_AM2000_NEWMAIL, True);
  115.   AddCacheRes('NEWMAILMESSAGE', '', 'Create a new email message', BMP_AM2000_NEWMAIL, False);
  116.   AddCacheRes('NEWNOTE', '', 'Create a new note', BMP_AM2000_NEWNOTE, True);
  117.   AddCacheRes('NEWTASK', '', 'Create a new task', BMP_AM2000_NEWTASK, True);
  118.   AddCacheRes('NOTE', '', 'Create a new note', BMP_AM2000_NEWNOTE, False);
  119.   AddCacheRes('NUMBERING', '', 'Inserts a numbering on this line', BMP_AM2000_NUMBERING, True);
  120.   AddCacheRes('OPEN', SCtrl+'+O', 'Opens an existing document from a file', BMP_AM2000_OPEN, True);
  121.   AddCacheRes('PASTE', SCtrl+'+V;'+SShift+'+'+SIns, 'Inserts the clipboard contents at the insertion point', BMP_AM2000_PASTE, True);
  122.   AddCacheRes('PRINT', SCtrl+'+P', 'Print the active document', BMP_AM2000_PRINT, True);
  123.   AddCacheRes('PRINTPREVIEW', '', 'Display full pages', BMP_AM2000_PRINTPREVIEW, True);
  124.   AddCacheRes('PROPERTIES', '', 'Display properties for the active document', BMP_AM2000_PROPERTIES, True);
  125.   AddCacheRes('REDO', SCtrl+'+'+SShift+'+Z', 'Redoes the last action that was undone', BMP_AM2000_REDO, True);
  126.   AddCacheRes('REFRESH', '', 'Updates the display to reflect any changes', BMP_AM2000_REFRESH, True);
  127.   AddCacheRes('RELOAD', '', 'Reloads the content of the current page', BMP_AM2000_REFRESH, False);
  128.   AddCacheRes('REPEAT', '', 'Repeats the last action', BMP_AM2000_REPEAT, True);
  129.   AddCacheRes('REPLACE', SCtrl+'+H', 'Replaces specific text with different text', BMP_AM2000_REPLACE, True);
  130.   AddCacheRes('SAVE', SCtrl+'+S;'+SShift+'+F12;'+SAlt+'+'+SShift+'+F2', 'Saves the active document', BMP_AM2000_SAVE, True);
  131.   AddCacheRes('SAVEALL', '', 'Saves all opened documents', BMP_AM2000_SAVEALL, True);
  132.   AddCacheRes('SEARCHTHEWEB', '', 'Searches the Word Wide Web for the specified resource', BMP_AM2000_SEARCHTHEWEB, True);
  133.   AddCacheRes('SENDMAIL', '', 'Compose and send new mail message', BMP_AM2000_SENDMAIL, True);
  134.   AddCacheRes('SETBOOKMARK', '', 'Insert a bookmark at the cursor', BMP_AM2000_SETBOOKMARK, True);
  135.   AddCacheRes('SETDATE', '', 'Set today''s date', BMP_AM2000_SETDATE, True);
  136.   AddCacheRes('SETFONT', '', 'View or edit the character attributes of the selected text', BMP_AM2000_SETFONT, True);
  137.   AddCacheRes('SETTIME', '', 'Set current time', BMP_AM2000_SETTIME, True);
  138.   AddCacheRes('SORT', '', 'Arranges items in the window', BMP_AM2000_SORT, True);
  139.   AddCacheRes('SPELLCHECK', 'F7', 'Checks the spelling in the active document', BMP_AM2000_SPELLCHECK, True);
  140.   AddCacheRes('CHECKSPELLING', 'F7', 'Checks the spelling in the active document', BMP_AM2000_SPELLCHECK, False);
  141.   AddCacheRes('SPLITWINDOW', '', 'Splits the active document window horizontally', BMP_AM2000_SPLITWINDOW, True);
  142.   AddCacheRes('TASK', '', 'Create a new task', BMP_AM2000_NEWTASK, False);
  143.   AddCacheRes('TILE', '', 'Arranges the windows as nonoverlapping tiles', BMP_AM2000_TILE, True);
  144.   AddCacheRes('TIME', '', 'Inserts current time', BMP_AM2000_SETTIME, False);
  145.   AddCacheRes('UNDERLINE', SCtrl+'+U', 'Underlined text', BMP_AM2000_UNDERLINE, True);
  146.   AddCacheRes('UNDO', SCtrl+'+Z', 'Reverses the last action', BMP_AM2000_UNDO, True);
  147.   AddCacheRes('UNINDENT', '', 'Decrease indent', BMP_AM2000_DECREASEINDENT, False);
  148.   AddCacheRes('WHATSTHIS', SShift+'+F1', 'Shows help about the selected element', BMP_AM2000_WHATSTHIS, True);
  149.   AddCacheRes('PARAGRAPH', '', 'View or edit the paragraph attributes of the selected text', BMP_AM2000_PARAGRAPH, True);
  150.   AddCacheRes('MOVEUP', '', 'Moves the selection up', BMP_AM2000_MOVEUP, True);
  151.   AddCacheRes('MOVEDOWN', '', 'Moves the selection down', BMP_AM2000_MOVEDOWN, True);
  152.   AddCacheRes('MOVELEFT', '', 'Moves the selection left', BMP_AM2000_MOVELEFT, True);
  153.   AddCacheRes('MOVERIGHT', '', 'Moves the selection right', BMP_AM2000_MOVERIGHT, True);
  154.   AddCacheRes('UPONELEVEL', '', 'Up one level', BMP_AM2000_UPONELEVEL, True);
  155.   AddCacheRes('RULER', '', 'Shows or hides the ruler', BMP_AM2000_RULER, True);
  156.   AddCacheRes('DELETE_B', '', 'Erases the selection', BMP_AM2000_DELETE2, True);
  157.   AddCacheRes('NEWFOLDER_B', '', 'Create a new folder', BMP_AM2000_NEWFOLDER2, True);
  158.   AddCacheRes('CREATE', '', 'Create a new document', BMP_AM2000_CREATE, True);
  159.   AddCacheRes('CREATE_B', '', 'Create a new document', BMP_AM2000_CREATE2, True);
  160.   AddCacheRes('BACKWARD', '', 'Return to the previous page in the hyperlink history list', BMP_AM2000_BACKWARD, True);
  161.   AddCacheRes('BACK', '', 'Return to the previous page in the hyperlink history list', BMP_AM2000_BACKWARD, False);
  162.   AddCacheRes('FORWARD', '', 'Go to the next page in the hyperlink history list', BMP_AM2000_FORWARD, True);
  163.   // system icons
  164.   AddCache('SYSTEMRESTORE', '', 'Restore the window to normal size', LoadBitmap(HInstance, 'AM2000_SYSTEMRESTORE'), False);
  165.   AddCache('SYSTEMMOVE', '', 'Change the window position', LoadBitmap(HInstance, 'AM2000_SYSTEMMOVE'), True);
  166.   AddCache('SYSTEMSIZE', '', 'Change the window size', LoadBitmap(HInstance, 'AM2000_SYSTEMSIZE'), True);
  167.   AddCache('SYSTEMMINIMIZE', '', 'Reduce the window to an icon', LoadBitmap(HInstance, 'AM2000_SYSTEMMINIMIZE'), False);
  168.   AddCache('SYSTEMMAXIMIZE', '', 'Enlarge the window to full size', LoadBitmap(HInstance, 'AM2000_SYSTEMMAXIMIZE'), False);
  169.   AddCache('SYSTEMCLOSE', '', 'Close the active window and prompts to save the pages', LoadBitmap(HInstance, 'AM2000_SYSTEMCLOSE'), True);
  170.   AddCache('CLEAR', SDel+';'+SShift+'+'+SDel, 'Erases the selection', 0, False);
  171.   AddCache('SELECTALL', SCtrl+'+A', 'Select the entire document', 0, False);
  172.   AddCache('GOTO', SCtrl+'+G', 'Moves the cursor to the specified line', 0, False);
  173.   AddCache('PAGESETUP', '', 'Change the printing options', 0, False);
  174.   AddCache('PRINTERSETUP', '', 'Change the printer and printing options', 0, False);
  175.   AddCache('SAVEAS', 'F12;'+SCtrl+'+'+SShift+'+S', 'Saves a copy of the document in a separate file', 0, False);
  176.   AddCache('PASTELINK', '', 'Insert Clipboard contents and a link to its source', 0, False);
  177.   AddCache('PASTESPECIAL', '', 'Insert Clipboard contents with options', 0, False);
  178.   AddCache('NEWWINDOW', '', 'Open another window for the active document', 0, False);
  179.   AddCache('ARRANGEICONS', '', 'Arrange icons at the bottom of the window', 0, False);
  180.   AddCache('EDIT', '', 'Contains commands for the clipboard, finding text, and editing links', 0, False);
  181.   AddCache('VIEW', '', 'Contains commands for controlling the display of your document', 0, False);
  182.   AddCache('FILE', '', 'Contains commands for saving documents and opening saved documents', 0, False);
  183.   AddCache('SEARCH', '', 'Contains commands for searching through your document', 0, False);
  184.   AddCache('TOOLS', '', 'Contains additional commands for working with external tools', 0, False);
  185.   AddCache('WINDOW', '', 'Contains commands for controlling position of windows of your application', 0, False);
  186.   AddCache('HELP', '', 'Contains commands for solving problem situations', 0, False);
  187. end;
  188. destructor T_AM2000_MenuItemCache.Destroy;
  189. var
  190.   I: Integer;
  191. begin
  192.   for I:= 0 to Count -1 do
  193.     Objects[I].Free;
  194.   inherited;
  195. end;
  196. function T_AM2000_MenuItemCache.AddCache(ACaption, AShortCuts, AHint: String;
  197.   ABitmap: HBitmap; ADefault: Boolean): T_AM2000_MenuItemCacheItem;
  198. var
  199.   Index: Integer;
  200. begin
  201.   ACaption:= GetStandardCaption(ACaption);
  202.   if not Find(ACaption, Index) then begin
  203.     Result:= T_AM2000_MenuItemCacheItem.Create;
  204.     AddObject(ACaption, Result);
  205.   end
  206.   else
  207.     Result:= T_AM2000_MenuItemCacheItem(Objects[Index]);
  208.   Result.ShortCuts:= AShortCuts;
  209.   Result.Hint:=      AHint;
  210.   Result.Bitmap:=    ABitmap;
  211.   Result.IsDefault:= ADefault;
  212. end;
  213. function T_AM2000_MenuItemCache.AddCacheRes(ACaption, AShortCuts, AHint: String;
  214.   ABitmapResource: Integer; ADefault: Boolean): T_AM2000_MenuItemCacheItem;
  215. begin
  216.   Result:= AddCache(ACaption, AShortCuts, AHint, 0, ADefault);
  217.   Result.FBmpRes:= ABitmapResource;
  218. end;
  219. function T_AM2000_MenuItemCache.GetItem(const Caption: String): T_AM2000_MenuItemCacheItem;
  220. var
  221.   Index: Integer;
  222.   S: String;
  223. begin
  224.   S:= GetStandardCaption(Caption);
  225.   if Find(S, Index)
  226.   then Result:= T_AM2000_MenuItemCacheItem(Objects[Index])
  227.   else Result:= AddCache(S, '', '', LoadBitmap(hInstance, PChar('BMP_AM2000_' + S)), False);
  228. end;
  229. function T_AM2000_MenuItemCache.GetDefaultBitmap(Index: Integer): HBitmap;
  230. var
  231.   I: Integer;
  232. begin
  233.   Result:= 0;
  234.   for I:= 0 to Count -1 do
  235.     with T_AM2000_MenuItemCacheItem(Objects[I]) do begin
  236.       if IsDefault
  237.       then Dec(Index);
  238.       if Index < 0 then begin
  239.         Result:= Bitmap;
  240.         Exit;
  241.       end;
  242.     end;
  243. end;
  244. initialization
  245.   MenuItemCache:= T_AM2000_MenuItemCache.Create;
  246. finalization
  247.   MenuItemCache.Free;
  248.   MenuItemCache:= nil;
  249. end.