1{%mainunit appkit.pas} 2(* 3 NSMenu.h 4 Application Kit 5 Copyright (c) 1996-2005, Apple Computer, Inc. 6 All rights reserved. 7*) 8 9{$ifdef HEADER} 10{$ifndef NSMENU_PAS_H} 11{$define NSMENU_PAS_H} 12 13{$include AppKitDefines.inc} 14{$include NSMenuItem.inc} 15 {.$ifdef MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3} 16 {.$endif} 17 {.$ifdef MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3} 18 {.$endif} 19 20//APPKIT_EXTERN NSString *NSMenuWillSendActionNotification; 21//APPKIT_EXTERN NSString *NSMenuDidSendActionNotification; 22//APPKIT_EXTERN NSString *NSMenuDidAddItemNotification; 23//APPKIT_EXTERN NSString *NSMenuDidRemoveItemNotification; 24//APPKIT_EXTERN NSString *NSMenuDidChangeItemNotification; 25//APPKIT_EXTERN NSString *NSMenuDidEndTrackingNotification AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER; 26{$endif} 27{$endif} 28 29{$ifdef FORWARD} 30 NSMenu = class; 31 32{$endif} 33 34{$ifdef CLASSES} 35{$ifndef NSMENU_PAS_C} 36{$define NSMENU_PAS_C} 37 38{$include AppKitDefines.inc} 39{$include NSMenuItem.inc} 40 41 { NSMenu } 42 43 NSMenu = class(NSObject) 44 public 45 class function getClass: lobjc.id; override; 46 // All instance variables are private 47 class procedure setMenuZone(_aZone: NSZone); 48 class function menuZone: NSZone; 49 class procedure popUpContextMenu_withEvent_forView(_menu: lobjc.id {NSMenu}; _event: lobjc.id {NSEvent}; _view: lobjc.id {NSView}); 50 {.$ifdef MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3} 51 class procedure popUpContextMenu_withEvent_forView_withFont(_menu: lobjc.id {NSMenu}; _event: lobjc.id {NSEvent}; _view: lobjc.id {NSView}; _font: lobjc.id {NSFont}); 52 {.$endif} 53 {.$ifdef MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_2} 54 class procedure setMenuBarVisible(_visible: LongBool); 55 class function menuBarVisible: LongBool; 56 {.$endif} 57 constructor initWithTitle(_aTitle: CFStringRef); 58 procedure setTitle(_aString: CFStringRef); 59 function title: CFStringRef; 60 procedure setSupermenu(_supermenu: lobjc.id {NSMenu}); 61 function supermenu: lobjc.id;{NSMenu} 62 // Never call the set method directly it is there only for subclassers. 63 procedure insertItem_atIndex(_newItem: lobjc.id; __index: Integer); 64 procedure addItem(_newItem: lobjc.id); 65 function insertItemWithTitle_action_keyEquivalent_atIndex(_aString: CFStringRef; _aSelector: SEL; _charCode: CFStringRef; __index: Integer): lobjc.id; 66 function addItemWithTitle_action_keyEquivalent(_aString: CFStringRef; _aSelector: SEL; _charCode: CFStringRef): lobjc.id; 67 procedure removeItemAtIndex(__index: Integer); 68 procedure removeItem(_item: lobjc.id); 69 procedure setSubmenu_forItem(_aMenu: lobjc.id {NSMenu}; _anItem: lobjc.id); 70 function itemArray: CFArrayRef; 71 function numberOfItems: Integer; 72 function indexOfItem(__index: lobjc.id): Integer; 73 function indexOfItemWithTitle(_aTitle: CFStringRef): Integer; 74 function indexOfItemWithTag(_aTag: Integer): Integer; 75 function indexOfItemWithRepresentedObject(__object: lobjc.id): Integer; 76 function indexOfItemWithSubmenu(_submenu: lobjc.id {NSMenu}): Integer; 77 function indexOfItemWithTarget_andAction(_target: lobjc.id; _actionSelector: SEL): Integer; 78 function itemAtIndex(__index: Integer): lobjc.id; 79 function itemWithTitle(_aTitle: CFStringRef): lobjc.id; 80 function itemWithTag(_tag: Integer): lobjc.id; 81 procedure setAutoenablesItems(_flag: LongBool); 82 function autoenablesItems: LongBool; 83 function performKeyEquivalent(_theEvent: lobjc.id {NSEvent}): LongBool; 84 procedure update; 85 procedure setMenuChangedMessagesEnabled(_flag: LongBool); 86 function menuChangedMessagesEnabled: LongBool; 87 procedure itemChanged(_item: lobjc.id); 88 procedure helpRequested(_eventPtr: lobjc.id {NSEvent}); 89 procedure setMenuRepresentation(_menuRep: lobjc.id); 90 function menuRepresentation: lobjc.id; 91 procedure setContextMenuRepresentation(_menuRep: lobjc.id); 92 function contextMenuRepresentation: lobjc.id; 93 procedure setTearOffMenuRepresentation(_menuRep: lobjc.id); 94 function tearOffMenuRepresentation: lobjc.id; 95 function isTornOff: LongBool; 96 // These methods are platform specific. They really make little sense on Windows. 97 // Their use is discouraged. 98 function attachedMenu: lobjc.id;{NSMenu} 99 function isAttached: LongBool; 100 procedure sizeToFit; 101 function locationForSubmenu(_aSubmenu: lobjc.id {NSMenu}): NSPoint; 102 procedure performActionForItemAtIndex(__index: Integer); 103 {.$ifdef MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3} 104 procedure setDelegate(_anObject: lobjc.id); 105 function delegate: lobjc.id; 106 {.$endif} 107 {.$ifdef MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4} 108 function menuBarHeight: Single; 109 {.$endif} 110 procedure submenuAction(_sender: lobjc.id); 111 end; 112 113 {.$ifdef MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3} 114 {.$endif} 115{$endif} 116{$endif} 117 118{$ifdef IMPLEMENTATION} 119const 120 StrNSMenu_NSMenu = 'NSMenu'; 121 StrNSMenu_setMenuZone = 'setMenuZone:'; 122 StrNSMenu_menuZone = 'menuZone'; 123 StrNSMenu_popUpContextMenu_withEvent_forView = 'popUpContextMenu:withEvent:forView:'; 124 StrNSMenu_popUpContextMenu_withEvent_forView_withFont = 'popUpContextMenu:withEvent:forView:withFont:'; 125 StrNSMenu_setMenuBarVisible = 'setMenuBarVisible:'; 126 StrNSMenu_menuBarVisible = 'menuBarVisible'; 127 StrNSMenu_initWithTitle = 'initWithTitle:'; 128 StrNSMenu_setTitle = 'setTitle:'; 129 StrNSMenu_title = 'title'; 130 StrNSMenu_setSupermenu = 'setSupermenu:'; 131 StrNSMenu_supermenu = 'supermenu'; 132 StrNSMenu_insertItem_atIndex = 'insertItem:atIndex:'; 133 StrNSMenu_addItem = 'addItem:'; 134 StrNSMenu_insertItemWithTitle_action_keyEquivalent_atIndex = 'insertItemWithTitle:action:keyEquivalent:atIndex:'; 135 StrNSMenu_addItemWithTitle_action_keyEquivalent = 'addItemWithTitle:action:keyEquivalent:'; 136 StrNSMenu_removeItemAtIndex = 'removeItemAtIndex:'; 137 StrNSMenu_removeItem = 'removeItem:'; 138 StrNSMenu_setSubmenu_forItem = 'setSubmenu:forItem:'; 139 StrNSMenu_itemArray = 'itemArray'; 140 StrNSMenu_numberOfItems = 'numberOfItems'; 141 StrNSMenu_indexOfItem = 'indexOfItem:'; 142 StrNSMenu_indexOfItemWithTitle = 'indexOfItemWithTitle:'; 143 StrNSMenu_indexOfItemWithTag = 'indexOfItemWithTag:'; 144 StrNSMenu_indexOfItemWithRepresentedObject = 'indexOfItemWithRepresentedObject:'; 145 StrNSMenu_indexOfItemWithSubmenu = 'indexOfItemWithSubmenu:'; 146 StrNSMenu_indexOfItemWithTarget_andAction = 'indexOfItemWithTarget:andAction:'; 147 StrNSMenu_itemAtIndex = 'itemAtIndex:'; 148 StrNSMenu_itemWithTitle = 'itemWithTitle:'; 149 StrNSMenu_itemWithTag = 'itemWithTag:'; 150 StrNSMenu_setAutoenablesItems = 'setAutoenablesItems:'; 151 StrNSMenu_autoenablesItems = 'autoenablesItems'; 152 StrNSMenu_performKeyEquivalent = 'performKeyEquivalent:'; 153 StrNSMenu_update = 'update'; 154 StrNSMenu_setMenuChangedMessagesEnabled = 'setMenuChangedMessagesEnabled:'; 155 StrNSMenu_menuChangedMessagesEnabled = 'menuChangedMessagesEnabled'; 156 StrNSMenu_itemChanged = 'itemChanged:'; 157 StrNSMenu_helpRequested = 'helpRequested:'; 158 StrNSMenu_setMenuRepresentation = 'setMenuRepresentation:'; 159 StrNSMenu_menuRepresentation = 'menuRepresentation'; 160 StrNSMenu_setContextMenuRepresentation = 'setContextMenuRepresentation:'; 161 StrNSMenu_contextMenuRepresentation = 'contextMenuRepresentation'; 162 StrNSMenu_setTearOffMenuRepresentation = 'setTearOffMenuRepresentation:'; 163 StrNSMenu_tearOffMenuRepresentation = 'tearOffMenuRepresentation'; 164 StrNSMenu_isTornOff = 'isTornOff'; 165 StrNSMenu_attachedMenu = 'attachedMenu'; 166 StrNSMenu_isAttached = 'isAttached'; 167 StrNSMenu_sizeToFit = 'sizeToFit'; 168 StrNSMenu_locationForSubmenu = 'locationForSubmenu:'; 169 StrNSMenu_performActionForItemAtIndex = 'performActionForItemAtIndex:'; 170 StrNSMenu_setDelegate = 'setDelegate:'; 171 StrNSMenu_delegate = 'delegate'; 172 StrNSMenu_menuBarHeight = 'menuBarHeight'; 173 174 StrNSMenu_submenuAction = 'submenuAction:'; 175 176{ NSMenu } 177 178class function NSMenu.getClass: lobjc.id; 179begin 180 Result := objc_getClass(StrNSMenu_NSMenu); 181end; 182 183class procedure NSMenu.setMenuZone(_aZone: NSZone); 184type 185 TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_aZone: NSZone); cdecl; 186var 187 vmethod: TmsgSendWrapper; 188begin 189 vmethod := TmsgSendWrapper(@objc_msgSend); 190 vmethod(getClass, sel_registerName(PChar(StrNSMenu_setMenuZone)), _aZone); 191end; 192 193class function NSMenu.menuZone: NSZone; 194begin 195 Result := NSZone(objc_msgSend(getClass, sel_registerName(PChar(StrNSMenu_menuZone)), [])); 196end; 197 198class procedure NSMenu.popUpContextMenu_withEvent_forView(_menu: lobjc.id {NSMenu}; _event: lobjc.id {NSEvent}; _view: lobjc.id {NSView}); 199type 200 TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_menu: lobjc.id {NSMenu}; _event: lobjc.id {NSEvent}; _view: lobjc.id {NSView}); cdecl; 201var 202 vmethod: TmsgSendWrapper; 203begin 204 vmethod := TmsgSendWrapper(@objc_msgSend); 205 vmethod(getClass, sel_registerName(PChar(StrNSMenu_popUpContextMenu_withEvent_forView)), _menu, _event, _view); 206end; 207 208{.$ifdef MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3} 209class procedure NSMenu.popUpContextMenu_withEvent_forView_withFont(_menu: lobjc.id {NSMenu}; _event: lobjc.id {NSEvent}; _view: lobjc.id {NSView}; _font: lobjc.id {NSFont}); 210type 211 TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_menu: lobjc.id {NSMenu}; _event: lobjc.id {NSEvent}; _view: lobjc.id {NSView}; _font: lobjc.id {NSFont}); cdecl; 212var 213 vmethod: TmsgSendWrapper; 214begin 215 vmethod := TmsgSendWrapper(@objc_msgSend); 216 vmethod(getClass, sel_registerName(PChar(StrNSMenu_popUpContextMenu_withEvent_forView_withFont)), _menu, _event, _view, _font); 217end; 218 219{.$endif} 220{.$ifdef MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_2} 221class procedure NSMenu.setMenuBarVisible(_visible: LongBool); 222type 223 TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_visible: LongBool); cdecl; 224var 225 vmethod: TmsgSendWrapper; 226begin 227 vmethod := TmsgSendWrapper(@objc_msgSend); 228 vmethod(getClass, sel_registerName(PChar(StrNSMenu_setMenuBarVisible)), _visible); 229end; 230 231class function NSMenu.menuBarVisible: LongBool; 232begin 233 Result := {%H-}LongBool(objc_msgSend(getClass, sel_registerName(PChar(StrNSMenu_menuBarVisible)), [])); 234end; 235 236{.$endif} 237constructor NSMenu.initWithTitle(_aTitle: CFStringRef); 238type 239 TmsgSendWrapper = function (param1: lobjc.id; param2: SEL;_aTitle: CFStringRef): lobjc.id; cdecl; 240var 241 vmethod: TmsgSendWrapper; 242begin 243 ClassID := getClass(); 244 allocbuf := objc_msgSend(ClassID, sel_registerName(PChar(Str_alloc)), []); 245 vmethod := TmsgSendWrapper(@objc_msgSend); 246 Handle := vmethod(allocbuf, sel_registerName(PChar(StrNSMenu_initWithTitle)), _aTitle); 247end; 248 249procedure NSMenu.setTitle(_aString: CFStringRef); 250type 251 TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_aString: CFStringRef); cdecl; 252var 253 vmethod: TmsgSendWrapper; 254begin 255 vmethod := TmsgSendWrapper(@objc_msgSend); 256 vmethod(Handle, sel_registerName(PChar(StrNSMenu_setTitle)), _aString); 257end; 258 259function NSMenu.title: CFStringRef; 260begin 261 Result := CFStringRef(objc_msgSend(Handle, sel_registerName(PChar(StrNSMenu_title)), [])); 262end; 263 264procedure NSMenu.setSupermenu(_supermenu: lobjc.id {NSMenu}); 265type 266 TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_supermenu: lobjc.id {NSMenu}); cdecl; 267var 268 vmethod: TmsgSendWrapper; 269begin 270 vmethod := TmsgSendWrapper(@objc_msgSend); 271 vmethod(Handle, sel_registerName(PChar(StrNSMenu_setSupermenu)), _supermenu); 272end; 273 274function NSMenu.supermenu: lobjc.id; 275begin 276 Result := lobjc.id(objc_msgSend(Handle, sel_registerName(PChar(StrNSMenu_supermenu)), [])); 277end; 278 279procedure NSMenu.insertItem_atIndex(_newItem: lobjc.id; __index: Integer); 280type 281 TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_newItem: lobjc.id; __index: Integer); cdecl; 282var 283 vmethod: TmsgSendWrapper; 284begin 285 vmethod := TmsgSendWrapper(@objc_msgSend); 286 vmethod(Handle, sel_registerName(PChar(StrNSMenu_insertItem_atIndex)), _newItem, __index); 287end; 288 289procedure NSMenu.addItem(_newItem: lobjc.id); 290type 291 TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_newItem: lobjc.id); cdecl; 292var 293 vmethod: TmsgSendWrapper; 294begin 295 vmethod := TmsgSendWrapper(@objc_msgSend); 296 vmethod(Handle, sel_registerName(PChar(StrNSMenu_addItem)), _newItem); 297end; 298 299function NSMenu.insertItemWithTitle_action_keyEquivalent_atIndex(_aString: CFStringRef; _aSelector: SEL; _charCode: CFStringRef; __index: Integer): lobjc.id; 300type 301 TmsgSendWrapper = function (param1: lobjc.id; param2: SEL;_aString: CFStringRef; _aSelector: SEL; _charCode: CFStringRef; __index: Integer): lobjc.id; cdecl; 302var 303 vmethod: TmsgSendWrapper; 304begin 305 vmethod := TmsgSendWrapper(@objc_msgSend); 306 Result := lobjc.id(vmethod(Handle, sel_registerName(PChar(StrNSMenu_insertItemWithTitle_action_keyEquivalent_atIndex)), _aString, _aSelector, _charCode, __index)); 307end; 308 309function NSMenu.addItemWithTitle_action_keyEquivalent(_aString: CFStringRef; _aSelector: SEL; _charCode: CFStringRef): lobjc.id; 310type 311 TmsgSendWrapper = function (param1: lobjc.id; param2: SEL;_aString: CFStringRef; _aSelector: SEL; _charCode: CFStringRef): lobjc.id; cdecl; 312var 313 vmethod: TmsgSendWrapper; 314begin 315 vmethod := TmsgSendWrapper(@objc_msgSend); 316 Result := lobjc.id(vmethod(Handle, sel_registerName(PChar(StrNSMenu_addItemWithTitle_action_keyEquivalent)), _aString, _aSelector, _charCode)); 317end; 318 319procedure NSMenu.removeItemAtIndex(__index: Integer); 320type 321 TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;__index: Integer); cdecl; 322var 323 vmethod: TmsgSendWrapper; 324begin 325 vmethod := TmsgSendWrapper(@objc_msgSend); 326 vmethod(Handle, sel_registerName(PChar(StrNSMenu_removeItemAtIndex)), __index); 327end; 328 329procedure NSMenu.removeItem(_item: lobjc.id); 330type 331 TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_item: lobjc.id); cdecl; 332var 333 vmethod: TmsgSendWrapper; 334begin 335 vmethod := TmsgSendWrapper(@objc_msgSend); 336 vmethod(Handle, sel_registerName(PChar(StrNSMenu_removeItem)), _item); 337end; 338 339procedure NSMenu.setSubmenu_forItem(_aMenu: lobjc.id {NSMenu}; _anItem: lobjc.id); 340type 341 TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_aMenu: lobjc.id {NSMenu}; _anItem: lobjc.id); cdecl; 342var 343 vmethod: TmsgSendWrapper; 344begin 345 vmethod := TmsgSendWrapper(@objc_msgSend); 346 vmethod(Handle, sel_registerName(PChar(StrNSMenu_setSubmenu_forItem)), _aMenu, _anItem); 347end; 348 349function NSMenu.itemArray: CFArrayRef; 350begin 351 Result := CFArrayRef(objc_msgSend(Handle, sel_registerName(PChar(StrNSMenu_itemArray)), [])); 352end; 353 354function NSMenu.numberOfItems: Integer; 355begin 356 Result := {%H-}Integer(objc_msgSend(Handle, sel_registerName(PChar(StrNSMenu_numberOfItems)), [])); 357end; 358 359function NSMenu.indexOfItem(__index: lobjc.id): Integer; 360type 361 TmsgSendWrapper = function (param1: lobjc.id; param2: SEL;__index: lobjc.id): Integer; cdecl; 362var 363 vmethod: TmsgSendWrapper; 364begin 365 vmethod := TmsgSendWrapper(@objc_msgSend); 366 Result := Integer(vmethod(Handle, sel_registerName(PChar(StrNSMenu_indexOfItem)), __index)); 367end; 368 369function NSMenu.indexOfItemWithTitle(_aTitle: CFStringRef): Integer; 370type 371 TmsgSendWrapper = function (param1: lobjc.id; param2: SEL;_aTitle: CFStringRef): Integer; cdecl; 372var 373 vmethod: TmsgSendWrapper; 374begin 375 vmethod := TmsgSendWrapper(@objc_msgSend); 376 Result := Integer(vmethod(Handle, sel_registerName(PChar(StrNSMenu_indexOfItemWithTitle)), _aTitle)); 377end; 378 379function NSMenu.indexOfItemWithTag(_aTag: Integer): Integer; 380type 381 TmsgSendWrapper = function (param1: lobjc.id; param2: SEL;_aTag: Integer): Integer; cdecl; 382var 383 vmethod: TmsgSendWrapper; 384begin 385 vmethod := TmsgSendWrapper(@objc_msgSend); 386 Result := Integer(vmethod(Handle, sel_registerName(PChar(StrNSMenu_indexOfItemWithTag)), _aTag)); 387end; 388 389function NSMenu.indexOfItemWithRepresentedObject(__object: lobjc.id): Integer; 390type 391 TmsgSendWrapper = function (param1: lobjc.id; param2: SEL;__object: lobjc.id): Integer; cdecl; 392var 393 vmethod: TmsgSendWrapper; 394begin 395 vmethod := TmsgSendWrapper(@objc_msgSend); 396 Result := Integer(vmethod(Handle, sel_registerName(PChar(StrNSMenu_indexOfItemWithRepresentedObject)), __object)); 397end; 398 399function NSMenu.indexOfItemWithSubmenu(_submenu: lobjc.id {NSMenu}): Integer; 400type 401 TmsgSendWrapper = function (param1: lobjc.id; param2: SEL;_submenu: lobjc.id {NSMenu}): Integer; cdecl; 402var 403 vmethod: TmsgSendWrapper; 404begin 405 vmethod := TmsgSendWrapper(@objc_msgSend); 406 Result := Integer(vmethod(Handle, sel_registerName(PChar(StrNSMenu_indexOfItemWithSubmenu)), _submenu)); 407end; 408 409function NSMenu.indexOfItemWithTarget_andAction(_target: lobjc.id; _actionSelector: SEL): Integer; 410type 411 TmsgSendWrapper = function (param1: lobjc.id; param2: SEL;_target: lobjc.id; _actionSelector: SEL): Integer; cdecl; 412var 413 vmethod: TmsgSendWrapper; 414begin 415 vmethod := TmsgSendWrapper(@objc_msgSend); 416 Result := Integer(vmethod(Handle, sel_registerName(PChar(StrNSMenu_indexOfItemWithTarget_andAction)), _target, _actionSelector)); 417end; 418 419function NSMenu.itemAtIndex(__index: Integer): lobjc.id; 420type 421 TmsgSendWrapper = function (param1: lobjc.id; param2: SEL;__index: Integer): lobjc.id; cdecl; 422var 423 vmethod: TmsgSendWrapper; 424begin 425 vmethod := TmsgSendWrapper(@objc_msgSend); 426 Result := lobjc.id(vmethod(Handle, sel_registerName(PChar(StrNSMenu_itemAtIndex)), __index)); 427end; 428 429function NSMenu.itemWithTitle(_aTitle: CFStringRef): lobjc.id; 430type 431 TmsgSendWrapper = function (param1: lobjc.id; param2: SEL;_aTitle: CFStringRef): lobjc.id; cdecl; 432var 433 vmethod: TmsgSendWrapper; 434begin 435 vmethod := TmsgSendWrapper(@objc_msgSend); 436 Result := lobjc.id(vmethod(Handle, sel_registerName(PChar(StrNSMenu_itemWithTitle)), _aTitle)); 437end; 438 439function NSMenu.itemWithTag(_tag: Integer): lobjc.id; 440type 441 TmsgSendWrapper = function (param1: lobjc.id; param2: SEL;_tag: Integer): lobjc.id; cdecl; 442var 443 vmethod: TmsgSendWrapper; 444begin 445 vmethod := TmsgSendWrapper(@objc_msgSend); 446 Result := lobjc.id(vmethod(Handle, sel_registerName(PChar(StrNSMenu_itemWithTag)), _tag)); 447end; 448 449procedure NSMenu.setAutoenablesItems(_flag: LongBool); 450type 451 TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_flag: LongBool); cdecl; 452var 453 vmethod: TmsgSendWrapper; 454begin 455 vmethod := TmsgSendWrapper(@objc_msgSend); 456 vmethod(Handle, sel_registerName(PChar(StrNSMenu_setAutoenablesItems)), _flag); 457end; 458 459function NSMenu.autoenablesItems: LongBool; 460begin 461 Result := {%H-}LongBool(objc_msgSend(Handle, sel_registerName(PChar(StrNSMenu_autoenablesItems)), [])); 462end; 463 464function NSMenu.performKeyEquivalent(_theEvent: lobjc.id {NSEvent}): LongBool; 465type 466 TmsgSendWrapper = function (param1: lobjc.id; param2: SEL;_theEvent: lobjc.id {NSEvent}): LongBool; cdecl; 467var 468 vmethod: TmsgSendWrapper; 469begin 470 vmethod := TmsgSendWrapper(@objc_msgSend); 471 Result := LongBool(vmethod(Handle, sel_registerName(PChar(StrNSMenu_performKeyEquivalent)), _theEvent)); 472end; 473 474procedure NSMenu.update; 475begin 476 objc_msgSend(Handle, sel_registerName(PChar(StrNSMenu_update)), []); 477end; 478 479procedure NSMenu.setMenuChangedMessagesEnabled(_flag: LongBool); 480type 481 TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_flag: LongBool); cdecl; 482var 483 vmethod: TmsgSendWrapper; 484begin 485 vmethod := TmsgSendWrapper(@objc_msgSend); 486 vmethod(Handle, sel_registerName(PChar(StrNSMenu_setMenuChangedMessagesEnabled)), _flag); 487end; 488 489function NSMenu.menuChangedMessagesEnabled: LongBool; 490begin 491 Result := {%H-}LongBool(objc_msgSend(Handle, sel_registerName(PChar(StrNSMenu_menuChangedMessagesEnabled)), [])); 492end; 493 494procedure NSMenu.itemChanged(_item: lobjc.id); 495type 496 TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_item: lobjc.id); cdecl; 497var 498 vmethod: TmsgSendWrapper; 499begin 500 vmethod := TmsgSendWrapper(@objc_msgSend); 501 vmethod(Handle, sel_registerName(PChar(StrNSMenu_itemChanged)), _item); 502end; 503 504procedure NSMenu.helpRequested(_eventPtr: lobjc.id {NSEvent}); 505type 506 TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_eventPtr: lobjc.id {NSEvent}); cdecl; 507var 508 vmethod: TmsgSendWrapper; 509begin 510 vmethod := TmsgSendWrapper(@objc_msgSend); 511 vmethod(Handle, sel_registerName(PChar(StrNSMenu_helpRequested)), _eventPtr); 512end; 513 514procedure NSMenu.setMenuRepresentation(_menuRep: lobjc.id); 515type 516 TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_menuRep: lobjc.id); cdecl; 517var 518 vmethod: TmsgSendWrapper; 519begin 520 vmethod := TmsgSendWrapper(@objc_msgSend); 521 vmethod(Handle, sel_registerName(PChar(StrNSMenu_setMenuRepresentation)), _menuRep); 522end; 523 524function NSMenu.menuRepresentation: lobjc.id; 525begin 526 Result := lobjc.id(objc_msgSend(Handle, sel_registerName(PChar(StrNSMenu_menuRepresentation)), [])); 527end; 528 529procedure NSMenu.setContextMenuRepresentation(_menuRep: lobjc.id); 530type 531 TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_menuRep: lobjc.id); cdecl; 532var 533 vmethod: TmsgSendWrapper; 534begin 535 vmethod := TmsgSendWrapper(@objc_msgSend); 536 vmethod(Handle, sel_registerName(PChar(StrNSMenu_setContextMenuRepresentation)), _menuRep); 537end; 538 539function NSMenu.contextMenuRepresentation: lobjc.id; 540begin 541 Result := lobjc.id(objc_msgSend(Handle, sel_registerName(PChar(StrNSMenu_contextMenuRepresentation)), [])); 542end; 543 544procedure NSMenu.setTearOffMenuRepresentation(_menuRep: lobjc.id); 545type 546 TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_menuRep: lobjc.id); cdecl; 547var 548 vmethod: TmsgSendWrapper; 549begin 550 vmethod := TmsgSendWrapper(@objc_msgSend); 551 vmethod(Handle, sel_registerName(PChar(StrNSMenu_setTearOffMenuRepresentation)), _menuRep); 552end; 553 554function NSMenu.tearOffMenuRepresentation: lobjc.id; 555begin 556 Result := lobjc.id(objc_msgSend(Handle, sel_registerName(PChar(StrNSMenu_tearOffMenuRepresentation)), [])); 557end; 558 559function NSMenu.isTornOff: LongBool; 560begin 561 Result := {%H-}LongBool(objc_msgSend(Handle, sel_registerName(PChar(StrNSMenu_isTornOff)), [])); 562end; 563 564function NSMenu.attachedMenu: lobjc.id; 565begin 566 Result := lobjc.id(objc_msgSend(Handle, sel_registerName(PChar(StrNSMenu_attachedMenu)), [])); 567end; 568 569function NSMenu.isAttached: LongBool; 570begin 571 Result := {%H-}LongBool(objc_msgSend(Handle, sel_registerName(PChar(StrNSMenu_isAttached)), [])); 572end; 573 574procedure NSMenu.sizeToFit; 575begin 576 objc_msgSend(Handle, sel_registerName(PChar(StrNSMenu_sizeToFit)), []); 577end; 578 579function NSMenu.locationForSubmenu(_aSubmenu: lobjc.id {NSMenu}): NSPoint; 580type 581 TmsgSendWrapper = procedure (result_param: Pointer; param1: lobjc.id; param2: SEL;_aSubmenu: lobjc.id {NSMenu}); cdecl; 582var 583 vmethod: TmsgSendWrapper; 584begin 585 vmethod := TmsgSendWrapper(@objc_msgSend_fpret); 586 vmethod(@Result, Handle, sel_registerName(PChar(StrNSMenu_locationForSubmenu)), _aSubmenu); 587end; 588 589procedure NSMenu.performActionForItemAtIndex(__index: Integer); 590type 591 TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;__index: Integer); cdecl; 592var 593 vmethod: TmsgSendWrapper; 594begin 595 vmethod := TmsgSendWrapper(@objc_msgSend); 596 vmethod(Handle, sel_registerName(PChar(StrNSMenu_performActionForItemAtIndex)), __index); 597end; 598 599{.$ifdef MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3} 600procedure NSMenu.setDelegate(_anObject: lobjc.id); 601type 602 TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_anObject: lobjc.id); cdecl; 603var 604 vmethod: TmsgSendWrapper; 605begin 606 vmethod := TmsgSendWrapper(@objc_msgSend); 607 vmethod(Handle, sel_registerName(PChar(StrNSMenu_setDelegate)), _anObject); 608end; 609 610function NSMenu.delegate: lobjc.id; 611begin 612 Result := lobjc.id(objc_msgSend(Handle, sel_registerName(PChar(StrNSMenu_delegate)), [])); 613end; 614 615{.$endif} 616{.$ifdef MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4} 617function NSMenu.menuBarHeight: Single; 618begin 619 Result := Single(objc_msgSend(Handle, sel_registerName(PChar(StrNSMenu_menuBarHeight)), [])); 620end; 621 622{.$endif} 623procedure NSMenu.submenuAction(_sender: lobjc.id); 624type 625 TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_sender: lobjc.id); cdecl; 626var 627 vmethod: TmsgSendWrapper; 628begin 629 vmethod := TmsgSendWrapper(@objc_msgSend); 630 vmethod(Handle, sel_registerName(PChar(StrNSMenu_submenuAction)), _sender); 631end; 632 633{$endif} 634