1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3045 3046 3047 3048 3049 3050 3051 3052 3053 3054 3055 3056 3057 3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 3083 3084 3085 3086 3087 3088 3089 3090 3091 3092 3093 3094 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120 3121 3122 3123 3124 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 3136 3137 3138 3139 3140 3141 3142 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3155 3156 3157 3158 3159 3160 3161 3162 3163 3164 3165 3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 3176 3177 3178 3179 3180 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3233 3234 3235 3236 3237 3238 3239 3240 3241 3242 3243 3244 3245 3246 3247 3248 3249 3250 3251 3252 3253 3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 3275 3276 3277 3278 3279 3280 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 3293 3294 3295 3296 3297 3298 3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 3310 3311 3312 3313 3314 3315 3316 3317 3318 3319 3320 3321 3322 3323 3324 3325 3326 3327 3328 3329 3330 3331 3332 3333 3334 3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 3347 3348 3349 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359 3360 3361 3362 3363 3364 3365 3366 3367 3368 3369 3370 3371 3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 3383 3384 3385 3386 3387 3388 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 3400 3401 3402 3403 3404 3405 3406 3407 3408 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 3419 3420 3421 3422 3423 3424 3425 3426 3427 3428 3429 3430 3431 3432 3433 3434 3435 3436 3437 3438 3439 3440 3441 3442 3443 3444 3445 3446 3447 3448 3449 3450 3451 3452 3453 3454 3455 3456 3457 3458 3459 3460 3461 3462 3463 3464 3465 3466 3467 3468 3469 3470 3471 3472 3473 3474 3475 3476 3477 3478 3479 3480 3481 3482 3483 3484 3485 3486 3487 3488 3489 3490 3491 3492 3493 3494 3495 3496 3497 3498 3499 3500 3501 3502 3503 3504 3505 3506 3507 3508 3509 3510 3511 3512 3513 3514 3515 3516 3517 3518 3519 3520 3521 3522 3523 3524 3525 3526 3527 3528 3529 3530 3531 3532 3533 3534 3535 3536 3537 3538 3539 3540 3541 3542 3543 3544 3545 3546 3547 3548 3549 3550 3551 3552 3553 3554 3555 3556 3557 3558 3559 3560 3561 3562 3563 3564 3565 3566 3567 3568 3569 3570 3571 3572 3573 3574 3575 3576 3577 3578 3579 3580 3581 3582 3583 3584 3585 3586 3587 3588 3589 3590 3591 3592 3593 3594 3595 3596 3597 3598 3599 3600 3601 3602 3603 3604 3605 3606 3607 3608 3609 3610 3611 3612 3613 3614 3615 3616 3617 3618 3619 3620 3621 3622 3623 3624 3625 3626 3627 3628 3629 3630 3631 3632 3633 3634 3635 3636 3637 3638 3639 3640 3641 3642 3643 3644 3645 3646 3647 3648 3649 3650 3651 3652 3653 3654 3655 3656 3657 3658 3659 3660 3661 3662 3663 3664 3665 3666 3667 3668 3669 3670 3671 3672 3673 3674 3675 3676 3677 3678 3679 3680 3681 3682 3683 3684 3685 3686 3687 3688 3689 3690 3691 3692 3693 3694 3695 3696 3697 3698 3699 3700 3701 3702 3703 3704 3705 3706 3707 3708 3709 3710 3711 3712 3713 3714 3715 3716 3717 3718 3719 3720 3721 3722 3723 3724 3725 3726 3727 3728 3729 3730 3731 3732 3733 3734 3735 3736 3737 3738 3739 3740 3741 3742 3743 3744 3745 3746 3747 3748 3749 3750 3751 3752 3753 3754 3755 3756 3757 3758 3759 3760 3761 3762 3763 3764 3765 3766 3767 3768 3769 3770 3771 3772 3773 3774 3775 3776 3777 3778 3779 3780 3781 3782 3783 3784 3785 3786 3787 3788 3789 3790 3791 3792 3793 3794 3795 3796 3797 3798 3799 3800 3801 3802 3803 3804 3805 3806 3807 3808 3809 3810 3811 3812 3813 3814 3815 3816 3817 3818 3819 3820 3821 3822 3823 3824 3825 3826 3827 3828 3829 3830 3831 3832 3833 3834 3835 3836 3837 3838 3839 3840 3841 3842 3843 3844 3845 3846 3847 3848 3849 3850 3851 3852 3853 3854 3855 3856 3857 3858 3859 3860 3861 3862 3863 3864 3865 3866 3867 3868 3869 3870 3871 3872 3873 3874 3875 3876 3877 3878 3879 3880 3881 3882 3883 3884 3885 3886 3887 3888 3889 3890 3891 3892 3893 3894 3895 3896 3897 3898 3899 3900 3901 3902 3903 3904 3905 3906 3907 3908 3909 3910 3911 3912 3913 3914 3915 3916 3917 3918 3919 3920 3921 3922 3923 3924 3925 3926 3927 3928 3929 3930 3931 3932 3933 3934 3935 3936 3937 3938 3939 3940 3941 3942 3943 3944 3945 3946 3947 3948 3949 3950 3951 3952 3953 3954 3955 3956 3957 3958 3959 3960 3961 3962 3963 3964 3965 3966 3967 3968 3969 3970 3971 3972 3973 3974 3975 3976 3977 3978 3979 3980 3981 3982 3983 3984 3985 3986 3987 3988 3989 3990 3991 3992 3993 3994 3995 3996 3997 3998 3999 4000 4001 4002 4003 4004 4005 4006 4007 4008 4009 4010 4011 4012 4013 4014 4015 4016 4017 4018 4019 4020 4021 4022 4023 4024 4025 4026 4027 4028 4029 4030 4031 4032 4033 4034 4035 4036 4037 4038 4039 4040 4041 4042 4043 4044 4045 4046 4047 4048 4049 4050 4051 4052 4053 4054 4055 4056 4057 4058 4059 4060 4061 4062 4063 4064 4065 4066 4067 4068 4069 4070 4071 4072 4073 4074 4075 4076 4077 4078 4079 4080 4081 4082 4083 4084 4085 4086 4087 4088 4089 4090 4091 4092 4093 4094 4095 4096 4097 4098 4099 4100 4101 4102 4103 4104 4105 4106 4107 4108 4109 4110 4111 4112 4113 4114 4115 4116 4117 4118 4119 4120 4121 4122 4123 4124 4125 4126 4127 4128 4129 4130 4131 4132 4133 4134 4135 4136 4137 4138 4139 4140 4141 4142 4143 4144 4145 4146 4147 4148 4149 4150 4151 4152 4153 4154 4155 4156 4157 4158 4159 4160 4161 4162 4163 4164 4165 4166 4167 4168 4169 4170 4171 4172 4173 4174 4175 4176 4177 4178 4179 4180 4181 4182 4183 4184 4185 4186 4187 4188 4189 4190 4191 4192 4193 4194 4195 4196 4197 4198 4199 4200 4201 4202 4203 4204 4205 4206 4207 4208 4209 4210 4211 4212 4213 4214 4215 4216 4217 4218 4219 4220 4221 4222 4223 4224 4225 4226 4227 4228 4229 4230 4231 4232 4233 4234 4235 4236 4237 4238 4239 4240 4241 4242 4243 4244 4245 4246 4247 4248 4249 4250 4251 4252 4253 4254 4255 4256 4257 4258 4259 4260 4261 4262 4263 4264 4265 4266 4267 4268 4269 4270 4271 4272 4273 4274 4275 4276 4277 4278 4279 4280 4281 4282 4283 4284 4285 4286 4287 4288 4289 4290 4291 4292 4293 4294 4295 4296 4297 4298 4299 4300 4301 4302 4303 4304 4305 4306 4307 4308 4309 4310 4311 4312 4313 4314 4315 4316 4317 4318 4319 4320 4321 4322 4323 4324 4325 4326 4327 4328 4329 4330 4331 4332 4333 4334 4335 4336 4337 4338 4339 4340 4341 4342 4343 4344 4345 4346 4347 4348 4349 4350 4351 4352 4353 4354 4355 4356 4357 4358 4359 4360 4361 4362 4363 4364 4365 4366 4367 4368 4369 4370 4371 4372 4373 4374 4375 4376 4377 4378 4379 4380 4381 4382 4383 4384 4385 4386 4387 4388 4389 4390 4391 4392 4393 4394 4395 4396 4397 4398 4399 4400 4401 4402 4403 4404 4405 4406 4407 4408 4409 4410 4411 4412 4413 4414 4415 4416 4417 4418 4419 4420 4421 4422 4423 4424 4425 4426 4427 4428 4429 4430 4431 4432 4433 4434 4435 4436 4437 4438 4439 4440 4441 4442 4443 4444 4445 4446 4447 4448 4449 4450 4451 4452 4453 4454 4455 4456 4457 4458 4459 4460 4461 4462 4463 4464 4465 4466 4467 4468 4469 4470 4471 4472 4473 4474 4475 4476 4477 4478 4479 4480 4481 4482 4483 4484 4485 4486 4487 4488 4489 4490 4491 4492 4493 4494 4495 4496 4497 4498 4499 4500 4501 4502 4503 4504 4505 4506 4507 4508 4509 4510 4511 4512 4513 4514 4515 4516 4517 4518 4519 4520 4521 4522 4523 4524 4525 4526 4527 4528 4529 4530 4531 4532 4533 4534 4535 4536 4537 4538 4539 4540 4541 4542 4543 4544 4545 4546 4547 4548 4549 4550 4551 4552 4553 4554 4555 4556 4557 4558 4559 4560 4561 4562 4563 4564 4565 4566 4567 4568 4569 4570 4571 4572 4573 4574 4575 4576 4577 4578 4579 4580 4581 4582 4583 4584 4585 4586 4587 4588 4589 4590 4591 4592 4593 4594 4595 4596 4597 4598 4599 4600 4601 4602 4603 4604 4605 4606 4607 4608 4609 4610 4611 4612 4613 4614 4615 4616 4617 4618 4619 4620 4621 4622 4623 4624 4625 4626 4627 4628 4629 4630 4631 4632 4633 4634 4635 4636 4637 4638 4639 4640 4641 4642 4643 4644 4645 4646 4647 4648 4649 4650 4651 4652 4653 4654 4655 4656 4657 4658 4659 4660 4661 4662 4663 4664 4665 4666 4667 4668 4669 4670 4671 4672 4673 4674 4675 4676 4677 4678 4679 4680 4681 4682 4683 4684 4685 4686 4687 4688 4689 4690 4691 4692 4693 4694 4695 4696 4697 4698 4699 4700 4701 4702 4703 4704 4705 4706 4707 4708 4709 4710 4711 4712 4713 4714 4715 4716 4717 4718 4719 4720 4721 4722 4723 4724 4725 4726 4727 4728 4729 4730 4731 4732 4733 4734 4735 4736 4737 4738 4739 4740 4741 4742 4743 4744 4745 4746 4747 4748 4749 4750 4751 4752 4753 4754 4755 4756 4757 4758 4759 4760 4761 4762 4763 4764 4765 4766 4767 4768 4769 4770 4771 4772 4773 4774 4775 4776 4777 4778 4779 4780 4781 4782 4783 4784 4785 4786 4787 4788 4789 4790 4791 4792 4793 4794 4795 4796 4797 4798 4799 4800 4801 4802 4803 4804 4805 4806 4807 4808 4809 4810 4811 4812 4813 4814 4815 4816 4817 4818 4819 4820 4821 4822 4823 4824 4825 4826 4827 4828 4829 4830 4831 4832 4833 4834 4835 4836 4837 4838 4839 4840 4841 4842 4843 4844 4845 4846 4847 4848 4849 4850 4851 4852 4853 4854 4855 4856 4857 4858 4859 4860 4861 4862 4863 4864 4865 4866 4867 4868 4869 4870 4871 4872 4873 4874 4875 4876 4877 4878 4879 4880 4881 4882 4883 4884 4885 4886 4887 4888 4889 4890 4891 4892 4893 4894 4895 4896 4897 4898 4899 4900 4901 4902 4903 4904 4905 4906 4907 4908 4909 4910 4911 4912 4913 4914 4915 4916 4917 4918 4919 4920 4921 4922 4923 4924 4925 4926 4927 4928 4929 4930 4931 4932 4933 4934 4935 4936 4937 4938 4939 4940 4941 4942 4943 4944 4945 4946 4947 4948 4949 4950 4951 4952 4953 4954 4955 4956 4957 4958 4959 4960 4961 4962 4963 4964 4965 4966 4967 4968 4969 4970 4971 4972 4973 4974 4975 4976 4977 4978 4979 4980 4981 4982 4983 4984 4985 4986 4987 4988 4989 4990 4991 4992 4993 4994 4995 4996 4997 4998 4999 5000 5001 5002 5003 5004 5005 5006 5007 5008 5009 5010 5011 5012 5013 5014 5015 5016 5017 5018 5019 5020 5021 5022 5023 5024 5025 5026 5027 5028 5029 5030 5031 5032 5033 5034 5035 5036 5037 5038 5039 5040 5041 5042 5043 5044 5045 5046 5047 5048 5049 5050 5051 5052 5053 5054 5055 5056 5057 5058 5059 5060 5061 5062 5063 5064 5065 5066 5067 5068 5069 5070 5071 5072 5073 5074 5075 5076 5077 5078 5079 5080 5081 5082 5083 5084 5085 5086 5087 5088 5089 5090 5091 5092 5093 5094 5095 5096 5097 5098 5099 5100 5101 5102 5103 5104 5105 5106 5107 5108 5109 5110 5111 5112 5113 5114 5115 5116 5117 5118 5119 5120 5121 5122 5123 5124 5125 5126 5127 5128 5129 5130 5131 5132 5133 5134 5135 5136 5137 5138 5139 5140 5141 5142 5143 5144 5145 5146 5147 5148 5149 5150 5151 5152 5153 5154 5155 5156 5157 5158 5159 5160 5161 5162 5163 5164 5165 5166 5167 5168 5169 5170 5171 5172 5173 5174 5175 5176 5177 5178 5179 5180 5181 5182 5183 5184 5185 5186 5187 5188 5189 5190 5191 5192 5193 5194 5195 5196 5197 5198 5199 5200 5201 5202 5203 5204 5205 5206 5207 5208 5209 5210 5211 5212 5213 5214 5215 5216 5217 5218 5219 5220 5221 5222 5223 5224 5225 5226 5227 5228 5229 5230 5231 5232 5233 5234 5235 5236 5237 5238 5239 5240 5241 5242 5243 5244 5245 5246 5247 5248 5249 5250 5251 5252 5253 5254 5255 5256 5257 5258 5259 5260 5261 5262 5263 5264 5265 5266 5267 5268 5269 5270 5271 5272 5273 5274 5275 5276 5277 5278 5279 5280 5281 5282 5283 5284 5285 5286 5287 5288 5289 5290 5291 5292 5293 5294 5295 5296 5297 5298 5299 5300 5301 5302 5303 5304 5305 5306 5307 5308 5309 5310 5311 5312 5313 5314 5315 5316 5317 5318 5319 5320 5321 5322 5323 5324 5325 5326 5327 5328 5329 5330 5331 5332 5333 5334 5335 5336 5337 5338 5339 5340 5341 5342 5343 5344 5345 5346 5347 5348 5349 5350 5351 5352 5353 5354 5355 5356 5357 5358 5359 5360 5361 5362 5363 5364 5365 5366 5367 5368 5369 5370 5371 5372 5373 5374 5375 5376 5377 5378 5379 5380 5381 5382 5383 5384 5385 5386 5387 5388 5389 5390 5391 5392 5393 5394 5395 5396 5397 5398 5399 5400 5401 5402 5403 5404 5405 5406 5407 5408 5409 5410 5411 5412 5413 5414 5415 5416 5417 5418 5419 5420 5421 5422 5423 5424 5425 5426 5427 5428 5429 5430 5431 5432 5433 5434 5435 5436 5437 5438 5439 5440 5441 5442 5443 5444 5445 5446 5447 5448 5449 5450 5451 5452 5453 5454 5455 5456 5457 5458 5459 5460 5461 5462 5463 5464 5465 5466 5467 5468 5469 5470 5471 5472 5473 5474 5475 5476 5477 5478 5479 5480 5481 5482 5483 5484 5485 5486 5487 5488 5489 5490 5491 5492 5493 5494 5495 5496 5497 5498 5499 5500 5501 5502 5503 5504 5505 5506 5507 5508 5509 5510 5511 5512 5513 5514 5515 5516 5517 5518 5519 5520 5521 5522 5523 5524 5525 5526 5527 5528 5529 5530 5531 5532
|
<?xml version="1.0" encoding="UTF-8"?>
<!--
Documentation for LCL (Lazarus Component Library) and LazUtils (Lazarus
Utilities) are published under the Creative Commons Attribution-ShareAlike 4.0
International public license.
https://creativecommons.org/licenses/by-sa/4.0/legalcode.txt
https://gitlab.com/freepascal.org/lazarus/lazarus/-/blob/main/docs/cc-by-sa-4-0.txt
Copyright (c) 1997-2025, by the Lazarus Development Team.
-->
<fpdoc-descriptions>
<package name="lcl">
<!--
====================================================================
Menus
====================================================================
-->
<module name="Menus">
<short>Implements menus used in forms created with the Lazarus IDE.</short>
<descr>
<p>
<file>menus.pp</file> contains classes, types, and routines used to implement
menus used on TForm instances in the Lazarus Component Library (<b>LCL</b>).
</p>
<p>
Authors: Shane Miller and Marc Weustink
</p>
<p>
The following components are added to the Lazarus IDE component palette:
</p>
<p>
<b>Standard</b> Tab
</p>
<ul>
<li>TMainMenu</li>
<li>TPopupMenu</li>
</ul>
<p>
<b>Registered</b> but not displayed:
</p>
<ul>
<li>TMenuItem</li>
</ul>
</descr>
<!-- unresolved references -->
<element name="Types"/>
<element name="Classes"/>
<element name="SysUtils"/>
<element name="LCLStrConsts"/>
<element name="LCLType"/>
<element name="LCLProc"/>
<element name="LCLIntf"/>
<element name="LCLClasses"/>
<element name="LResources"/>
<element name="LMessages"/>
<element name="ActnList"/>
<element name="Graphics"/>
<element name="ImgList"/>
<element name="Themes"/>
<element name="LazMethodList"/>
<element name="LazLoggerBase"/>
<element name="EMenuError">
<short>
Exception raised when an error occurs while accessing a menu item.
</short>
<descr/>
<seealso>
<link id="TMenuItem.Items"/>
<link id="TMenuItem.Delete"/>
<link id="TMenuItem.Remove"/>
</seealso>
</element>
<element name="TGlyphShowMode">
<short>
<var>TGlyphShowMode</var> indicates if the glyph image for a menu or button
should be shown, and in which circumstances.
</short>
<descr>
<p>
<var>TGlyphShowMode</var> is the type used to implement the
TMenuItem.GlyphShowMode property.
</p>
</descr>
<seealso>
<link id="TMenuItem.GlyphShowMode"/>
<link id="#lcl.forms.TApplication.ShowMenuGlyphs">TApplication.ShowMenuGlyphs</link>
<link id="#lcl.forms.TApplicationShowGlyphs">TApplicationShowGlyphs</link>
<link id="#lcl.buttons.TCustomBitBtn.GlyphShowMode">TCustomBitBtn.GlyphShowMode</link>
</seealso>
</element>
<element name="TGlyphShowMode.gsmAlways">
<short>Always show the glyph image.</short>
</element>
<element name="TGlyphShowMode.gsmNever">
<short>Never show the glyph image.</short>
</element>
<element name="TGlyphShowMode.gsmApplication">
<short>
Uses the setting in the Application.ShowMenuGlyphs property.
</short>
</element>
<element name="TGlyphShowMode.gsmSystem">
<short>Uses the theme element setting in ThemeServices.</short>
</element>
<element name="TMenuChangeEvent">
<short>
Specifies an event handler signalled when a menu or menu item is changed.
</short>
<descr>
<p>
<var>TMenuChangeEvent</var> defines an event handler signalled when a menu or
a menu item has been changed.
</p>
<p>
TMenuChangeEvent is the type used for the <var>OnChange</var> property in
both <var>TMenu</var> and <var>TMenuItem</var>, and implemented in the
<var>TMenu.MenuChanged</var> method.
</p>
</descr>
<seealso>
<link id="TMenu.OnChange"/>
<link id="TMenu.MenuChanged"/>
<link id="TMenuItem.MenuChanged"/>
</seealso>
</element>
<element name="TMenuChangeEvent.Sender">
<short>Object for the event notification.</short>
</element>
<element name="TMenuChangeEvent.Source">
<short>Menu or menu item where the change occurred.</short>
</element>
<element name="TMenuChangeEvent.Rebuild">
<short><b>True</b> to rebuild the menu item hierarchy.</short>
</element>
<element name="TMenuItemAutoFlag">
<short>
Represents line reduction modes available for menu items.
</short>
<descr>
<p>
<var>TMenuItemAutoFlag</var> is an enumerated type with values that represent
the line reduction modes available for maintaining menu item instances.
TMenuItemAutoFlag controls when a menu or menu items are checked and
updated to eliminate redundant separators between adjacent menu items.
</p>
<p>
TMenuItemAutoFlag is the type used for the <var>AutoLineReduction</var>
property in <var>TMenuItem</var>.
</p>
</descr>
<version>
Added in LCL version 4.0.
</version>
<seealso>
<link id="TMenuItem.AutoLineReduction"/>
</seealso>
</element>
<element name="TMenuItemAutoFlag.maAutomatic">
<short>
The parent menu (including a top-level menu item) is automatically examined and
updated when the menu is displayed.
</short>
</element>
<element name="TMenuItemAutoFlag.maManual">
<short>
The parent menu (including a top-level menu item) is automatically examined and
updated when a method which performs the action is explicitly called.
</short>
</element>
<element name="TMenuItemAutoFlag.maParent">
<short>
A menu item is examined and updated using the line reduction applied to the
parent menu item. maParent is not relevant for TMenu (TMainMenu) instances;
they do not have a parent menu item and the value is translated at run-time to
maAutomatic.
</short>
</element>
<element name="TMenuAutoFlag">
<short>
Range type which represents the valid TMenuItemAutoFlag values for TMenu
instances.
</short>
<descr>
<p>
TMenuAutoFlag is the type used for the <var>AutoLineReduction</var>
property in <var>TMenu</var> and descendent classes.
</p>
</descr>
<version>
Added in LCL version 4.0.
</version>
<seealso>
<link id="TMenu.AutoLineReduction"/>
<link id="TMenuItemAutoFlag"/>
</seealso>
</element>
<element name="TMenuActionLink">
<short>
<var>TMenuActionLink</var>: defines the link between a selected menu item and
its corresponding action.
</short>
<descr>
<p>
<var>TMenuActionLink</var> defines the link between a selected menu item and
its corresponding action. Properties are protected and not readily accessible
by application programmers.</p>
</descr>
</element>
<element name="TMenuActionLink.FClient">
<short>Stored a reference to the menu item for the link.</short>
</element>
<element name="TMenuActionLink.AssignClient">
<short>
Stores the specified value as the client for the linked action.
</short>
<descr>
<p>
Overridden in <var>TMenuActionLink</var> to ensure that the value in
<var>AClient</var> is cast to the <var>TMenuItem</var> type used for the
internal client.
</p>
</descr>
<seealso>
<link id="#rtl.classes.TBasicActionLink">TBasicActionLink</link>
</seealso>
</element>
<element name="TMenuActionLink.AssignClient.AClient">
<short>
Object instance which is the client for the linked action in the menu.
</short>
</element>
<element name="TMenuActionLink.IsAutoCheckLinked">
<short>
Determines if the menu item and action have the same value in their AutoCheck
properties.
</short>
<descr/>
<seealso/>
</element>
<element name="TMenuActionLink.IsAutoCheckLinked.Result">
<short>
<b>True</b> when AutoCheck is the same in the menu item and the action.
</short>
</element>
<element name="TMenuActionLink.IsCaptionLinked" link="#lcl.actnlist.TActionLink.IsCaptionLinked"/>
<element name="TMenuActionLink.IsCaptionLinked.Result"/>
<element name="TMenuActionLink.IsCheckedLinked" link="#lcl.actnlist.TActionLink.IsCheckedLinked"/>
<element name="TMenuActionLink.IsCheckedLinked.Result"/>
<element name="TMenuActionLink.IsEnabledLinked" link="#lcl.actnlist.TActionLink.IsEnabledLinked"/>
<element name="TMenuActionLink.IsEnabledLinked.Result"/>
<element name="TMenuActionLink.IsHelpContextLinked" link="#lcl.actnlist.TActionLink.IsHelpContextLinked"/>
<element name="TMenuActionLink.IsHelpContextLinked.Result"/>
<element name="TMenuActionLink.IsHintLinked" link="#lcl.actnlist.TActionLink.IsHintLinked"/>
<element name="TMenuActionLink.IsHintLinked.Result"/>
<element name="TMenuActionLink.IsGroupIndexLinked" link="#lcl.actnlist.TActionLink.IsGroupIndexLinked"/>
<element name="TMenuActionLink.IsGroupIndexLinked.Result"/>
<element name="TMenuActionLink.IsImageIndexLinked" link="#lcl.actnlist.TActionLink.IsImageIndexLinked"/>
<element name="TMenuActionLink.IsImageIndexLinked.Result"/>
<element name="TMenuActionLink.IsShortCutLinked" link="#lcl.actnlist.TActionLink.IsShortCutLinked"/>
<element name="TMenuActionLink.IsShortCutLinked.Result"/>
<element name="TMenuActionLink.IsVisibleLinked" link="#lcl.actnlist.TActionLink.IsVisibleLinked"/>
<element name="TMenuActionLink.IsVisibleLinked.Result"/>
<element name="TMenuActionLink.IsOnExecuteLinked">
<short>
Indicates if the OnExecute event handler in the action is linked to a menu
item.
</short>
<descr>
<p>
<var>IsOnExecuteLinked</var> always returns <b>True</b> in
<var>TBasicActionLink</var>. Descendent classes can override this method to
provide a different result.
</p>
</descr>
<seealso>
<link id="#rtl.classes.TBasicActionLink">TBasicActionLink</link>
</seealso>
</element>
<element name="TMenuActionLink.IsOnExecuteLinked.Result">
<short><b>True</b> in TBasicActionLink.</short>
</element>
<element name="TMenuActionLink.SetAutoCheck">
<short>
Updates the AutoCheck property in the linked menu item.
</short>
<descr>
<p>
No actions are performed in the method if the AutoCheck property in the
linked action and the linked menu item have different values on entry.
</p>
</descr>
<seealso>
<link id="TMenuItem.Action"/>
<link id="TMenuItem.AutoCheck"/>
<link id="TMenuItem.Checked"/>
<link id="#lcl.actnlist.TCustomAction.AutoCheck">TCustomAction.AutoCheck</link>
<link id="#lcl.actnlist.TActionLink.SetAutoCheck">TActionLink.SetAutoCheck</link>
<link id="#rtl.classes.TBasicActionLink.Action">TBasicActionLink.Action</link>
</seealso>
</element>
<element name="TMenuActionLink.SetAutoCheck.Value">
<short>
New value for the AutoCheck property in the linked TMenuItem client.
</short>
</element>
<element name="TMenuActionLink.SetCaption">
<short>
Updates the Caption property in the linked menu item.
</short>
<descr>
<p>
No actions are performed in the method if the Caption property in the
linked action and the linked menu item have different values on entry.
</p>
</descr>
<seealso>
<link id="TMenuActionLink.IsCaptionLinked"/>
<link id="TMenuItem.Caption"/>
<link id="#lcl.actnlist.TActionLink.IsCaptionLinked">TActionLink.IsCaptionLinked</link>
<link id="#lcl.actnlist.TActionLink.SetCaption">TActionLink.SetCaption</link>
</seealso>
</element>
<element name="TMenuActionLink.SetCaption.Value">
<short>
New value for the Caption property in the linked TMenuItem client.
</short>
</element>
<element name="TMenuActionLink.SetChecked">
<short>
Sets the value for the Checked property in the linked menu item.
</short>
<descr/>
<seealso/>
</element>
<element name="TMenuActionLink.SetChecked.Value">
<short>
New value for the Checked property in the linked TMenuItem client.
</short>
</element>
<element name="TMenuActionLink.SetEnabled">
<short>
Sets the value for the Enabled property in the linked menu item.
</short>
<descr/>
<seealso/>
</element>
<element name="TMenuActionLink.SetEnabled.Value">
<short>
New value for the Enabled property in the linked TMenuItem client.
</short>
</element>
<element name="TMenuActionLink.SetHelpContext">
<short>
Sets the value for the HelpContext property in the linked menu item.
</short>
<descr/>
<seealso/>
</element>
<element name="TMenuActionLink.SetHelpContext.Value">
<short>
New value for the HelpContext property in the linked TMenuItem client.
</short>
</element>
<element name="TMenuActionLink.SetHint">
<short>Sets the Hint property in the linked menu item.</short>
<descr/>
<seealso/>
</element>
<element name="TMenuActionLink.SetHint.Value">
<short>
New value for the Hint property in the linked TMenuItem client.
</short>
</element>
<element name="TMenuActionLink.SetImageIndex">
<short>
Sets the value for the ImageIndex property in the linked menu item.
</short>
<descr/>
<seealso/>
</element>
<element name="TMenuActionLink.SetImageIndex.Value">
<short>
New value for the ImageIndex property in the linked TMenuItem client.
</short>
</element>
<element name="TMenuActionLink.SetShortCut">
<short>
Sets the value for the ShortCut property in the linked menu item.
</short>
<descr/>
<seealso/>
</element>
<element name="TMenuActionLink.SetShortCut.Value">
<short>
New value for the ShortCut property in the linked TMenuItem client.
</short>
</element>
<element name="TMenuActionLink.SetVisible">
<short>
Sets the value in the Visible property for the linked menu item.
</short>
<descr/>
<seealso/>
</element>
<element name="TMenuActionLink.SetVisible.Value">
<short>New value for the Visible property in the linked menu item.</short>
</element>
<element name="TMenuActionLink.SetOnExecute">
<short>Not used in the current LCL implementation.</short>
<descr>
<p>
In previous LCL versions, this method changed the OnClick event handler for
the linked menu item. That action is not needed because TMenuItem.Click
executes the Action. The current version has an empty implementation.
</p>
</descr>
<seealso/>
</element>
<element name="TMenuActionLink.SetOnExecute.Value">
<short>
Not used in the current LCL version.
</short>
</element>
<element name="TMenuActionLinkClass">
<short>
Class type used to create new instances of TMenuActionLink.
</short>
<descr/>
<seealso>
<link id="TMenuActionLink"/>
<link id="TMenuItem.GetActionLinkClass"/>
<link id="TMenuItem.Action"/>
<link id="TMenuItem.SetAction"/>
</seealso>
</element>
<element name="TMenuItemEnumerator">
<short>
Implements an enumerator for child menu items in the specified TMenuItem
instance.
</short>
<descr>
<p>
<var>TMenuItemEnumerator</var> is a class which implements an enumerator for
child menu items for a specified <var>TMenuItem</var> instance. The menu item
examined is passed as an argument to the constructor, and the reference is
stored in an internal member variable.
</p>
<p>
TMenuItemEnumerator provides the <var>MoveNext</var> method used to advance
the position for the enumerator, and the <var>Current</var> property which
returns the TMenuItem instance in the child menu <var>Items</var> at the
current enumerator position.
</p>
<p>
TMenuItemEnumerator is the type returned from the
<var>TMenuItem.GetEnumerator</var> method.
</p>
</descr>
<seealso>
<link id="TMenuItem.GetEnumerator"/>
</seealso>
</element>
<!-- private -->
<element name="TMenuItemEnumerator.FMenuItem"/>
<element name="TMenuItemEnumerator.FPosition"/>
<element name="TMenuItemEnumerator.GetCurrent"/>
<element name="TMenuItemEnumerator.GetCurrent.Result"/>
<!-- public -->
<element name="TMenuItemEnumerator.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
<var>Create</var> is the constructor for the class instance. Create stores
the menu item in the <var>AMenuItem</var> argument to an internal member, and
sets the internal position for the enumerator to <b>-1</b>.
</p>
<p>
Use <var>MoveNext</var> to advance to the first and subsequent child menu
items for the enumerator. Use <var>Current</var> to retrieve the TMenuItem
instance at the current position for the enumerator.
</p>
</descr>
<seealso>
<link id="TMenuItemEnumerator.MoveNext"/>
<link id="TMenuItemEnumerator.Current"/>
<link id="TMenuItem.Items"/>
</seealso>
</element>
<element name="TMenuItemEnumerator.Create.AMenuItem">
<short>
Menu item with the child menu items accessed in the class instance.
</short>
</element>
<element name="TMenuItemEnumerator.MoveNext">
<short>Moves to the next position for the enumerator.</short>
<descr/>
<seealso>
<link id="TMenuItemEnumerator.Current"/>
<link id="TMenuItem.Items"/>
<link id="TMenuItem.Count"/>
</seealso>
</element>
<element name="TMenuItemEnumerator.MoveNext.Result">
<short>
<b>True</b> if another TMenuItem instance is available for the enumerator.
</short>
</element>
<element name="TMenuItemEnumerator.Current">
<short>
Contains the TMenuItem instance at the current position for the enumerator.
</short>
<descr>
<p>
<var>Current</var> is a read-only <var>TMenuItem</var> property which
contains the menu item at the current position for the enumerator. The
internal position for the enumerator is maintained when the MoveNext method
is called.
</p>
</descr>
<seealso>
<link id="TMenuItemEnumerator.MoveNext"/>
<link id="TMenuItem.Items"/>
<link id="TMenuItem.Count"/>
</seealso>
</element>
<element name="TMenuItemHandlerType">
<short>
Enumerated type which represents the available menu item handler types.
</short>
<descr>
<p>
Currently has only one member: <var>mihtDestroy</var>.
</p>
</descr>
<seealso>
<link id="TMenuItem.AddHandler"/>
<link id="TMenuItem.AddHandlerOnDestroy"/>
<link id="TMenuItem.RemoveHandlerOnDestroy"/>
<link id="TMenuItem.RemoveAllHandlersOfObject"/>
</seealso>
</element>
<element name="TMenuItemHandlerType.mihtDestroy">
<short>
Handler type signalled to perform notification events when a menu item is
freed.
</short>
</element>
<element name="TMenuDrawItemEvent">
<short>
Specifies an event handler signalled to draw a menu item on the given canvas.
</short>
<descr>
<p>
<var>TMenuDrawItemEvent</var> defines the signature for the handler routine.
An application can implement and assign a handler to perform drawing
operations for the menu item in the Self argument.
</p>
<p>
<var>ACanvas</var> is the TCanvas instance where the menu item is drawn.
</p>
<p>
<var>ARect</var> contains the display rectangle on the canvas where the menu
item is drawn.
</p>
<p>
<var>AState</var> is the owner-draw state for the menu item, and indicates
whether it is drawn using attributes to reflect its state.
</p>
<p>
TMenuDrawItemEvent is the type for the OnDrawItem property in TMenuItem.
</p>
</descr>
<seealso>
<link id="TMenuItem.OnDrawItem"/>
<link id="TMenuItem.DoDrawItem"/>
</seealso>
</element>
<element name="TMenuDrawItemEvent.Sender">
<short>Object (TMenuItem) for the event notification.</short>
</element>
<element name="TMenuDrawItemEvent.ACanvas">
<short>Canvas used to render the menu item.</short>
</element>
<element name="TMenuDrawItemEvent.ARect">
<short>Display rectangle for the menu item.</short>
</element>
<element name="TMenuDrawItemEvent.AState">
<short>Owner-drawn state for the menu item.</short>
</element>
<element name="TMenuMeasureItemEvent">
<short>
Specifies an event handler signalled to get the width and height for a menu
item.
</short>
<descr>
<p>
<var>TMenuMeasureItemEvent</var> is an object procedure type which specifies
an event handler signalled to get the width and height for a menu item.
</p>
<p>
Cast the value in <var>Sender</var> (when assigned) to a <var>TMenuItem</var>
type to access properties and methods for the menu item.
</p>
<p>
Use <var>ACanvas</var> to access values for the <var>TCanvas</var> instance
where the menu item is drawn.
</p>
<p>
<var>AWidth</var> and <var>AHeight</var> are variable arguments updated in
the event handler with the dimensions for the menu item.
</p>
<p>
TMenuMeasureItemEvent is the type used to implement the
<var>OnMeasureItem</var> property in <var>TMenu</var> and
<var>TMenuItem</var>.
</p>
</descr>
<seealso>
<link id="TMenu.OnMeasureItem"/>
<link id="TMenuItem.OnMeasureItem"/>
</seealso>
</element>
<element name="TMenuMeasureItemEvent.Sender">
<short>Object (TMenuItem) for the event notification.</short>
</element>
<element name="TMenuMeasureItemEvent.ACanvas">
<short>Canvas where the menu item is drawn.</short>
</element>
<element name="TMenuMeasureItemEvent.AWidth">
<short>Width needed for the menu item.</short>
</element>
<element name="TMenuMeasureItemEvent.AHeight">
<short>Height needed for the menu item.</short>
</element>
<element name="TMergedMenuItems">
<short>
Implements a container for menu items merged into a parent menu or menu item.
</short>
<descr>
<p>
<var>TMergedMenuItems</var> provides an internal array for visible and hidden
menu items stored in the container. The array has two (2) elements; one for
visible menu items, the other for hidden menu items. Each element is a
<var>TList</var> instance where the corresponding <var>TMenuItem</var>
instances are stored.
</p>
<p>
Use the indexed <var>VisibleItems</var> and <var>InvisibleItems</var>
properties to access values stored in the container.
</p>
<p>
TMergedMenuItems is the type used for the MergedItems property in TMenuItem.
</p>
</descr>
<seealso>
<link id="TMenuItem.MergedItems"/>
<link id="TMainMenu.Merge"/>
</seealso>
</element>
<!-- private -->
<element name="TMergedMenuItems.FList"/>
<element name="TMergedMenuItems.GetInvisibleCount"/>
<element name="TMergedMenuItems.GetInvisibleCount.Result"/>
<element name="TMergedMenuItems.GetInvisibleItem"/>
<element name="TMergedMenuItems.GetInvisibleItem.Result"/>
<element name="TMergedMenuItems.GetInvisibleItem.Index"/>
<element name="TMergedMenuItems.GetVisibleCount"/>
<element name="TMergedMenuItems.GetVisibleCount.Result"/>
<element name="TMergedMenuItems.GetInvisibleItem"/>
<element name="TMergedMenuItems.GetInvisibleItem.Result"/>
<element name="TMergedMenuItems.GetInvisibleItem.Index"/>
<!-- public -->
<element name="TMergedMenuItems.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
<var>Create</var> is the constructor for the class instance, and calls the
inherited method on entry. Create allocates resources needed for the internal
storage in the container.
</p>
<p>
<var>AParent</var> is the <var>TMenuItem</var> instance that is the parent
for the merged menu items. Values in its <var>Merged</var> property are added
or updated in the visible or hidden sections for the container based on the
<var>Visible</var> property for the menu items.
</p>
</descr>
<seealso/>
</element>
<element name="TMergedMenuItems.Create.aParent">
<short>Menu item with the merged menu items for the container.</short>
</element>
<element name="TMergedMenuItems.Destroy">
<short>Destructor for the class instance.</short>
<descr>
<p>
<var>Destroy</var> is the overridden destructor for the class instance.
Destroy ensures that menu items in the internal storage are freed. It calls
the inherited destructor prior to exiting from the method.
</p>
</descr>
<seealso/>
</element>
<element name="TMergedMenuItems.DefaultSort">
<short>
Implements the default sort routine for merged menu items.
</short>
<descr>
<p>
If the specified menu items have the same GroupIndex value, the return value
is:
</p>
<dl>
<dt>1</dt>
<dd>AParentItem is the menu item in AItem1.</dd>
<dt>-1</dt>
<dd>AParentItem is not the menu item in AItem2.</dd>
</dl>
<p>
Otherwise:
</p>
<dl>
<dt>< 0</dt>
<dd>AItem1 has a group index that comes before AItem2.</dd>
<dt>> 0</dt>
<dd>AItem1 has a group index that comes after A2Item2.</dd>
</dl>
</descr>
<seealso/>
</element>
<element name="TMergedMenuItems.DefaultSort.Result">
<short>
Numeric value with the relative order for the specified menu items.
</short>
</element>
<element name="TMergedMenuItems.DefaultSort.aItem1">
<short>Pointer to the first menu item for the sort comparison.</short>
</element>
<element name="TMergedMenuItems.DefaultSort.aItem2">
<short>Pointer to the second menu item for the sort comparison.</short>
</element>
<element name="TMergedMenuItems.DefaultSort.aParentItem">
<short>Pointer to the Parent menu item for the compared values.</short>
</element>
<element name="TMergedMenuItems.VisibleCount">
<short>Number of visible menu items in the internal list.</short>
<descr/>
<seealso/>
</element>
<element name="TMergedMenuItems.VisibleItems">
<short>
Provides indexed access to the visible menu items in the list of merged menu
items.
</short>
<descr/>
<seealso>
<link id="TMergedMenuItems.InvisibleItems"/>
</seealso>
</element>
<element name="TMergedMenuItems.VisibleItems.Index">
<short>Ordinal position for a visible menu item in the container.</short>
</element>
<element name="TMergedMenuItems.InvisibleCount">
<short>
Number of invisible (hidden) menu items in the internal list.
</short>
<descr/>
<seealso/>
</element>
<element name="TMergedMenuItems.InvisibleItems">
<short>
Provides indexed access to the invisible (hidden) menu items in the list of
merged menu items.
</short>
<descr/>
<seealso/>
</element>
<element name="TMergedMenuItems.InvisibleItems.Index">
<short>
Ordinal position for an invisible (hidden) menu item in the container.
</short>
</element>
<element name="TMenuItems">
<short>
Implements a list used to store TMenuItem instances with a given parent.
</short>
<descr>
<p>
TMenuItems is the type used to implement the Items property in the TMenuItem
class.
</p>
</descr>
<seealso>
<link id="TMenuItem.Items"/>
<link id="TMenuItem.Insert"/>
</seealso>
</element>
<!-- private -->
<element name="TMenuItems.FMenuItem"/>
<!-- protected -->
<element name="TMenuItems.Notify">
<short>
Notifies the parent and the merged menu item that a child menu item has been
added, extracted, or deleted.
</short>
<descr>
<p>
The parent menu item calls its <var>InvalidateMergedItems</var> method to
free the merged items. If the parent has an assigned <var>MergeWith</var>
menu item, its <var>InvalidateMergedItems</var> is called as well. The
<var>CheckChildHandles</var> method in the MergeWith menu item is called to
free or re-create handles for the child menu items as needed.
</p>
</descr>
<seealso/>
</element>
<element name="TMenuItems.Notify.Ptr">
<short>Not used in the current implementation.</short>
</element>
<element name="TMenuItems.Notify.Action">
<short>Not used in the current implementation.</short>
</element>
<!-- public -->
<element name="TMenuItems.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
<var>Create</var> is the constructor for the class instance, and calls the
inherited method on entry. Create stores the value in <var>AMenuItem</var> to
the member variable used for the parent menu item.
</p>
</descr>
<seealso/>
</element>
<element name="TMenuItems.Create.AMenuItem ">
<short>Menu item that is the parent for the menu items in the list.</short>
</element>
<element name="TMenuItem">
<short>Represents a menu item displayed in a menu.</short>
<descr>
<p>
<var>TMenuItem</var> is a <var>TLCLComponent</var> descendant which represents
a menu item displayed on a <var>TMenu</var> instance, or one of its derived
classes like <link id="TMainMenu">TMainMenu</link> and <link
id="TPopUpMenu">TPopUpMenu</link>.
</p>
<p>
TMenuItem has properties which define the behavior and display attributes for
the menu item, such as whether it is displayed as a radio button and whether it
automatically checked when the menu item is clicked. It allows accelerator keys
to be defined in the <var>Caption</var> for an item displayed on a main menu.
An image can be displayed for a menu item - whether assigned to the menu item
or in the image list for a parent menu or menu item. Event handlers are also
provided which perform actions needed when the menu item is measured, drawn, or
clicked.
</p>
<p>
TMenuItem instances are normally created at design-time using the menu editor
for a menu component, but they can also be created and configured at run-time.
</p>
<p>
TMenuItem is the type maintained in both the <var>TMenu.Items</var> and
<var>TMenuItem.Items</var> properties.
</p>
</descr>
<seealso>
<link id="TMenuItem.Caption"/>
<link id="TMenuItem.ShortCut"/>
<link id="TMenuItem.ShortCutKey2"/>
<link id="TMenuItem.RadioItem"/>
<link id="TMenuItem.GroupIndex"/>
<link id="TMenuItem.Action"/>
<link id="TMenuItem.AutoCheck"/>
<link id="TMenuItem.Bitmap"/>
<link id="TMenuItem.ImageIndex"/>
<link id="TMenuItem.Items"/>
<link id="TMenuItem.Menu"/>
<link id="TMenuItem.Parent"/>
<link id="TMenuItem.OnClick"/>
<link id="TMenuItem.OnDrawItem"/>
<link id="TMenuItem.OnMeasureItem"/>
<link id="TMenu.Items"/>
</seealso>
</element>
<!-- private -->
<element name="TMenuItem.FActionLink"/>
<element name="TMenuItem.FCaption"/>
<element name="TMenuItem.FBitmap"/>
<element name="TMenuItem.FGlyphShowMode"/>
<element name="TMenuItem.FHandle"/>
<element name="TMenuItem.FHelpContext"/>
<element name="TMenuItem.FHint"/>
<element name="TMenuItem.FImageChangeLink"/>
<element name="TMenuItem.FImageIndex"/>
<element name="TMenuItem.FItems"/>
<element name="TMenuItem.FMenu"/>
<element name="TMenuItem.FOnChange"/>
<element name="TMenuItem.FOnClick"/>
<element name="TMenuItem.FOnDrawItem"/>
<element name="TMenuItem.FOnMeasureItem"/>
<element name="TMenuItem.FParent"/>
<element name="TMenuItem.FMerged"/>
<element name="TMenuItem.FMergedWith"/>
<element name="TMenuItem.FMergedItems"/>
<element name="TMenuItem.FMenuItemHandlers"/>
<element name="TMenuItem.FSubMenuImages"/>
<element name="TMenuItem.FSubMenuImagesWidth"/>
<element name="TMenuItem.FShortCut"/>
<element name="TMenuItem.FShortCutKey2"/>
<element name="TMenuItem.FGroupIndex"/>
<element name="TMenuItem.FRadioItem"/>
<element name="TMenuItem.FRightJustify"/>
<element name="TMenuItem.FShowAlwaysCheckable"/>
<element name="TMenuItem.FVisible"/>
<element name="TMenuItem.FBitmapIsValid"/>
<element name="TMenuItem.FAutoCheck"/>
<element name="TMenuItem.FChecked"/>
<element name="TMenuItem.FDefault"/>
<element name="TMenuItem.FEnabled"/>
<element name="TMenuItem.GetBitmap"/>
<element name="TMenuItem.GetBitmap.Result"/>
<element name="TMenuItem.GetCount"/>
<element name="TMenuItem.GetCount.Result"/>
<element name="TMenuItem.GetItem"/>
<element name="TMenuItem.GetItem.Result"/>
<element name="TMenuItem.GetItem.Index"/>
<element name="TMenuItem.GetMenuIndex"/>
<element name="TMenuItem.GetMenuIndex.Result"/>
<element name="TMenuItem.GetMergedItems"/>
<element name="TMenuItem.GetMergedItems.Result"/>
<element name="TMenuItem.GetMergedParent"/>
<element name="TMenuItem.GetMergedParent.Result"/>
<element name="TMenuItem.GetParent"/>
<element name="TMenuItem.GetParent.Result"/>
<element name="TMenuItem.IsBitmapStored"/>
<element name="TMenuItem.IsBitmapStored.Result"/>
<element name="TMenuItem.IsCaptionStored"/>
<element name="TMenuItem.IsCaptionStored.Result"/>
<element name="TMenuItem.IsCheckedStored"/>
<element name="TMenuItem.IsCheckedStored.Result"/>
<element name="TMenuItem.IsEnabledStored"/>
<element name="TMenuItem.IsEnabledStored.Result"/>
<element name="TMenuItem.IsHelpContextStored"/>
<element name="TMenuItem.IsHelpContextStored.Result"/>
<element name="TMenuItem.IsHintStored"/>
<element name="TMenuItem.IsHintStored.Result"/>
<element name="TMenuItem.IsImageIndexStored"/>
<element name="TMenuItem.IsImageIndexStored.Result"/>
<element name="TMenuItem.IsShortCutStored"/>
<element name="TMenuItem.IsShortCutStored.Result"/>
<element name="TMenuItem.IsVisibleStored"/>
<element name="TMenuItem.IsVisibleStored.Result"/>
<element name="TMenuItem.MergeWith"/>
<element name="TMenuItem.MergeWith.aMenu"/>
<element name="TMenuItem.SetAutoCheck"/>
<element name="TMenuItem.SetAutoCheck.AValue"/>
<element name="TMenuItem.SetAutoLineReduction"/>
<element name="TMenuItem.SetAutoLineReduction.AValue"/>
<element name="TMenuItem.SetCaption"/>
<element name="TMenuItem.SetCaption.AValue"/>
<element name="TMenuItem.SetChecked"/>
<element name="TMenuItem.SetChecked.AValue"/>
<element name="TMenuItem.SetDefault"/>
<element name="TMenuItem.SetDefault.AValue"/>
<element name="TMenuItem.SetEnabled"/>
<element name="TMenuItem.SetEnabled.AValue"/>
<element name="TMenuItem.SetBitmap"/>
<element name="TMenuItem.SetBitmap.AValue"/>
<element name="TMenuItem.SetGlyphShowMode"/>
<element name="TMenuItem.SetGlyphShowMode.AValue"/>
<element name="TMenuItem.SetMenuIndex"/>
<element name="TMenuItem.SetMenuIndex.AValue"/>
<element name="TMenuItem.SetName"/>
<element name="TMenuItem.SetName.Value"/>
<element name="TMenuItem.SetRadioItem"/>
<element name="TMenuItem.SetRadioItem.AValue"/>
<element name="TMenuItem.SetRightJustify"/>
<element name="TMenuItem.SetRightJustify.AValue"/>
<element name="TMenuItem.SetShowAlwaysCheckable"/>
<element name="TMenuItem.SetShowAlwaysCheckable.AValue"/>
<element name="TMenuItem.SetSubMenuImages"/>
<element name="TMenuItem.SetSubMenuImages.AValue"/>
<element name="TMenuItem.SetSubMenuImagesWidth"/>
<element name="TMenuItem.SetSubMenuImagesWidth.aSubMenuImagesWidth"/>
<element name="TMenuItem.ShortcutChanged"/>
<element name="TMenuItem.SubItemChanged"/>
<element name="TMenuItem.SubItemChanged.Sender"/>
<element name="TMenuItem.SubItemChanged.Source"/>
<element name="TMenuItem.SubItemChanged.Rebuild"/>
<element name="TMenuItem.TurnSiblingsOff"/>
<element name="TMenuItem.DoActionChange"/>
<element name="TMenuItem.DoActionChange.Sender"/>
<!-- protected -->
<element name="TMenuItem.FCommand">
<short>
Stores the numeric command in the widgetset class for the menu item.
</short>
</element>
<element name="TMenuItem.WSRegisterClass" link="#lcl.lclclasses.TLCLComponent.WSRegisterClass"/>
<element name="TMenuItem.ActionChange">
<short>
Changes the action for the menu item using the value specified in Sender.
</short>
<descr>
<p>
<var>ActionChange</var>- changes the action associated with this menu item to
a new action, provided <var>Sender</var> is of type <var>TCustomAction</var>.
No actions are performed in the method when Sender is not derived from
TCustomAction.
</p>
<p>
ActionChange updates property values in the current class instance to reflect
the values in Sender when <var>CheckDefaults</var> has not been enabled. The
following properties are updated from the values in the action:
</p>
<ul>
<li>AutoCheck</li>
<li>Caption</li>
<li>Checked</li>
<li>Enabled</li>
<li>HelpContext</li>
<li>Hint</li>
<li>GroupIndex</li>
<li>ImageIndex</li>
<li>ShortCut</li>
<li>Visible</li>
</ul>
<p>
ActionChange is called when a new value is assigned to the Action property
for the menu item or when changes occur in the linked menu action.
</p>
</descr>
<seealso/>
</element>
<element name="TMenuItem.ActionChange.Sender">
<short>TCustomAction examined and applied to the menu item.</short>
</element>
<element name="TMenuItem.AssignTo">
<short>
Copies property values from the current class instance to the specified
destination.
</short>
<descr>
<p>
<var>AssignTo</var> is an overridden method in <var>TMenuItem</var> used to
copy property values from the current class instance to the destination
specified in <var>Dest</var>. Dest can be either a <var>TCustomAction</var>
instance or a <var>TMenuItem</var> instance.
</p>
<p>
When Dest is a TCustomAction descendant, the following properties are copied
into the destination:
</p>
<ul>
<li>Caption</li>
<li>Enabled</li>
<li>HelpContext</li>
<li>Hint</li>
<li>ImageIndex</li>
<li>Visible</li>
</ul>
<p>
When Dest is a TMenuItem descendant, an implementation routine is called to
transfer values between the TMenuItem instances.
</p>
<p>
If Dest is not a TMenuItem or a TCustomAction instance, the inherited
AssignTo method is called.
</p>
</descr>
<seealso>
<link id="#rtl.classes.TPersistent.Assign">TPersistent.Assign</link>
</seealso>
</element>
<element name="TMenuItem.AssignTo.Dest">
<short>Action or menu item where values are stored in the method.</short>
</element>
<element name="TMenuItem.GetAutoLineReduction">
<short>
Indicates whether automatic line reduction is enabled for the menu item.
</short>
<descr>
<p>
<var>GetAutoLineReduction</var> ensures that the setting in the
AutoLineReduction property is translated to either maAutomatic or maManual when
it contains maParent.
</p>
</descr>
<version>
Added in LCL version 4.0.
</version>
<seealso>
<link id="TMenuItem.AutoLineReduction"/>
<link id="TMenuItem.InternalRethinkLines"/>
</seealso>
</element>
<element name="TMenuItem.GetAutoLineReduction.Result">
<short>
Returns <b>True</b> when AutoLineReduction is resolved to maParent or
maAutomatic.
</short>
</element>
<element name="TMenuItem.BitmapChange">
<short>
Updates the image associated with the menu item when it has been changed.
</short>
<descr>
<p>
<var>BitmapChange</var> is a method used to updates the image associated with
the menu item when it has been changed. BitmapChange calls the
<var>UpdateImage</var> method retrieve the <var>Images</var> or
<var>SubMenuImages</var> for the item, its ancestor items, or the parent menu.
</p>
<p>
If an image is already assigned to the <var>Bitmap</var> property, it is
freed. The value in <var>ImageIndex</var> is used to access the relevant
bitmap in the image list. -1 indicates that a bitmap image has not been
assigned for the menu item.
</p>
<p>
If the <var>Handle</var> for the control has been allocated, the widget set
class is notified of the change to the property value.
</p>
<p>
BitmapChange is used as the <var>OnChange</var> event handler for the Bitmap
property.
</p>
</descr>
<seealso/>
</element>
<element name="TMenuItem.DoDrawItem">
<short>
Performs actions needed to draw the menu item to the specified Canvas.
</short>
<descr>
<p>
<var>DoDrawItem</var> is a <var>Boolean</var> function which performs actions
needed to draw the menu item to the specified canvas with the given
owner-drawn state.
</p>
<p>
DoDrawItem signals the <var>OnDrawItem</var> event handler (when assigned) to
render the menu item to the canvas specified in <var>ACanvas</var> using the
arguments passed to the method. The return value is set to <b>True</b> when
the drawing operation is completed.
</p>
<p>
If OnDrawItem has not been assigned in the menu item, the
<var>GetParentMenu</var> method is called to get the <var>TMenu</var>
instance where the menu item is located. Its OnDrawItem event handler is
signalled (when assigned) to render the menu item to the canvas specified in
ACanvas using the arguments passed to the method. The return value is set to
<b>True</b> when the drawing operation is completed.
</p>
<p>
If neither OnDrawItem event handler has been assigned, no actions are
performed in the method and the return value is set to <b>False</b>.
</p>
</descr>
<seealso/>
</element>
<element name="TMenuItem.DoDrawItem.Result">
<short>
<b>True</b> if the menu item was rendered using an OnDrawItem event handler.
</short>
</element>
<element name="TMenuItem.DoDrawItem.ACanvas">
<short>Canvas where the menu item is drawn.</short>
</element>
<element name="TMenuItem.DoDrawItem.ARect">
<short>Display rectangle for the menu item.</short>
</element>
<element name="TMenuItem.DoDrawItem.AState">
<short>Owner-draw state for the menu item.</short>
</element>
<element name="TMenuItem.DoMeasureItem">
<short>
Performs actions needed to get the width and height for the menu item.
</short>
<descr>
<p>
<var>DoMeasureItem</var> is a method used to perform actions needed to get
the width and height for the menu item. DoMeasureItem signals the
<var>OnMeasureItem</var> event handler (when assigned) to calculate the
values in AWidth and AHeight. The TCanvas instance in ACanvas is used to get
the text metrics for the Caption.
</p>
<p>
If the OnMeasureItem event handler has not been for the menu item, the
OnMeasureItem event handler in the <var>Parent</var> menu is used.
</p>
<p>
The return value is set to <b>True</b> after the selected event handler is
successfully executed.
</p>
<p>
DoMeasureItem is called from the <var>MeasureItem</var> method in the
<var>TMenuItemHelper</var> class helper. This class helper is implemented for
the Windows platform only.
</p>
</descr>
<seealso/>
</element>
<element name="TMenuItem.DoMeasureItem.Result">
<short>
<b>True</b> if the size was calculated using an OnMeasureItem event handler.
</short>
</element>
<element name="TMenuItem.DoMeasureItem.ACanvas">
<short>Canvas used to get size information for the menu item.</short>
</element>
<element name="TMenuItem.DoMeasureItem.AWidth">
<short>Calculated width for the menu item.</short>
</element>
<element name="TMenuItem.DoMeasureItem.AHeight">
<short>Calculated height for the menu item.</short>
</element>
<element name="TMenuItem.InternalRethinkLines">
<short>
Indicates whether child menu Items need to be updated to hide leading,
trailing, or adjacent separators.
</short>
<descr>
<p>
<var>InternalRethinkLines</var> is called from the RethinkLines and
CheckChildrenHandles methods. When AutoLineReduction is enabled, it visits each
of the child menu Items and checks whether adjacent menu items are configured
as menu separators (IsLine = <b>True</b>). The visibility for an adjacent menu
separator is updated based on the visibility of its predecessor. If the first
is visible, the second is hidden - and vice versa.
</p>
<p>
The return value indicates whether the visibility of child menu items has been
updated. <b>True</b> indicates that the visibility for one or more of the child
menu items was changed in the method.
</p>
<p>
To maintain compatibility with the Delphi VCL behavior, all menu separators are
visible when GetAutoLineReduction returns <b>False</b>.
</p>
<p>
No actions are performed in InternalRethinkLines at design-time, and the return
value is <b>False</b>.
</p>
</descr>
<version>
Added in LCL version 4.0.
</version>
<seealso>
<link id="TMenuItem.Items"/>
<link id="TMenuItem.Visible"/>
<link id="TMenuItem.IsLine"/>
<link id="TMenuItem.RethinkLines"/>
<link id="TMenuItem.CheckChildrenHandles"/>
<link id="TMenuItem.GetAutoLineReduction"/>
<link id="TMenuItem.AutoLineReduction"/>
<link id="TMenu.AutoLineReduction"/>
</seealso>
</element>
<element name="TMenuItem.InternalRethinkLines.Result">
<short>
Returns <b>True</b>if the visibility for one or more of the child menu items
was changed in the method.
</short>
</element>
<element name="TMenuItem.InternalRethinkLines.AForced">
<short>
Not used in the current implementation.
</short>
</element>
<element name="TMenuItem.GetAction">
<short>Gets the value for the Action property.</short>
<descr>
<p>
The value for the property is read from the <var>ActionLink</var> property
(when assigned). The property value is <b>Nil</b> when a
<var>TMenuActionLink</var> instance has not been assigned to ActionLink.
</p>
</descr>
<seealso>
<link id="TMenuItem.Action"/>
<link id="TMenuItem.ActionLink"/>
<link id="TMenuActionLink"/>
</seealso>
</element>
<element name="TMenuItem.GetAction.Result">
<short>Value for the property.</short>
</element>
<element name="TMenuItem.GetActionLinkClass">
<short>
Gets the class reference used to create an action link for the class.
</short>
<descr/>
<seealso/>
</element>
<element name="TMenuItem.GetActionLinkClass.Result">
<short>Returns TMenuActionLink in TMenuItem.</short>
</element>
<element name="TMenuItem.GetHandle">
<short>Gets the value for the Handle property.</short>
<descr>
<p>
<var>GetHandle</var> calls <var>HandleNeeded</var> to ensure that a valid
handle is available for the menu item. If the handle has not already been
allocated, <var>CreateHandle</var> is called to create the handle in the
widgetset class.
</p>
</descr>
<seealso>
<link id="TMenuItem.Handle"/>
</seealso>
</element>
<element name="TMenuItem.GetHandle.Result">
<short>Value for the property.</short>
</element>
<element name="TMenuItem.DoClicked">
<short>
<var>DoClicked</var>- process the system message signifying that a click has
occurred over this menu item.
</short>
<descr>
<p>
At run-time, <var>DoClicked</var> calls InitiateAction to update the actions
for each of the <var>Items</var> in the class instance, and calls
<var>Click</var> to execute the menu item.
</p>
<p>
At design-time, the <var>Click</var> event is intercepted by the design
surface for the IDE.
</p>
</descr>
<seealso/>
</element>
<element name="TMenuItem.DoClicked.msg">
<short>Message handled in the method.</short>
</element>
<element name="TMenuItem.CheckChildrenHandles">
<short>
Verifies the handles for child menu items on the menu.
</short>
<descr>
<p>
<var>CheckChildrenHandles</var> recursively checks menu items to ensure that
handles for merged / child menu items are freed when they are hidden, or not
owned by a menu item on the menu. No actions are performed in the method when
Items has not been assigned.
</p>
<p>
At run-time, InitiateActions is called to ensure that the visibility of child
Items with an action are up-to-date. If AutoLineReduction is in effect,
RethinkLines is called to remove redundant menu separators. These actions are
not performed at design-time.
</p>
<p>
The handle for hidden menu items in MergedItems are freed. The handle for
visible menu items in MergedItems are freed and re-created.
</p>
<p>
CheckChildrenHandles is called from CreateHandle when the handle for a menu
item is allocated. It is also called when a menu item is merged into another
menu or item. Finally, it is called when update notifications are handled for
the class instances in the Items property.
</p>
</descr>
<seealso>
<link id="TMenuItem.CreateHandle"/>
<link id="TMenuItem.Handle"/>
<link id="TMenuItem.Menu"/>
<link id="TMenuItem.Parent"/>
<link id="TMenuItem.Items"/>
<link id="TMenuItem.MergedItems"/>
<link id="TMenuItem.MergedWith"/>
<link id="TMenuItem.InitiateActions"/>
<link id="TMenuItem.InitiateAction"/>
<link id="TMenuItem.AutoLineReduction"/>
<link id="TMenuItem.RethinkLines"/>
<link id="TMenuItem.Action"/>
<link id="TMenuItem.Visible"/>
<link id="TMenuItems.Notify"/>
</seealso>
</element>
<element name="TMenuItem.CreateHandle">
<short>Creates the Handle for the menu item.</short>
<descr>
<p>
<var>CreateHandle</var> is a method used to create the <var>Handle</var> for
the control using the widgetset class instance. CreateHandle calls
CheckChildrenHandles to ensure that handles for hidden menu Items are freed,
and handles for MergedItems are re-created.
</p>
<p>
CreateHandle raises a catchable exception if the method is called when the
menu item is not Visible.
</p>
</descr>
<seealso/>
</element>
<element name="TMenuItem.DestroyHandle">
<short>
Frees the Handle for the control and any handles allocated for its Items.
</short>
<descr>
<p>
Handles for menu items in <var>Merged</var> are also freed. Calls the
corresponding method in the widgetset class to destroy the handle, and sets
the <var>Handle</var> property to <b>0</b> to indicate that it is unassigned.
</p>
</descr>
<seealso/>
</element>
<element name="TMenuItem.Loaded">
<short>
Performs actions needed after the component is loaded using LCL streaming.
</short>
<descr>
<p>
Loaded is overridden in TMenuItem, and calls the inherited method on entry.
It calls the <var>ActionChange</var> method if <var>Action</var> has been
assigned for the class instance.
</p>
</descr>
<seealso>
<link id="TMenuItem.Action"/>
<link id="TMenuItem.ActionChange"/>
<link id="#rtl.classes.TComponent">TComponent</link>
</seealso>
</element>
<element name="TMenuItem.Notification">
<short>Performs a notification when the menu item is added or removed.</short>
<descr>
<p>
<var>Notification</var> is an overridden method in <var>TMenuItem</var>, and
calls the inherited method on entry. Notification ensures that the class
instances in <var>Action</var> and <var>SubMenuImages</var> are set to
<b>Nil</b> when the remove <var>Operation</var> is received for either member.
</p>
</descr>
<seealso>
<link id="#rtl.classes.TComponent.Notification">TComponent.Notification</link>
</seealso>
</element>
<element name="TMenuItem.Notification.AComponent">
<short>Component for the notification.</short>
</element>
<element name="TMenuItem.Notification.Operation">
<short>Operation for the notification.</short>
</element>
<element name="TMenuItem.GetChildren">
<short>Performs an operation for a component instance and its Items.</short>
<descr>
<p>
<var>GetChildren</var> is an overridden method in <var>TMenuItem</var>, and
implements the dynamic method defined in the ancestor class. It does not call
the inherited method.
</p>
<p>
GetChildren calls the object procedure in <var>Proc</var> for the component
instance in <var>Root</var> and each of the component instances in its
<var>Items</var> property.
</p>
<p>
No actions are performed in the method when Items has not been assigned
(contains <b>Nil</b>).
</p>
</descr>
<seealso>
<link id="#rtl.classes.TComponent">TComponent</link>
</seealso>
</element>
<element name="TMenuItem.GetChildren.Proc">
<short>Object procedure called for the component.</short>
</element>
<element name="TMenuItem.GetChildren.Root">
<short>Component examined in the object procedure.</short>
</element>
<element name="TMenuItem.InitiateActions">
<short>Updates Actions in child menu items.</short>
<descr>
<p>
<var>InitiateActions</var> is a method used to update the actions for child
menu items in the Items property. InitiateActions visits each of the
<var>TMenuItem</var> instances in <var>Items</var> and calls its
<var>InitiateAction</var> method. This allows the <var>ActionLink</var> in
the menu item to call its <var>Update</var> method for the associated
<var>TBasicAction</var> instance.
</p>
<p>
InitiateActions is called from the <var>DoClicked</var> method prior to
executing the <var>Click</var> method for the menu item. It is called from
the <var>TMenu</var> class when shortcut (accelerator) keys are handled for
the menu. It is also called from the <var>TPopupMenu.PopUp</var> method when
the menu is displayed.
</p>
</descr>
<seealso/>
</element>
<element name="TMenuItem.MenuChanged">
<short>
Signals the OnChange event handler (when assigned) and optionally rebuilds
child menu items.
</short>
<descr>
<p>
<var>MenuChanged</var> is a method used to perform actions needed when values
in a menu item have been changed.
</p>
<p>
MenuChanged signals the <var>OnChange</var> event handler (when assigned) and
optionally rebuilds the child menu items list. Arguments passed to the event
handler identify the menu item for the notification, the menu item that owns
the changed item or <b>Nil</b> when it is a <var>TMenu</var> instance, and
the value in the <var>Rebuild</var> parameter.
</p>
<p>
MenuChanged is called from methods which modify property values like:
<var>Enabled</var>, <var>Bitmap</var>, and <var>ImageIndex</var>. It is also
called from methods that modify the values in in the <var>Items</var>
property, including: <var>Insert</var> and <var>Delete</var>.
</p>
</descr>
<seealso/>
</element>
<element name="TMenuItem.MenuChanged.Rebuild">
<short><b>True</b> to rebuild the child menu items.</short>
</element>
<element name="TMenuItem.SetAction">
<short>Sets the value for the Action property.</short>
<descr>
<p>
<var>SetAction</var> ensures that the ActionLink property is updated when the
new property value is applied to the control.
</p>
<p>
When NewAction contains <b>Nil</b>, the class instance in ActionLink is freed
and <b>Nil</b>'d.
</p>
<p>
Otherwise, GetActionLinkClass is called to create a new action link class
instance for the ActionLink member. Its Action property is set to the value
in NewAction, and its OnChange event handler is set to the DoActionChange
method. ActionChange is called to synchronize property values in the class
instance to the values in the Action.
</p>
</descr>
<seealso>
<link id="TMenuItem.Action"/>
<link id="TMenuItem.ActionLink"/>
<link id="TMenuItem.ActionChange"/>
<link id="TMenuItem.GetActionLinkClass"/>
</seealso>
</element>
<element name="TMenuItem.SetAction.NewAction">
<short>New value for the Action property.</short>
</element>
<element name="TMenuItem.SetChildOrder">
<short>Moves a menu item to the specified position in a menu.</short>
<descr>
<p>
Stores the value in the Order parameter to the MenuIndex property in the
Child menu item.
</p>
</descr>
<seealso>
<link id="#rtl.classes.TComponent">TComponent</link>
</seealso>
</element>
<element name="TMenuItem.SetChildOrder.Child">
<short>Menu item affected in the method.</short>
</element>
<element name="TMenuItem.SetChildOrder.Order">
<short>Value assigned to the MenuIndex for the menu item.</short>
</element>
<element name="TMenuItem.SetGroupIndex">
<short>Sets the value for the GroupIndex property.</short>
<descr/>
<seealso>
<link id="TMenuItem.GroupIndex"/>
</seealso>
</element>
<element name="TMenuItem.SetGroupIndex.AValue">
<short>New value for the GroupIndex property.</short>
</element>
<element name="TMenuItem.SetImageIndex">
<short>Sets the value for the ImageIndex property.</short>
<descr>
<p>
Calls GetImageList to get the Images for the TMenu instance that owns the
menu item, or the SubMenuImages from the Parent menu item. AValue indicates
the position in the image list used as the property value.
</p>
<p>
If an image list could not be located, no additional actions are performed in
the method. Otherwise, an existing value in Bitmap is freed and the
UpdateWSIcon method is called to notify the widgetset class of the change to
the property value. MenuChanged is called to signal the OnChange event
handler (when assigned). The menu item hierarchy is not rebuilt.
</p>
</descr>
<seealso>
<link id="TMenuItem.ImageIndex"/>
</seealso>
</element>
<element name="TMenuItem.SetImageIndex.AValue">
<short>New value for the ImageIndex property.</short>
</element>
<element name="TMenuItem.SetParentComponent">
<short>
Ensures that the menu item is parented by the specified menu or menu item.
</short>
<descr>
<p>
<var>SetParentComponent</var> is an overridden method used to ensure that the
menu item is parented by the menu or menu item specified in
<var>AValue</var>. SetParentComponent re-implements the method introduced in
the ancestor class, and does not call the inherited method.
</p>
<p>
When <var>Parent</var> has been assigned, its <var>Remove</var> method is
called to delete the current class instance from its <var>Items</var>.
</p>
<p>
When <var>AValue</var> has been assigned, the value is examined to determine
if the new parent is a <var>TMenu</var> or a <var>TMenuItem</var> instance.
If it is a TMenu instance, the current class instance is added to its Items
property. If it is a TMenuItem instance, its <var>Add</var> method is called
to append the current class instance to its Items property.
</p>
<p>
An <var>Exception</var> is raised if AValue is derived from any class type
other than TMenu or TMenuItem. The current class instance is not re-parented
when AValue contains <b>Nil</b>.
</p>
</descr>
<seealso>
<link id="#rtl.classes.TComponent">TComponent</link>
</seealso>
</element>
<element name="TMenuItem.SetParentComponent.AValue">
<short>
Menu or menu item used as the parent for the current class instance.
</short>
</element>
<element name="TMenuItem.SetShortCut">
<short>Sets the value for the ShortCut property.</short>
<descr/>
<seealso>
<link id="TMenuItem.ShortCut"/>
</seealso>
</element>
<element name="TMenuItem.SetShortCut.AValue">
<short>New value for the ShortCut property.</short>
</element>
<element name="TMenuItem.SetShortCutKey2">
<short>Sets the value for the ShortCutKey2 property.</short>
<descr/>
<seealso>
<link id="TMenuItem.ShortCutKey2"/>
</seealso>
</element>
<element name="TMenuItem.SetShortCutKey2.AValue">
<short>New value for the ShortCutKey2 property.</short>
</element>
<element name="TMenuItem.SetVisible">
<short>Sets the value for the Visible property.</short>
<descr>
<p>
When the new property value is <b>True</b>, a valid <var>Handle</var> is
needed for both the menu item and its <var>Parent</var> (when assigned).
<var>HandleNeeded</var> is called to allocate a handle if it does not already
exist.
</p>
<p>
The widgetset class is notified of a change to the property value.
</p>
<p>
When the new property value is <b>False</b>, the Handle is freed by calling
the <var>DestroyHandle</var> method.
</p>
<p>
When <var>MergedParent</var> has been assigned, its
<var>InvalidateMergedItems</var> method is called to free the
<var>MergedItems</var> for the menu item.
</p>
</descr>
<seealso>
<link id="TMenuItem.Visible"/>
</seealso>
</element>
<element name="TMenuItem.SetVisible.AValue">
<short>New value for the Visible property.</short>
</element>
<element name="TMenuItem.UpdateWSIcon">
<short>
Updates the widgetset class with the values in HasIcon and Bitmap.
</short>
<descr>
<p>
<var>UpdateWSIcon</var> is a method used to update the widgetset class to
reflect the values from <var>HasIcon</var> and the <var>Bitmap</var>
property. HasIcon returns <b>True</b> when a bitmap is available and in use
for the menu item. Bitmap contains the image displayed for the menu item, and
may be <b>Nil</b> when HasIcon returns <b>False</b>.
</p>
<p>
UpdateWSIcon requires a valid <var>Handle</var> for the menu item. No actions
are performed in the method when Handle has not been allocated for the menu
item.
</p>
<p>
UpdateWSIcon is called when a value is assigned to the Bitmap or
<var>ImageIndex</var> property, and from the <var>UpdateImage</var> method.
</p>
</descr>
<seealso/>
</element>
<element name="TMenuItem.ImageListChange">
<short>
Implements the event handler signalled when SubMenuImages property has been
updated.
</short>
<descr/>
<seealso>
<link id="TMenuItem.SubMenuImages"/>
<link id="TMenuItem.UpdateImages"/>
<link id="TMenuItem.Create"/>
<link id="#lcl.imglist.TChangeLink.OnChange">TChangeLink.OnChange</link>
<link id="#lcl.imglist.TCustomImageList.Change">TCustomImageList.Change</link>
</seealso>
</element>
<element name="TMenuItem.ImageListChange.Sender">
<short>
Object (TCustomImageList) for the event notification.
</short>
</element>
<element name="TMenuItem.ActionLink">
<short>
Contains the link to the Action for the menu item.
</short>
<descr>
<p>
<var>ActionLink</var> is a <var>TMenuActionLink</var> property which
maintains an association between the control and an assigned Action.
ActionLink is unassigned (Nil) until a value is assigned to the Action
property. ActionLink is (re-)created and assigned when the value is stored in
Action. It is used (when assigned) to read the value for the Action property.
</p>
<p>
ActionLink is used in the Click method to determine whether the OnClick event
handler is signalled for the control, or whether the Execute method in Action
is called.
</p>
</descr>
<seealso>
<link id="TMenuItem.Action"/>
<link id="TMenuItem.SetAction"/>
<link id="TMenuItem.Click"/>
<link id="TMenuItem.Checked"/>
<link id="TMenuItem.OnClick"/>
<link id="TMenuItem.GetActionLinkClass"/>
<link id="#rtl.classes.TBasicAction.Execute">TBasicAction.Execute</link>
</seealso>
</element>
<element name="TMenuItem.FCompStyle">
<short>Member used to store style flags for the component.</short>
<descr/>
<seealso/>
</element>
<element name="TMenuItem.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
<var>Create</var> is the overridden constructor for <var>TMenuItem</var>, and
calls the inherited method on entry. Create sets the default values for
properties, and allocates resources needed for the internal
<var>TChangeLink</var> instance used in the class instance.
</p>
</descr>
<seealso>
<link id="#rtl.Classes.TComponent.Create">TComponent.Create</link>
</seealso>
</element>
<element name="TMenuItem.Create.TheOwner">
<short>Owner of the class instance.</short>
</element>
<element name="TMenuItem.Destroy">
<short>Destructor for the class instance.</short>
<descr>
<p>
<var>Destroy</var> is the overridden destructor for the class instance.
Destroy ensures that resources allocated for the class instance are freed.
This includes freeing the Bitmap, Handle, and any Items or Merged items for
the menu item. It also removes itself from the Items for the Parent menu or
menu item. Destroy calls the inherited destructor prior to exit.
</p>
</descr>
<seealso>
<link id="#rtl.Classes.TComponent.Destroy">TComponent.Destroy</link>
</seealso>
</element>
<element name="TMenuItem.Find">
<short>
<var>Find</var> the identity given menu item (named in <var>ACaption</var>).
</short>
<descr>
<p>
<var>Find</var> is a <var>TMenuItem</var> function used to locate the menu
item in <var>Items</var> with the caption specified in the
<var>ACaption</var> argument. Find calls <var>IndexOfCaption</var> to get the
ordinal position in Items for the specified menu item. If a menu item with
the given caption is not found, the return value is <b>Nil</b>.
</p>
</descr>
<seealso/>
</element>
<element name="TMenuItem.Find.ACaption">
<short>Caption for the menu item to locate in the method.</short>
</element>
<element name="TMenuItem.GetEnumerator">
<short>
Gets an enumerator for the child menu Items in the class instance.
</short>
<descr>
<p>
<var>GetEnumerator</var> is a <var>TMenuItemEnumerator</var> function used to
get an enumerator for the TMenuItem instances in the Items property. It
re-introduces the method from TComponent to return the TMenuItemEnumerator
type.
</p>
</descr>
<seealso>
<link id="TMenuItem.Items"/>
<link id="TMenuItemEnumerator"/>
<link id="#rtl.classes.TComponent.GetEnumerator">TComponent.GetEnumerator</link>
</seealso>
</element>
<element name="TMenuItem.GetEnumerator.Result">
<short>TMenuItemEnumerator instance for the Items in the class.</short>
</element>
<element name="TMenuItem.GetImageList">
<short>
Gets an image list with the available bitmaps for the menu item.
</short>
<descr>
<p>
<var>GetImageList</var> is an overloaded method used to get the list of
available images for the menu item. The images are retrieved from an ancestor
menu item or the menu which contains the menu item.
</p>
<p>
<var>AImages</var> is an output variable with the <var>TCustomImageList</var>
which contains the available images.
</p>
<p>
<var>AImagesWidth</var> is an output variable with the width for the bitmaps
in the AImages argument.
</p>
<p>
When <var>Parent</var> has been assigned, the <var>SubMenuImages</var>
property in an ancestor menu item is copied into the image list. The Width in
the image list is used in the aImagesWidth argument.
</p>
<p>
When Parent has not been assigned, <var>GetParentMenu</var> is called to get
the menu which contains the menu item. Its <var>Images</var> property is
copied into the image list. The Width in the image list is used in the
aImagesWidth argument.
</p>
<p>
The TCustomImageList instance is <b>Nil</b> (unassigned) if neither
SubMenuImages nor Images can be retrieved for the menu item.
</p>
<p>
Use the <var>ImageIndex</var> property to specify which image is used for the
menu item. Use <var>Bitmap</var> to access the image displayed for the menu
item.
</p>
<p>
GetImageList is called when the value for the Bitmap property is read. The
image list provides an image resolution with the image for the Bitmap
property. It is also called from the <var>HasIcon</var> and
<var>GetIconSize</var> methods.
</p>
</descr>
<seealso/>
</element>
<element name="TMenuItem.GetImageList.Result">
<short>TCustomImageList with the bitmaps available for the menu item.</short>
</element>
<element name="TMenuItem.GetImageList.aImages">
<short>Output variable with the images available for the menu item.</short>
</element>
<element name="TMenuItem.GetImageList.aImagesWidth">
<short>Output variable with the width for the images in AImages.</short>
</element>
<element name="TMenuItem.GetParentComponent">
<short>Gets the menu for the Parent component when available.</short>
<descr>
<p>
Overridden to ensure that the <var>TMenu</var> instance for the
<var>Parent</var> menu item is used (when assigned). If not assigned, the
value in Parent is returned. GetParentComponent does not call the inherited
method.
</p>
</descr>
<seealso>
<link id="#rtl.classes.TComponent.GetParentComponent">TComponent.GetParentComponent</link>
</seealso>
</element>
<element name="TMenuItem.GetParentComponent.Result">
<short>Parent menu item or menu for the current class instance.</short>
</element>
<element name="TMenuItem.GetParentMenu">
<short>Gets the parent menu to which this menu item belongs.</short>
<descr>
<p>
<var>GetParentMenu</var> is a <var>TMenu</var> function used to get the menu
where the menu item or its Parent menu item is located. GetParentMenu visits
each of the Parent menu items. When an item is located without an assigned
Parent, its Menu property is used as the return value for the method. The
return value is <b>Nil</b> if all menu items in the hierarchy have a Parent
menu item.
</p>
<p>
GetParentMenu is used in methods like <var>GetIsRightToLeft</var>,
<var>GetImageList</var>, <var>DoDrawItem</var>, and <var>DoMeasureItem</var>.
</p>
</descr>
<seealso>
<link id="TMenuItem.GetIsRightToLeft"/>
<link id="TMenuItem.GetImageList"/>
<link id="TMenuItem.DoDrawItem"/>
<link id="TMenuItem.DoMeasureItem"/>
</seealso>
</element>
<element name="TMenuItem.GetParentMenu.Result">
<short>
Menu for the top-most unparented menu item in the hierarchy, or <b>Nil</b>
when not found.
</short>
</element>
<element name="TMenuItem.GetMergedParentMenu">
<short>
Gets the parent menu to which this menu item belongs taking a merged menu
into account.
</short>
<descr/>
<seealso/>
</element>
<element name="TMenuItem.GetMergedParentMenu.Result">
<short>
Original parent menu for a merged menu item.
</short>
</element>
<element name="TMenuItem.GetIsRightToLeft">
<short>
Determines whether right-to-left display is enabled for the menu item.
</short>
<descr>
<p>
Calls <var>GetParentMenu</var> to get the menu which contains the menu item.
The return value is <b>False</b> if a parent menu is not found for the menu
item, or the <var>BiDiMode</var> in the menu is set to
<var>bdLeftToRight</var>.
</p>
</descr>
<seealso/>
</element>
<element name="TMenuItem.GetIsRightToLeft.Result">
<short>
<b>True</b> when the menu item has a parent menu with a BiDiMode other than
bdLeftToRight.
</short>
</element>
<element name="TMenuItem.HandleAllocated">
<short>
Indicates whether a Handle has been allocated for the menu item.
</short>
<descr/>
<seealso/>
</element>
<element name="TMenuItem.HandleAllocated.Result">
<short><b>True</b> when Handle has a non-zero value.</short>
</element>
<element name="TMenuItem.HasIcon">
<short>
<b>True</b> when a bitmap is configured and available for the menu item.
</short>
<descr>
<p>
<var>HasIcon</var> is a <var>Boolean</var> function which indicates if a
<var>Bitmap</var> is configured and available for the menu item. The menu
item is configured to display a bitmap using the <var>GlyphShowMode</var> and
<var>ImageIndex</var> properties, or by assigning a <var>TBitmap</var> value
to the Bitmap property.
</p>
<p>
The return value is <b>False</b> for the following conditions:
</p>
<ul>
<li>GlyphShowMode is set to gsmNever.</li>
<li>
GlyphShowMode is set to gsmApplication and TApplication.ShowMenuGlyphs is set
to sbgNever.
</li>
<li>
GlyphShowMode is set to gsmSystem and SystemShowGlyphMenus returns
<b>False</b>.
</li>
<li>An image list is not available or ImageIndex contains an invalid
index.</li>
<li>Bitmap has an empty image.</li>
</ul>
</descr>
<seealso>
<link id="TMenuItem.Bitmap"/>
<link id="TMenuItem.GlyphShowMode"/>
<link id="TMenuItem.GetImageList"/>
<link id="TMenuItem.ImageIndex"/>
<link id="TMenuItem.GetIconSize"/>
<link id="TMenuItem.UpdateWSIcon"/>
<link id="#lcl.forms.TApplication.ShowMenuGlyphs">TApplication.ShowMenuGlyphs</link>
</seealso>
</element>
<element name="TMenuItem.HasIcon.Result">
<short>
<b>True</b> when a bitmap is configured and available for the menu item.
</short>
</element>
<element name="TMenuItem.HasParent">
<short>Indicates if the menu item has a parent menu item.</short>
<descr>
<p>
Returns <b>True</b> if the menu item has a parent responsible for streaming.
Overridden to check for an assigned value in the Parent property. Does not
call the inherited method.
</p>
</descr>
<seealso>
<link id="#rtl.classes.TComponent.HasParent">TComponent.HasParent</link>
</seealso>
</element>
<element name="TMenuItem.HasParent.Result">
<short>
<b>True</b> when a Parent menu item has been assigned for the menu item.
</short>
</element>
<element name="TMenuItem.InitiateAction">
<short>
Updates the Action in the ActionLink for the menu item.
</short>
<descr>
<p>
Calls the Update method in ActionLink (when assigned).
</p>
</descr>
<seealso>
<link id="TMenuItem.ActionLink"/>
<link id="#rtl.classes.TBasicAction.Update">TBasicAction.Update</link>
</seealso>
</element>
<element name="TMenuItem.IntfDoSelect">
<short>
Performs actions needed when the menu item is selected using the LCL
interface.
</short>
<descr>
<p>
Forces the Application to display the Hint for the active menu item.
</p>
</descr>
<seealso>
<link id="#lcl.forms.TApplication.Hint">TApplication.Hint</link>
<link id="#lcl.forms.Application">Application</link>
<link id="#lcl.forms.GetLongHint">GetLongHint</link>
</seealso>
</element>
<element name="TMenuItem.IndexOf">
<short>
Gets the ordinal position in Items for the specified menu item.
</short>
<descr>
<p>
Calls the <var>IndexOf</var> method in <var>Items</var> to locate the menu
item specified in <var>Item</var>. The return value is <b>-1</b> if Items has
not been assigned in the class instance.
</p>
</descr>
<seealso>
<link id="TMenuItem.Items"/>
</seealso>
</element>
<element name="TMenuItem.IndexOf.Result">
<short>
Ordinal position for the specified menu item, or -1 when not found.
</short>
</element>
<element name="TMenuItem.IndexOf.Item">
<short>Menu item to locate in the Items property.</short>
</element>
<element name="TMenuItem.IndexOfCaption">
<short>
Gets the ordinal position in Items for the menu item with the specified
Caption.
</short>
<descr>
<p>
<var>IndexOfCaption</var> visits the <var>TMenuItem</var> instances in the
<var>Items</var> property to locate the menu item with the <var>Caption</var>
specified in <var>ACaption</var>. Case is significant when comparing the
value in ACaption to the menu item(s).
</p>
<p>
The return value contains the ordinal position in Items for the menu item
with the specified caption, or <b>-1</b> when a menu item is not found.
</p>
</descr>
<seealso>
<link id="TMenuItem.Items"/>
<link id="TMenuItem.Caption"/>
</seealso>
</element>
<element name="TMenuItem.IndexOfCaption.Result">
<short>
Ordinal position for the menu item with the given caption, or -1 when not
found.
</short>
</element>
<element name="TMenuItem.IndexOfCaption.ACaption">
<short>Caption text to locate in the child Items for the menu item.</short>
</element>
<element name="TMenuItem.InvalidateMergedItems">
<short>Frees the MergedItems property for the menu item.</short>
<descr/>
<seealso>
<link id="TMenuItem.MergedItems"/>
<link id="TMenuItem.Visible"/>
</seealso>
</element>
<element name="TMenuItem.VisibleIndexOf">
<short>
Gets the ordinal position for the specified menu item in the list of visible
menu items.
</short>
<descr>
<p>
<var>VisibleIndexOf</var> is an <var>Integer</var> function used to get the
ordinal position for the specified menu item in the list of visible menu
items.
</p>
<p>
<var>Item</var> contains the <var>TMenuItem</var> instance to locate in the
<var>MergedItems</var> property. No actions are performed in the method if
the <var>Visible</var> property in Item is set to <b>False</b>, and the
return value is set to <b>-1</b>.
</p>
<p>
VisibleIndexOf visits each of the visible items in MergedItems to locate the
value specified in Item. The return value is set to the position in
VisibleItems where the menu item was found. The return value is -1 if Item is
not found in the VisibleItems for the MergedItems property.
</p>
</descr>
<seealso/>
</element>
<element name="TMenuItem.VisibleIndexOf.Result">
<short>
Ordinal position in the visible Mergeditems for the specified menu item.
</short>
</element>
<element name="TMenuItem.VisibleIndexOf.Item">
<short>Menu item to locate in the visible MergedItems.</short>
</element>
<element name="TMenuItem.Add">
<short>Adds item(s) to the menu item.</short>
<descr>
<p>
<var>Add</var> is an overloaded method used to add one or more items to the
menu. Variants are provided that allow a single TMenuItem instance to be
added, or an array of TMenuItem instances.
</p>
<p>
The single menu item variant calls Insert to store the value in Item at the
position in the Count property. Insert will increment the value in Count.
</p>
<p>
The array variant iterates over each of the elements in the array, and calls
Add to store the menu instances in Items.
</p>
<remark>
Adding a child menu item that is a Separator may crash the application on
non-Windows platforms. Use the AddSeparator method instead.
</remark>
</descr>
<seealso>
<link id="TMenuItem.Insert"/>
<link id="TMenuItem.Count"/>
<link id="TMenuItem.Caption"/>
<link id="TMenuItem.AddSeparator"/>
</seealso>
</element>
<element name="TMenuItem.Add.Item">
<short>Menu item added to the child Items.</short>
</element>
<element name="TMenuItem.Add.AItems">
<short>Array of menu items added to the child Items.</short>
</element>
<element name="TMenuItem.AddSeparator">
<short>Adds a separator line to the child menu items.</short>
<descr>
<p>
<var>AddSeparator</var> is a method used to add a separator line to the child
menu <var>Items</var>. AddSeparator creates a new <var>TMenuItem</var>
instance, and sets its <var>Caption</var> to the value in the
<var>cLineCaption</var> constant. The <var>Add</var> method is called to
append the menu item to the Items property.
</p>
</descr>
<seealso>
<link id="TMenuItem.Caption"/>
<link id="TMenuItem.Items"/>
<link id="TMenuItem.Add"/>
<link id="TMenuItem.Insert"/>
<link id="cLineCaption"/>
</seealso>
</element>
<element name="TMenuItem.Click">
<short>Performs actions needed when the menu item is clicked.</short>
<descr>
<p>
<var>Click</var> is method used to perform actions needed when the menu item
is clicked, or when the <var>DoClick</var> method is called. No actions are
performed in the method if the menu item is not <var>Enabled</var>.
</p>
<p>
Click signals the <var>OnMenuPopupHandler</var> event handler variable (when
assigned).
</p>
<p>
Properties in the <var>TMenuItem</var> instance are examined to determine
whether an <var>Action</var> is used to execute the menu item, or if its
<var>OnClick</var> event handler is signalled for the purpose. An action is
used when the <var>ActionLink</var> property has been assigned for the class
instance. The action is not executed if the menu item is clicked at
design-time.
</p>
<p>
Otherwise, the OnClick event handler is used. When <var>AutoCheck</var> is
enabled, the value for the <var>Checked</var> property is toggled when the
menu item. If the menu item has been configured as a <var>RadioItem</var>,
Checked <b>cannot</b> be set to <b>False</b>; that is handled using the logic
for the radio button group.
</p>
<p>
The OnClick event handler is signalled to perform the actions for the menu item.
</p>
<p>
AutoCheck does not cause the item to become checked at design-time.
</p>
</descr>
<seealso>
<link id="TMenuItem.AutoCheck"/>
<link id="TMenuItem.Checked"/>
<link id="TMenuItem.OnClick"/>
<link id="OnMenuPopupHandler"/>
</seealso>
</element>
<element name="TMenuItem.Delete">
<short>Deletes the child menu item at the specified position in Items.</short>
<descr>
<p>
<var>Delete</var> is a method used to delete the menu item in
<var>Items</var> at the position specified in <var>Index</var>. Index must be
in the range <b>0..<var>Count</var>-1</b>. An <var>EMenuError</var> exception
is raised when Index is not in the required range, when Items has not been
assigned for the class instance, or when the menu item has already been freed.
</p>
<p>
Delete calls the <var>DestroyHandle</var> method for the TMenuItem instance
to free the <var>Handle</var> for the menu item, and sets its
<var>Parent</var> property to <b>Nil</b>. The Delete method in Items is
called to free the menu item. The <var>MenuChanged</var> method is called to
signal the <var>OnChange</var> event handler (when assigned) and to
optionally rebuild the child menu items.
</p>
</descr>
<seealso/>
</element>
<element name="TMenuItem.Delete.Index">
<short>Ordinal position for the menu item removed in the method.</short>
</element>
<element name="TMenuItem.HandleNeeded">
<short>Ensures that a valid Handle exists for the menu item.</short>
<descr>
<p>
Checks the value in <var>Handle</var> to ensure that a handle has been
allocated for the menu item. Calls <var>CreateHandle</var> when Handle is set
to <b>0</b> (unassigned).
</p>
</descr>
<seealso>
<link id="TMenuItem.Handle"/>
<link id="TMenuItem.HandleAllocated"/>
<link id="TMenuItem.GetHandle"/>
<link id="TMenuItem.CreateHandle"/>
</seealso>
</element>
<element name="TMenuItem.Insert">
<short>
<var>Insert</var> stores the specified menu item at the location indicated by
<var>Index</var>.
</short>
<descr>
<p>
No actions are performed in the method when Item is unassigned (contains
<b>Nil</b>).
</p>
<p>
A catchable debugger exception is raised if the Parent in Item is already
assigned. The exception message is 'Menu inserted twice'.
</p>
<p>
Insert ensures that the TMenuItems storage has been allocated for the
TMenuItem instances in the Items property.
</p>
<p>
Insert modifies Item to use the current class as the Parent for the menu
item, and assigns the private method used in the OnChange handler in Item. If
Item is Visible, its handle is allocated when not already assigned.
</p>
<p>
MenuChanged is called to signal the OnChange event handler when assigned.
</p>
<p>
Insert is called from the Add method, and when the Parent menu item is
changed after setting a new value in the MenuIndex property.
</p>
</descr>
<seealso>
<link id="TMenuItem.Items"/>
<link id="TMenuItem.Parent"/>
<link id="TMenuItem.Visible"/>
<link id="TMenu.OnChange"/>
<link id="TMenuItems"/>
</seealso>
</element>
<element name="TMenuItem.Insert.Index">
<short>Ordinal position in Items where the menu item is inserted.</short>
</element>
<element name="TMenuItem.Insert.Item">
<short>Menu item inserted in Items.</short>
</element>
<element name="TMenuItem.RecreateHandle">
<short>Re-creates the Handle for the menu item.</short>
<descr>
<p>
RecreateHandle is a method used to destroy and re-create the
<var>Handle</var> for the menu item. It is called when the type or the
context for a <var>TMenuItem</var> instance is changed.
</p>
</descr>
<seealso>
<link id="TMenuItem.Handle"/>
<link id="TMenuItem.HandleAllocated"/>
<link id="TMenuItem.HandleNeeded"/>
<link id="TMenuItem.AutoCheck"/>
<link id="TMenuItem.ShowAlwaysCheckable"/>
</seealso>
</element>
<element name="TMenuItem.Remove">
<short>Removes the specified menu item from its Parent.</short>
<descr>
<p>
<var>Remove</var> is a method used to locate and delete the menu item
specified in <var>Item</var>. Remove call <var>IndexOf</var> to get the
position in <var>Items</var> where the menu item is stored. An
<var>EMenuError</var> exception is raised if the menu item in Item is not
found in the Items property.
</p>
<p>
Remove calls the <var>Delete</var> method to free the handle and the menu
item instance at the required position.
</p>
</descr>
<seealso/>
</element>
<element name="TMenuItem.Remove.Item">
<short>Menu item removed in the method.</short>
</element>
<element name="TMenuItem.UpdateImage">
<short>
Updates the image associated with the menu item.
</short>
<descr>
<p>
No actions are performed in the method during LCL component streaming, or
when the class instance is freed.
</p>
<p>
UpdateImage calls GetImageList to retrieve the list of images used in the
menu item, its Parent, or its sub-menu items.
</p>
<p>
An image assigned directly to the Bitmap property is freed and invalidated
when both the image list and the ImageIndex have been assigned.
</p>
<p>
If the handle for the menu item has been allocated, the UpdateWSIcon method
in the widgetset class is called to apply the Bitmap or Image to the widget.
</p>
<p>
UpdateImage is called when a new value is assigned to the GlyphShowMode
property, and from the UpdateImages method.
</p>
</descr>
<seealso/>
</element>
<element name="TMenuItem.UpdateImages">
<short>
Update the images for the menu item and its child items.
</short>
<descr>
<p>
<var>UpdateImages</var> is a method used to ensure that changes to image
settings in the menu item (or its parent) are applied the menu item and its
child Items. It is called when a new image list is assigned to the owner Menu,
to the Parent menu item, or to the SubMenuImages for the menu item. It is also
called if the image width is changed (which causes the image list to be
updated).
</p>
<p>
<var>Forced</var> indicates whether an existing image assigned directly to
Bitmap is invalidated - even when an image list or image index is not available
for the menu item.
</p>
<p>
UpdateImages calls the UpdateImage method in the class instance to apply
changes to Bitmap (when needed) and to notify the widget of the new icon. It
calls the UpdateImages method for each of the Items to cascade the change to
sub-menu items.
</p>
</descr>
<seealso>
<link id="TMenuItem.Bitmap"/>
<link id="TMenuItem.ImageIndex"/>
<link id="TMenuItem.Menu"/>
<link id="TMenuItem.Parent"/>
<link id="TMenuItem.Items"/>
<link id="TMenu.ImagesWidth"/>
<link id="TMenu.Images"/>
</seealso>
</element>
<element name="TMenuItem.UpdateImages.Forced">
<short>
<b>True</b> causes an image assigned to Bitmap to be invalidated - even when an
image list is not available or an image index has not been specified.
</short>
</element>
<element name="TMenuItem.IsCheckItem">
<short>
Indicates if the menu item is configured as a check box or a radio button
item.
</short>
<descr>
<p>
<var>IsCheckItem</var> is a <var>Boolean</var> function which returns
<b>True</b> when one of the following properties is set to <b>True</b>:
</p>
<ul>
<li>Checked</li>
<li>RadioItem</li>
<li>AutoCheck</li>
<li>ShowAlwaysCheckable</li>
</ul>
</descr>
<seealso>
<link id="TMenuItem.Checked"/>
<link id="TMenuItem.RadioItem"/>
<link id="TMenuItem.AutoCheck"/>
<link id="TMenuItem.ShowAlwaysCheckable"/>
</seealso>
</element>
<element name="TMenuItem.IsCheckItem.Result">
<short>
<b>True</b> if the menu item is configured as a check box or radio button
item.
</short>
</element>
<element name="TMenuItem.IsLine">
<short>
<b>True</b> if the menu item is configured as a separator line.
</short>
<descr>
<p>
<var>IsLine</var> is a Boolean function which indicates if the menu item is
configured as a separator line on its Parent. The return value is <b>True</b>
when Caption contains the value from the cLineCaption constant.
</p>
<p>
IsLine is used by the widgetset class instance to determine the menu flags
for the menu item, and to perform layout and drawing operations.
</p>
</descr>
<seealso>
<link id="TMenuItem.Caption"/>
<link id="cLineCaption"/>
</seealso>
</element>
<element name="TMenuItem.IsInMenuBar">
<short>
<b>True</b> if the menu item has a TMainMenu instance as its Parent.
</short>
<descr/>
<seealso>
<link id="TMenuItem.MergedParent"/>
<link id="TMenuItem.Menu"/>
<link id="TMainMenu"/>
</seealso>
</element>
<element name="TMenuItem.IsInMenuBar.Result">
<short>
<b>True</b> if the menu item has a main menu bar as its parent.
</short>
</element>
<element name="TMenuItem.Clear">
<short>
Removes all child menu Items in the class instance.
</short>
<descr>
<p>
<var>Clear</var> visits each of the <var>TMenuItem</var> instances in
<var>Items</var> (in reverse order) and calls their <var>Free</var> method.
Clear does not change other property values in the class instance.
</p>
</descr>
<seealso>
<link id="TMenuItem.Items"/>
</seealso>
</element>
<element name="TMenuItem.HasBitmap">
<short>
Indicates whether a TBitmap instance has been assigned to the Bitmap property.
</short>
<descr/>
<seealso/>
</element>
<element name="TMenuItem.HasBitmap.Result">
<short>
<b>True</b> if a TBitmap instance has been assigned to the Bitmap property.
</short>
</element>
<element name="TMenuItem.GetIconSize">
<short>
Gets the size for the icon (glyph) when used on the menu item.
</short>
<descr>
<p>
The return value is a <var>TPoint</var> instance with the Width (X) and Height
(y) for the glyph displayed on the menu item. The return value is an empty
TPoint instance if HasIcon returns <b>False</b>.
</p>
<p>
If <var>HasIcon</var> returns <b>True</b>, GetImageList is called to get the
images and their Width. If ImageIndex does not exist in the image list, the
method is exited with an empty TPoint instance in the return value.
</p>
<p>
<var>DPI</var> indicates the Dots Per Inch requested for the icon image. When
DPI contains the default value (0), GetDeviceCaps is called to get the logical
pixel size for the device context in the ADC argument. The SizeForPPI method
in the image list is called to get the size for the scaled image resolution
for the DPI value. The size information is stored in the return value.
</p>
<p>
If an image list has not been assigned to Images or SubMenuImages, the Width
and Height values in Bitmap as used in the return value.
</p>
<p>
GetIconSize is called when a widgetset class renders the menu or menu item to
the device context for its window Handle.
</p>
</descr>
<version>
Modified in LCL version 3.0 to include the DPI argument.
</version>
<seealso/>
</element>
<element name="TMenuItem.GetIconSize.Result">
<short>
TPoint instance with the width and height for the glyph displayed on the menu
item.
</short>
</element>
<element name="TMenuItem.GetIconSize.ADC">
<short>
Device context used to get the display density (PPI) for the glyph images.
</short>
</element>
<element name="TMenuItem.GetIconSize.DPI">
<short>
DPI setting used to scale the icon images retrieved in the method to the
monitor where menu item is displayed.
</short>
</element>
<element name="TMenuItem.RethinkLines">
<short>
Performs actions needed to update the visibility of child menu separators and
signal the OnChange event handler for the changes.
</short>
<descr>
<p>
<var>RethinkLines</var> calls the InternalRethinkLines method to toggle the
visibility of examine or update the visible child menu items. If any of the
child Items was changed, the MenuChanged method is called to signal the
OnChange event handler (when assigned) and rebuild (re-display) the submenu.
</p>
</descr>
<version>
Added in LCL version 4.0.
</version>
<seealso>
<link id="TMenuItem.Items"/>
<link id="TMenuItem.MenuChanged"/>
<link id="TMenuItem.InternalRethinkLines"/>
<link id="TMenu.OnChange"/>
<link id="TMainMenu.OnChange"/>
</seealso>
</element>
<element name="TMenuItem.RethinkLines.Result">
<short>
Returns <b>True</b> if the visibility of child menu item(s) was changed in the
method.
</short>
</element>
<element name="TMenuItem.RemoveAllHandlersOfObject">
<short>
Removes all handler routines for the specified object instance from the
internal handler lists.
</short>
<descr/>
<seealso>
<link id="#lcl.lclclasses.TLCLComponent.RemoveAllHandlersOfObject"/>
</seealso>
</element>
<element name="TMenuItem.RemoveAllHandlersOfObject.AnObject">
<short>
Object instance with the handler routines removed in the method.
</short>
</element>
<element name="TMenuItem.AddHandlerOnDestroy">
<short>
Adds an OnDestroy event handler to the handlers for the menu item.
</short>
<descr/>
<seealso/>
</element>
<element name="TMenuItem.AddHandlerOnDestroy.OnDestroyEvent">
<short>Routine added to the handlers for the menu item.</short>
</element>
<element name="TMenuItem.AddHandlerOnDestroy.AsFirst">
<short>
<b>True</b> if the handler is the first in the list of OnDestroy handlers.
</short>
</element>
<element name="TMenuItem.RemoveHandlerOnDestroy">
<short>
Removes the specified OnDestroy event handler from the list of handlers for
the menu item.
</short>
<descr/>
<seealso/>
</element>
<element name="TMenuItem.RemoveHandlerOnDestroy.OnDestroyEvent">
<short>Routine removed from the list of handlers in the menu item.</short>
</element>
<element name="TMenuItem.AddHandler">
<short>
Adds an event handler routine of the specified type to the menu item.
</short>
<descr/>
<seealso/>
</element>
<element name="TMenuItem.AddHandler.HandlerType">
<short>Identifies the type of handler added in the method.</short>
</element>
<element name="TMenuItem.AddHandler.AMethod">
<short>Event handler routine added to the list of handlers.</short>
</element>
<element name="TMenuItem.AddHandler.AsFirst">
<short><b>True</b> if the handler is the first for the given type.</short>
</element>
<element name="TMenuItem.RemoveHandler">
<short>
Removes the event handler routine from the specified handler type.
</short>
<descr/>
<seealso/>
</element>
<element name="TMenuItem.RemoveHandler.HandlerType">
<short>
Handler type where the specified routine is stored.
</short>
</element>
<element name="TMenuItem.RemoveHandler.AMethod">
<short>
Record with the Pointers to the code and data removed in the method.
</short>
</element>
<element name="TMenuItem.Merged">
<short>
Menu item where the class instance and its children have been merged.
</short>
<descr>
<p>
<var>Merged</var> is a read-only <var>TMenuItem</var> property with the menu
item where the menu item and its child menu items have been merged.
</p>
</descr>
<seealso>
<link id="TMenuItem.MergedItems"/>
<link id="TMenuItem.MergedParent"/>
</seealso>
</element>
<element name="TMenuItem.MergedWith">
<short>Menu item where the current class instance was merged.</short>
<descr>
<p>
<var>MergedWith</var> is a read-only <var>TMenuItem</var> property with the
menu item where the current class instance was merged.
</p>
</descr>
<seealso>
<link id="TMenuItem.Merged"/>
<link id="TMenuItem.MergedItems"/>
<link id="TMenuItem.MergedParent"/>
</seealso>
</element>
<element name="TMenuItem.Count">
<short>
Number of child menu items stored in the Items property.
</short>
<descr>
<p>
<var>Count</var> is a read-only <var>Integer</var> property with the number
of child menu items stored in the <var>Items</var> property. The property
value is redirected to the Count property in Items. The property value is
<b>0</b> when Items has not been assigned (contains <b>Nil</b>).
</p>
</descr>
<seealso>
<link id="TMenuItem.Items"/>
<link id="#rtl.classes.TList.Count">TList.Count</link>
</seealso>
</element>
<element name="TMenuItem.Handle">
<short>Handle for the menu item allocated in the widgetset class.</short>
<descr>
<p>
<var>Handle</var> is a <var>HMenu</var> property with the handle for the menu
item. Reading the value for the property causes the <var>HandleNeeded</var>
method to be called to ensure that a valid handle exists for the menu item.
The Handle value is assigned when the <var>CreateHandle</var> method in the
widgetset class is called. Handle is set <b>0</b> when it has not been
allocated using the widgetset class.
</p>
</descr>
<seealso>
<link id="TMenuItem.GetHandle"/>
<link id="TMenuItem.HandleNeeded"/>
<link id="TMenuItem.CreateHandle"/>
<link id="TMenuItem.RecreateHandle"/>
</seealso>
</element>
<element name="TMenuItem.Items">
<short>
Provides indexed access to the child menu items for the current class
instance.
</short>
<descr>
<p>
<var>Items</var> is a read-only <var>TMenuItem</var> property which provides
indexed access to the child menu items for the current class instance. An
internal <var>TList</var> member is used to store the TMenuItem property
values.
</p>
<p>
<var>Index</var> contains the ordinal position in the list for the TMenuItem
instance returned as the property value.
</p>
<p>
An <var>EMenuError</var> is raised when accessing a value in the property and
the Items list has not been assigned. The exception message reports an "Index
Out of Bounds" condition.
</p>
<p>
TMenuItem instances are added and removed from the internal list using the
<var>Add</var>, <var>AddSeparator</var>, <var>Delete</var>, <var>Clear</var>,
and <var>Remove</var> methods.
</p>
<p>
Use the <var>IndexOf</var>, <var>IndexOfCaption</var>, and <var>Find</var>
methods to locate a particular menu item in the Items property.
</p>
</descr>
<seealso/>
</element>
<element name="TMenuItem.Items.Index">
<short>Ordinal position in the list for the property value.</short>
</element>
<element name="TMenuItem.MergedItems">
<short>
Returns the visible and invisible child items taking the merged menu into
account.
</short>
<descr>
<p>
<var>MergedItems</var> is a read-only <var>TMergedMenuItems</var> property
which contains a list of merged menu items for the class instance. Either
visible or invisible menu items can be accessed in the list.
</p>
</descr>
<seealso>
<link id="TMergedMenuItems"/>
<link id="TMenuItem"/>
</seealso>
</element>
<element name="TMenuItem.MenuIndex">
<short>
Ordinal position for the menu item in its Parent.
</short>
<descr>
<p>
<var>MenuIndex</var> is an <var>Integer</var> property with the ordinal
position for the menu item in its <var>Parent</var>.
</p>
<p>
The property value is retrieved by calling the <var>IndexOf</var> method in
Parent using the current class instance as an argument. The property value is
<b>-1</b> if Parent has not been assigned. Changing the value for the
property causes the menu item to be relocated in Parent to the position
indicated in the new property value.
</p>
</descr>
<seealso/>
</element>
<element name="TMenuItem.Menu">
<short>
Menu where the menu item is displayed.
</short>
<descr>
<p>
<var>Menu</var> is a read-only <var>TMenu</var> property with the menu which
owns the menu item or its ancestors.
</p>
</descr>
<seealso>
<link id="TMenuItem.GetParentMenu"/>
<link id="TMenu.Create"/>
</seealso>
</element>
<element name="TMenuItem.Parent">
<short>The parent menu item for the class instance.</short>
<descr>
<p>
<var>Parent</var> is a read-only <var>TMenuItem</var> property where the menu
item is hosted and displayed. The property value is assigned in the Insert
method when the menu item is added to to the parent menu or menu item. It
contain contain <b>Nil</b> if the menu item has not been added to (or has
been removed from) a parent menu or menu item.
</p>
</descr>
<seealso>
<link id="TMenuItem.Insert"/>
<link id="TMenuItem.Delete"/>
<link id="TMenuItem.Destroy"/>
<link id="TMenuItem.GetParentComponent"/>
<link id="TMenuItem.GetParentMenu"/>
</seealso>
</element>
<element name="TMenuItem.MergedParent">
<short>
The parent menu item for the class instance taking the merged menu into
account.
</short>
<descr/>
<seealso/>
</element>
<element name="TMenuItem.Command">
<short>
Numeric command for the menu item as assigned in the widgetset class.
</short>
<descr/>
<seealso/>
</element>
<element name="TMenuItem.MenuVisibleIndex">
<short>
<var>MenuVisibleIndex</var> - the index value of the visible menu.
</short>
<descr/>
<seealso/>
</element>
<element name="TMenuItem.MenuVisibleIndex.Result">
<short>
Ordinal position for the visible menu hosting the menu item.
</short>
</element>
<element name="TMenuItem.WriteDebugReport">
<short>
Generates information about the menu item and its child Items for use in the
debugger.
</short>
<descr/>
<seealso/>
</element>
<element name="TMenuItem.Action">
<short>
<var>Action</var> is the default action associated with the menu item.
</short>
<descr>
<p>
The value for the property is read from the Action member in ActionLink when
it has been assigned. Otherwise, the property value is <b>Nil</b>. Setting a
new value for the property causes the TMenuActionLink class instance in
ActionLink to be created and configured as needed.
</p>
</descr>
<seealso>
<link id="TMenuItem.ActionLink"/>
<link id="TMenuActionLink"/>
<link id="#rtl.classes.TBasicAction">TBasicAction</link>
</seealso>
</element>
<element name="TMenuItem.AutoCheck">
<short>
Indicates whether the menu item automatically toggles the value in Checked when
executed.
</short>
<descr>
<p>
<var>AutoCheck</var> is a <var>Boolean</var> property which determines whether
the value in Checked is updated when the menu item is clicked or executed. The
default value for the property is <b>False</b> and does not update the value in
Checked.
</p>
<p>
Changing the value for the property causes the handle for the menu item to be
recreated if it has already been allocated.
</p>
<p>
AutoCheck is used in the Click method when the menu item has its RadioItem
property enabled. The value in Checked is toggled if it has not already been
set. It is also used when a new Action is assigned for a menu item;
<b>False</b> allows the corresponding setting in the action to be used for the
menu item.
</p>
</descr>
<seealso>
<link id="TMenuItem.Checked"/>
<link id="TMenuItem.IsCheckItem"/>
<link id="TMenuItem.RadioItem"/>
<link id="TMenuItem.Click"/>
<link id="TMenuItem.Action"/>
</seealso>
</element>
<element name="TMenuItem.AutoLineReduction">
<short>
Indicates the method used to perform line reduction for the menu item and
optionally for its child Items.
</short>
<descr>
<p>
<var>AutoLineReduction</var> is a <var>TMenuItemAutoFlag</var> property which
controls if redundant separators on child Items are automatically hidden on the
submenu. Line reduction causes leading, trailing, or adjacent menu separators
to be hidden.
</p>
<p>
maAutomatic and maParent cause redundant separators to be maintained by the
Parent menu item (or menu). Use maManual if line reduction is performed only
when the RethinkLines method is explicitly called. The default value for the
property is maParent and causes the line reduction setting in the Parent to be
applied to the menu item.
</p>
<p>
See TMenuItemAutoFlag for more information about the valid values for the
property.
</p>
<p>
Changing the value for the property causes the MenuChanged method to be called
to signal the OnChange event handler and to build (display) the menu and its
child Items at run-time.
</p>
</descr>
<version>
Added in LCL version 4.0.
</version>
<seealso>
<link id="TMenuItemAutoFlag"/>
<link id="TMenu.AutoLineReduction"/>
<link id="TMenuAutoFlag"/>
</seealso>
</element>
<element name="TMenuItem.Caption">
<short>
The caption text displayed for the menu item.
</short>
<descr>
<p>
<var>Caption</var> is a <var>TTranslateString</var> property which contains the
text displayed for the menu item. Caption can include a prefixed character
which is used as the accelerator key for the menu item. Use the value in
cHotkeyPrefix to identify the character used as accelerator for the menu item.
The accelerator key is drawn at run-time using the style implemented for a
specific widgetset; this generally involves highlighting and/or underlining the
accelerator key.
</p>
<p>
For example:
</p>
<code>
AMenuItem.Caption := cHotkeyPrefix + 'Open'; // or
AMenuItem.Caption := '&Open';
</code>
<p>
Changing the value in the property causes the widgetset class to be notified
when the Handle has been allocated and the Parent property is assigned.
</p>
</descr>
<seealso>
<link id="cHotkeyPrefix"/>
<link id="#lcl.lcltype.TTranslateString">TTranslateString</link>
</seealso>
</element>
<element name="TMenuItem.Checked">
<short>
Indicates whether a check mark is displayed beside the menu item.
</short>
<descr>
<p>
<var>Checked</var> is a <var>Boolean</var> property which, when enabled,
displays a check mark prior to the Caption for the menu item. The default
value for the property is <b>False</b>.
</p>
<p>
When RadioItem is enabled for the menu item, changing Checked to <b>True</b>
causes the adjacent radio button-style menu items to set their Checked
properties to <b>False</b>.
</p>
<p>
The property value can be supplied by an Action assigned to the menu item. Use
AutoCheck to control whether the value from the assigned Action is used in the
Click method.
</p>
<remark>
Use of Checked and an assigned image using ImageIndex are mutually exclusive
on the Windows platform. At run-time, an image assigned using ImageIndex takes
precedence and the check mark is not drawn.
</remark>
<p>
Use ShowAlwaysCheckable to indicate that the menu item is always drawn using
the unchecked state - even when Checked is set to <b>True</b>.
</p>
</descr>
<seealso>
<link id="TMenuItem.AutoCheck"/>
<link id="TMenuItem.IsCheckItem"/>
<link id="TMenuItem.Click"/>
<link id="TMenuItem.ImageIndex"/>
<link id="TMenuItem.SubMenuImages"/>
<link id="TMenu.Images"/>
</seealso>
</element>
<element name="TMenuItem.Default">
<short>
Indicates if the menu item is the default selection.
</short>
<descr>
<p>
When <var>Default</var> is set to <b>True</b>, the menu item is normally
displayed using a bold typeface. The default value for the property is
<b>False</b> and indicates that the menu item is <b>not</b> the default menu item.
</p>
<p>
Only one of the entries in Items for a given TMenuItem instance can be the
default menu item. Changing the value for the Default property clears the
previous default item prior to setting the new default item. In addition,
MenuChanged is called to signal the OnChange event handler (when assigned).
This allows a parent menu item to be updated or rebuilt after the default item
has been changed.
</p>
<remark>
The Default property is not supported for the GTK2, GTK3, QT4, QT5, and QT6
widgetsets.
</remark>
</descr>
<seealso>
<link id="TMenuItem.Menu"/>
<link id="TMenuItem.Items"/>
<link id="TMenuItem.MenuChanged"/>
<link id="TMenu.Items"/>
</seealso>
</element>
<element name="TMenuItem.Enabled">
<short>
Indicates if the menu item can be selected and executed.
</short>
<descr>
<p>
When Enabled is set to <b>False</b>, the menu item is normally displayed
using a "greyed" style.
</p>
</descr>
<seealso/>
</element>
<element name="TMenuItem.Bitmap">
<short>
Bitmap image (glyph) displayed for the menu item.
</short>
<descr>
<p>
<var>Bitmap</var> is a <var>TBitmap</var> property which contains the bitmap
image displayed as a glyph for the menu item.
</p>
<p>
The value in Bitmap can be set by assigning a TBitmap instance to the
property. It may also be retrieved from images in the parent menu (or an
Action list) using the ImageIndex property. The assignment mechanisms are not
used at the same time. A value assigned directly to the Bitmap property
overrides the setting in ImageIndex.
</p>
<p>
Changing the value in Bitmap causes the UpdateWSIcon method to be called to
post the change to the widgetset class. The MenuChanged method is called to
signal the OnChange event handler (when assigned).
</p>
<p>
Use GlyphShowMode to control use the visibility of the glyph image for the
menu item.
</p>
</descr>
<seealso/>
</element>
<element name="TMenuItem.GroupIndex">
<short>
<var>GroupIndex</var>: the sequence number in a group of mutually exclusive
RadioItem choices.
</short>
<descr>
<p>
<var>GroupIndex</var> is a <var>Byte</var> property which indicates a group
for related menu items. GroupIndex is used in menu items displayed as radio
buttons. The menu items with their <var>RadioItem</var> property set and the
same value in GroupIndex are in the same mutually exclusive radio button
display; only one radio button item can be <var>Checked</var> at any given
time.
</p>
<p>
Changing the value for the property causes other radio button menu items with
the same GroupIndex to be un-checked when the current item is Checked. If the
<var>Handle</var> has been allocated for the menu item, the
<var>RegroupMenuItem</var> routine in the LCL interface is called.
</p>
<p>
The default value for the property is <b>0</b>, and indicates that a group
index value has not been assigned.
</p>
</descr>
<seealso/>
</element>
<element name="TMenuItem.GlyphShowMode">
<short>
Indicates the display behavior for the glyph (or Bitmap) on the menu item.
</short>
<descr>
<p>
GlyphShowMode is a TGlyphShowMode property which indicates the display
behavior for the glyph (or Bitmap) on the menu item. The default value for
the property is gsmApplication, and causes the value in
Application.ShowMenuGlyphs to be used to determine the visibility for a glyph
on the menu item.
</p>
<p>
See TGlyphShowMode for more information about values for the property and
their meanings.
</p>
</descr>
<seealso>
<link id="TGlyphShowMode"/>
</seealso>
</element>
<element name="TMenuItem.HelpContext">
<short>
Index to the context-sensitive help string used for the menu item (context
ID).
</short>
<descr/>
<seealso/>
</element>
<element name="TMenuItem.Hint">
<short>
Contains hint text displayed for the menu item.
</short>
<descr>
<p>
<var>Hint</var> is a <var>TTranslateString</var> property with the text
displayed as a hint for the menu item. Its value may be overwritten with the
Caption from an Action assigned to the menu item. As a TTranslateString
property, the value can be localized using the i18n facilities in the Lazarus
IDE when enabled for a project.
</p>
<p>
The hint text is displayed on the TStatusBar for a form when its AutoHint
property is enabled. For a top-level menu item, the hint text does not appear
until a menu item is selected / activated on the TMainMenu instance. Once an
item has been selected on the menu, hint text is displayed whenever the mouse
is hovered a menu item or when a new menu item is selected.
</p>
<p>
Hint is also assigned to the Hint property in Application (TApplication) for
use in its OnShowHint event handler.
</p>
</descr>
<seealso/>
<link id="TMenuItem.ActionChange"/>
<link id="TMenuItem.IntfDoSelect"/>
<link id="#lcl.actnlist.TCustomAction.Caption">TCustomAction.Caption</link>
<link id="#lcl.actnlist.TCustomAction.AutoCheck">TCustomAction.AutoCheck</link>
<link id="#lcl.comctrls.TStatusBar.AutoHint">TStatusBar.AutoHint</link>
<link id="#lcl.forms.TApplication.Hint">TApplication.Hint</link>
<link id="#lcl.forms.TApplication.OnShowHint">TApplication.OnShowHint</link>
<link id="#lcl.lcltype.TTranslateString">TTranslateString</link>
</element>
<element name="TMenuItem.ImageIndex">
<short>
Ordinal position in the list of images for the glyph displayed on the menu
item.
</short>
<descr>
<p>
<var>ImageIndex</var> refers to the position in the images for the parent of
the menu item. This can be the Images property in TMenu, or the SubMenuImages
property in a parent menu item.
</p>
<remark>
Use of Checked and an assigned image using ImageIndex are mutually exclusive
on the Windows platform. At run-time, an image assigned using ImageIndex takes
precedence and the check mark (radio button) is not drawn.
</remark>
</descr>
<seealso>
<link id="TMenu.Images"/>
<link id="TMenuItem.SubMenuImages"/>
<link id="TMenuItem.Checked"/>
</seealso>
</element>
<element name="TMenuItem.RadioItem">
<short>
Indicates if the menu item is displayed as a radio button.
</short>
<descr>
<p>
<var>RadioItem</var> is a <var>Boolean</var> property which controls the
appearance and behavior for the menu item. When enabled, the menu item acts as
a radio button which is part of the group specified in the GroupIndex property.
Only one of the radio buttons for GroupIndex can be selected (Checked) at any
given time. The default value for the property is False, and indicates that the
menu item does not display radio button behavior.
</p>
<p>
RadioItem is used in conjunction with the AutoCheck property. AutoCheck
indicates whether the Checked in toggled when the radio button menu item is
executed.
</p>
<p>
Use ShowAlwaysCheckable if space is reserved for the checked icon even when the
menu item is not Checked.
</p>
</descr>
<seealso>
<link id="TMenuItem.GroupIndex"/>
<link id="TMenuItem.Checked"/>
<link id="TMenuItem.AutoCheck"/>
<link id="TMenuItem.ShowAlwaysCheckable"/>
</seealso>
</element>
<element name="TMenuItem.RightJustify">
<short>
Indicates if the menu item caption is displayed with right-justification.
</short>
<descr>
<p>
The default value for the property is <b>False</b>, and causes the menu item
caption to use left-justification.
</p>
<remark>
RightJustify is not supported for the QT4, QT5, and QT6 widgetsets.
</remark>
</descr>
<seealso/>
</element>
<element name="TMenuItem.ShortCut">
<short>
Accelerator key sequence to be used in selecting this menu item.
</short>
<descr>
<p>
<var>ShortCut</var> - the quick key sequence to be used in selecting this
menu item
</p>
<p>
If you select this property in the Object Inspector, a list-box will appear
with choices for various key-combinations to be used. The chosen key-sequence
will be displayed, at run-time, on the menu drop-down next to the caption for
the menu item.
</p>
</descr>
<seealso/>
</element>
<element name="TMenuItem.ShortCutKey2">
<short>Secondary shortcut (accelerator) key for the menu item.</short>
<descr/>
<seealso/>
</element>
<element name="TMenuItem.ShowAlwaysCheckable">
<short>
<var>ShowAlwaysCheckable</var> - if <b>True</b>, Item is always shown as
checkable.
</short>
<descr/>
<seealso/>
</element>
<element name="TMenuItem.SubMenuImages">
<short>
<var>SubMenuImages</var> indicates if images are shown for sub-menu items as
well as the main item.
</short>
</element>
<element name="TMenuItem.SubMenuImagesWidth">
<short>Width for the bitmaps in the SubMenuImages property.</short>
<descr>
<p>
<var>SubMenuImagesWidth</var> is an <var>Integer</var> property with the
width for the bitmaps in the SubMenuImages property. The default value for
the property is 0 (zero), and indicates that an explicit value has not been
assigned for the property. This causes the width from the SubMenuImages image
list to be used.
</p>
</descr>
<seealso/>
</element>
<element name="TMenuItem.Visible">
<short>
Indicates whether the menu item is visible (<b>True</b>) or hidden
(<b>False</b>).
</short>
<descr>
<p>
<var>Visible</var> is a <var>Boolean</var> property which determines whether
the menu item is visible on its Menu or on a sub-menu for a Parent menu item.
The default value for the property is <b>True</b>.
</p>
<p>
Changing the value for the property causes a Parent or MergedParent menu to
redrawn at run-time, and the affected widget is notified of the change in
visibility.
</p>
</descr>
<seealso>
<link id="TMenuItem.VisibleIndexOf"/>
<link id="TMenuItem.Parent"/>
<link id="TMenuItem.MergedParent"/>
<link id="TMergedMenuItems.VisibleItems"/>
<link id="TMergedMenuItems.VisibleCount"/>
<link id="TMergedMenuItems.InvisibleItems"/>
<link id="TMergedMenuItems.InvisibleCount"/>
</seealso>
</element>
<element name="TMenuItem.OnClick">
<short>
Event handler signalled to perform the actions needed when the menu item is
executed.
</short>
<descr>
<p>
<var>OnClick</var> is a <var>TNotifyEvent</var> property with the event handler
signalled when the menu item is executed. OnClick is signalled from the Click
method (when assigned) if the menu item is Enabled. OnClick is not signalled
(even when assigned) if the menu item has an Action with an OnExecute event
handler; the action is used instead.
</p>
<p>
OnClick (or OnExecute in an action) occurs after values in AutoCheck and
Checked has been examined and optionally updated in the Click method.
</p>
</descr>
<seealso>
<link id="TMenuItem.Click"/>
<link id="TMenuItem.Enabled"/>
<link id="TMenuItem.Visible"/>
<link id="TMenuItem.Action"/>
<link id="TMenuItem.ActionLink"/>
<link id="TMenuActionLink"/>
<link id="#rtl.classes.TBasicAction">TBasicAction</link>
</seealso>
</element>
<element name="TMenuItem.OnDrawItem">
<short>
Event handler signalled to draw the menu item.
</short>
<descr>
<p>
<var>OnDrawItem</var> is a <var>TMenuDrawItemEvent</var> property with the
event handler signalled to draw the menu item. OnDrawItem is signalled (when
assigned) from the DoDrawItem method using the canvas, rectangle, and drawing
state passed as arguments.
</p>
<p>
A menu item may use the OnDrawItem handler found in a parent Menu if it does
not have one of its own.
</p>
</descr>
<seealso>
<link id="TMenuItem.Menu"/>
<link id="TMenuItem.Parent"/>
<link id="TMenuItem.DoDrawItem"/>
<link id="TMenu.OnDrawItem"/>
<link id="TMenuDrawItemEvent"/>
</seealso>
</element>
<element name="TMenuItem.OnMeasureItem">
<short>
Event handler signalled to get the Width and Height for the menu item.
</short>
<descr>
<p>
<var>OnMeasureItem</var> is a <var>TMenuMeasureItemEvent</var> property with
the event handler signalled to calculate the width and height for the menu
item. The ACanvas argument contains the TCanvas instance used to get the
width and height for the font used on the menu item, and is returned by the
widgetset class instance. AWidth and AHeight are variable arguments updated
with the dimensions for the menu item as returned by the widget.
</p>
<p>
OnMeasureItem is signalled (when assigned) from the DoMeasureItem method, and
occurs when the MenuItemSize routine is called for the platform / widgetset.
</p>
</descr>
<seealso>
<link id="TMenuItem.DoMeasureItem"/>
<link id="TMenuMeasureItemEvent"/>
</seealso>
</element>
<element name="TMenuItemClass">
<short>
Class type used to create new TMenuItem instances.
</short>
<descr>
<p>
Used primarily in the interface for the Lazarus IDE.
</p>
</descr>
<seealso>
<link id="TMenuItem"/>
</seealso>
</element>
<element name="TFindItemKind">
<short>
<var>TFindItemKind</var> - enumerated type for kind of item in search
operation: a command, a handle or a shortcut.
</short>
<descr>
<p>
<var>TFindItemKind</var> is an enumeration type with values that indicate the
property examined to find a menu item with a specified value. A value from
the enumeration is passed as an argument to the <var>TMenu.FindItem</var>
method.
</p>
</descr>
<seealso>
<link id="TMenu.FindItem"/>
</seealso>
</element>
<element name="TFindItemKind.fkCommand">
<short>Checks the Command property in a menu item.</short>
</element>
<element name="TFindItemKind.fkHandle">
<short>Checks the Handle property in a menu item.</short>
</element>
<element name="TFindItemKind.fkShortCut">
<short>Checks the ShortCut property in a menu item.</short>
</element>
<element name="TMenu">
<short>
<var>TMenu</var> - a menu appearing in a form. Base class for
<var>TMainMenu</var> or <var>TPopupMenu</var>.
</short>
<descr>
<p>
<var>TMenu</var> is the base class for all menus.
</p>
<p>
The class definition contains very few public or published properties or
methods accessible to the application programmer, but contains the entry
Items which points to the Menu Items that appear in the menu displays.
</p>
</descr>
<seealso>
<link id="HowToUseMenus">How To Use Menus</link>
<link id="TMainMenu"/>
<link id="TPopupMenu"/>
<link id="TMenuItem"/>
</seealso>
</element>
<!-- private -->
<element name="TMenu.FBiDiMode"/>
<element name="TMenu.FImageChangeLink"/>
<element name="TMenu.FImages"/>
<element name="TMenu.FImagesWidth"/>
<element name="TMenu.FItems"/>
<element name="TMenu.FOnDrawItem"/>
<element name="TMenu.FOnChange"/>
<element name="TMenu.FOnMeasureItem"/>
<element name="TMenu.FOwnerDraw"/>
<element name="TMenu.FParent"/>
<element name="TMenu.FParentBiDiMode"/>
<element name="TMenu.FShortcutHandled"/>
<!-- private methods -->
<element name="TMenu.CMParentBiDiModeChanged">
<short>
Handles the CM_PARENTBIDIMODECHANGED control message.
</short>
<descr>
<p>
See <var>TCustomForm.CMBiDiModeChanged</var> for more information.
</p>
</descr>
<seealso/>
</element>
<element name="TMenu.CMParentBiDiModeChanged.Message">
<short>Control message examined in the method.</short>
</element>
<element name="TMenu.CMAppShowMenuGlyphChanged">
<short>
Handles the CM_APPSHOWMENUGLYPHCHANGED message for the menu.
</short>
<descr/>
<seealso/>
</element>
<element name="TMenu.CMAppShowMenuGlyphChanged.Message">
<short>Control message examined in the method.</short>
</element>
<element name="TMenu.GetAutoLineReduction">
<short>
Gets the value for the AutoLineReduction property.
</short>
<descr>
<p>
<var>GetAutoLineReduction</var> ensures that the property contains a value
which is valid for the menu. maParent in the child Items is translated to
maAutomatic.
</p>
</descr>
<version>
Added in LCL version 4.0.
</version>
<seealso>
<link id="TMenu.AutoLineReduction"/>
<link id="TMenu.Items"/>
<link id="TMenuAutoFlag"/>
</seealso>
</element>
<element name="TMenu.GetAutoLineReduction.Result">
<short>
Value for the AutoLineReduction property.
</short>
</element>
<element name="TMenu.IsBiDiModeStored">
<short>Implements the storage specifier for the BiDiMode property.</short>
<descr/>
<seealso/>
</element>
<element name="TMenu.IsBiDiModeStored.Result">
<short>
<b>True</b> when BiDiMode contains a value other than the default.
</short>
</element>
<element name="TMenu.ImageListChange">
<short>
Implements the OnChange event handler used in the Images property.
</short>
<descr/>
<seealso/>
</element>
<element name="TMenu.ImageListChange.Sender">
<short>Object for the event notification.</short>
</element>
<element name="TMenu.SetAutoLineReduction">
<short>
Sets the value for the AutoLineReduction property.
</short>
<descr>
<p>
Stores the property value to AutoLineReduction in the Items member.
</p>
</descr>
<version>
Added in LCL version 4.0.
</version>
<seealso>
<link id="TMenu.AutoLineReduction"/>
<link id="TMenu.Items"/>
</seealso>
</element>
<element name="TMenu.SetAutoLineReduction.AValue">
<short>
New value for the AutoLineReduction property.
</short>
</element>
<element name="TMenu.SetBiDiMode">
<short>Sets the value for the BiDiMode property.</short>
<descr/>
<seealso>
<link id="TMenu.BiDiMode"/>
</seealso>
</element>
<element name="TMenu.SetBiDiMode.AValue">
<short>New value for the property.</short>
</element>
<element name="TMenu.SetImages">
<short>Sets the value for the Images property.</short>
<descr/>
<seealso>
<link id="TMenu.Images"/>
</seealso>
</element>
<element name="TMenu.SetImages.AValue">
<short>New value for the property.</short>
</element>
<element name="TMenu.SetImagesWidth">
<short>Sets the value for the ImagesWidth property.</short>
<descr/>
<seealso>
<link id="TMenu.ImagesWidth"/>
</seealso>
</element>
<element name="TMenu.SetImagesWidth.aImagesWidth">
<short>New value for the property.</short>
</element>
<element name="TMenu.SetParent">
<short>Sets the value for the Parent property.</short>
<descr/>
<seealso>
<link id="TMenu.Parent"/>
</seealso>
</element>
<element name="TMenu.SetParent.AValue">
<short>New value for the property.</short>
</element>
<element name="TMenu.SetParentBiDiMode">
<short>Sets the value for the Parent BiDiMode property.</short>
<descr/>
<seealso>
<link id="TMenu.ParentBiDiMode"/>
</seealso>
</element>
<element name="TMenu.SetParentBiDiMode.AValue">
<short>New value for the property.</short>
</element>
<!-- protected -->
<element name="TMenu.WSRegisterClass" link="#lcl.lclclasses.TLCLComponent.WSRegisterClass"/>
<element name="TMenu.BidiModeChanged">
<short>
Performs actions needed when the value in BiDiMode has been changed.
</short>
<descr>
<p>
<var>BidiModeChanged</var> is a method used to performs actions needed when
the value in the <var>BiDiMode</var> property has been changed. If the
<var>Handle</var> has been allocated for the menu, the widgetset class is
notified of the new property values.
</p>
</descr>
<seealso>
<link id="TMenu.BiDiMode"/>
<link id="TMenu.Handle"/>
</seealso>
</element>
<element name="TMenu.CreateHandle">
<short>Creates the Handle for the menu.</short>
<descr>
<p>
<var>CreateHandle</var> calls the corresponding method in the widgetset
class. It also calls <var>CheckChildHandles</var> to validate and update
handles for merged menu Items. CreateHandle is used in the implementation of
the <var>HandleNeeded</var> method.
</p>
</descr>
<seealso/>
</element>
<element name="TMenu.DoChange">
<short>
Performs actions needed when the specified menu item has been changed.
</short>
<descr>
<p>
<var>DoChange</var> is a method used to perform actions need when the menu
item in <var>Source</var> has been changed. The <var>Rebuild</var> parameter
indicates that the hierarchy of child menu items in Source should be
reconstructed.
</p>
<p>
DoChange signals the <var>OnChange</var> event handler (when assigned) using
the menu instance, Source, and Rebuild as arguments.
</p>
<p>
DoChange is called from the <var>MenuChanged</var> method.
</p>
</descr>
<seealso>
<link id="TMenu.OnChange"/>
<link id="TMenu.MenuChanged"/>
<link id="TMenuItem"/>
</seealso>
</element>
<element name="TMenu.DoChange.Source">
<short>Menu item where the change occurred.</short>
</element>
<element name="TMenu.DoChange.Rebuild">
<short><b>True</b> to rebuild the child menu items.</short>
</element>
<element name="TMenu.GetHandle">
<short>Gets the value for the Handle property.</short>
<descr>
<p>
Calls <var>HandleNeeded</var> to create the handle if it has not been
allocated in the widgetset class.
</p>
</descr>
<seealso>
<link id="TMenu.Handle"/>
<link id="TMenu.HandleNeeded"/>
</seealso>
</element>
<element name="TMenu.GetHandle.Result">
<short>Value for the property.</short>
</element>
<element name="TMenu.GetChildren">
<short>Calls the specified process for the Items in the menu control.</short>
<descr>
<p>
Calls the processing routine in Proc for each of the Items in the control.
This is a helper function used during LCL component streaming.
</p>
</descr>
<seealso>
<link id="#rtl.classes.TComponent">TComponent</link>
</seealso>
</element>
<element name="TMenu.GetChildren.Proc" link="#rtl.classes.TComponent.GetChildren.Proc">
<short>Process called for the child items.</short>
</element>
<element name="TMenu.GetChildren.Root" link="#rtl.classes.TComponent.GetChildren.Root">
<short>Not used in the method.</short>
</element>
<element name="TMenu.MenuChanged">
<short>
Implements the OnChange event handler assigned to menu items in the menu.
</short>
<descr>
<p>
Calls the <var>DoChange</var> method using <var>Source</var> and
<var>Rebuild</var> as arguments. No actions are performed in the method
during LCL component streaming, or when the component is being freed.
</p>
</descr>
<seealso>
<link id="TMenu.DoChange"/>
<link id="TMenuChangeEvent"/>
</seealso>
</element>
<element name="TMenu.MenuChanged.Sender">
<short>Object for the event notification.</short>
</element>
<element name="TMenu.MenuChanged.Source">
<short>Menu item for the change notification.</short>
</element>
<element name="TMenu.MenuChanged.Rebuild">
<short><b>True</b> to rebuild the visible child menu items in Source.</short>
</element>
<element name="TMenu.AssignTo">
<short>
Copies property values from the class instance to the specified persistent
object.
</short>
<descr>
<p>
<var>AssignTo</var> is an overridden method in <var>TMenu</var> which
re-implements the method from the ancestor class. AssignTo copies property
values from the current class instance to the persistent object in the
<var>Dest</var> argument.
</p>
<p>
When Dest is a TMenu instance, an implementation routine is called to copy
the property value. If Dest is not derived from TMenu (or <b>Nil</b>), the inherited
method (which raises an <var>EConvertError</var> exception) is called.
</p>
</descr>
<seealso>
<link id="#rtl.classes.TPersistent.Assign">TPersistent.Assign</link>
</seealso>
</element>
<element name="TMenu.AssignTo.Dest">
<short>Persistent object where the property values are stored.</short>
</element>
<element name="TMenu.Notification">
<short>
Handles a notification when a component is added to or removed from the
control.
</short>
<descr>
<p>
Notification is an overridden method in TMenu. It calls the inherited method
on entry, and sets the member for the Images property to <b>Nil</b> when it
is removed from the control. An exception is raised if the Items property is
removed from the control.
</p>
</descr>
<seealso>
<link id="#rtl.classes.TComponent.Notification">TComponent.Notification</link>
</seealso>
</element>
<element name="TMenu.ParentBidiModeChanged">
<short>Performs action when ParentBiDiMode has been changed.</short>
<descr>
<p>
Performs actions needed when the value in <var>ParentBiDiMode</var> has been
changed. When Parent BiDiMode is set to <b>True</b>, ParentBidiModeChanged
ensures the <var>BiDiMode</var> from the <var>TCustomForm</var> instance in
<var>AOwner</var> is used in the menu.
</p>
<p>
ParentBidiModeChanged is called from the <var>Create</var> constructor, and
when a new value is assigned to the <var>ParentBiDiMode</var> property.
</p>
</descr>
<seealso/>
</element>
<element name="TMenu.ParentBidiModeChanged.AOwner">
<short>
Owner of the menu instance with the BiDiMode value applied to the menu.
</short>
</element>
<element name="TMenu.SetChildOrder">
<short>Sets the order for the menu item specified in Child.</short>
<descr>
<p>
SetChildOrder is an overridden method used to set the order for the specified
child in the menu instance. It ensures that the value in Child is cast to a
TMenuItem instance before assigning the value in Order to its MenuIndex
property.
</p>
</descr>
<seealso>
<link id="TMenu.Items"/>
<link id="TMenuItem.MenuIndex"/>
<link id="#rtl.classes.TComponent">TComponent</link>
</seealso>
</element>
<element name="TMenu.UpdateItems">
<short>
UpdateItems has an empty implementation in the current LCL version.
</short>
<descr/>
<seealso/>
</element>
<element name="TMenu.OnChange">
<short>
Event handler signalled when a menu item in Items has been changed.
</short>
<descr/>
<seealso/>
</element>
<!-- public -->
<element name="TMenu.FCompStyle">
<short>Stores component style flags.</short>
<descr/>
<seealso/>
</element>
<element name="TMenu.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
<var>Create</var> is the constructor for <var>TMenu</var>, and creates menu
items and links, sets some defaults then calls inherited <var>Create</var>.
</p>
</descr>
<seealso>
<link id="#rtl.Classes.TComponent.Create">TComponent.Create</link>
</seealso>
</element>
<element name="TMenu.Create.AOwner">
<short>Owner of the class instance.</short>
</element>
<element name="TMenu.Destroy">
<short>Destructor for the class instance.</short>
<descr>
<p>
<var>Destroy</var> is the destructor for <var>TMenu</var>, and frees items
and links, then calls inherited <var>Destroy</var>.
</p>
</descr>
<seealso>
<link id="#rtl.Classes.TComponent.Destroy">TComponent.Destroy</link>
</seealso>
</element>
<element name="TMenu.DestroyHandle">
<short>Frees the Handles for the items on the menu.</short>
<descr>
<p>
<var>DestroyHandle</var> calls the DestroyHandle method in <var>Items</var>
to free all of the handles for the menu items.
</p>
</descr>
<seealso>
<link id="TMenu.Items"/>
<link id="TMenuItem.DestroyHandle"/>
</seealso>
</element>
<element name="TMenu.FindItem">
<short>
Gets the menu item with the specified value in a given property.
</short>
<descr>
<p>
<var>FindItem</var> is a <var>TMenuItem</var> function used to locate a menu
item which has the value specified in <var>AValue</var> in a given property.
The property examined for the value is specified in the <var>Kind</var>
argument.
</p>
<p>
FindItem searches the menu items stored in the Items property to locate the
specified value. The return value is <b>Nil</b> when a menu item is not found
with the required value, or a <b>Nil</b> value is found in <var>Items</var>.
</p>
<p>
FindItem is used to implement methods like <var>GetHelpContext</var>,
<var>IsShortcut</var>, and <var>DispatchCommand</var>.
</p>
</descr>
<seealso>
<link id="TMenu.Items"/>
<link id="TMenuItem.Command"/>
<link id="TMenuItem.Handle"/>
<link id="TMenuItem.Shortcut"/>
<link id="TFindItemKind"/>
</seealso>
</element>
<element name="TMenu.FindItem.Result">
<short>
Menu item which matches the find criteria, or <b>Nil</b> when not found.
</short>
</element>
<element name="TMenu.FindItem.AValue">
<short>Value to locate in the property indicated by Kind.</short>
</element>
<element name="TMenu.FindItem.Kind">
<short>Identifies the property examined for the specified value.</short>
</element>
<element name="TMenu.GetHelpContext">
<short>
Gets the numeric help context for the menu item with the specified handle or
command.
</short>
<descr/>
<seealso/>
</element>
<element name="TMenu.GetHelpContext.Result">
<short>
Menu item with the specified value, or <b>Nil</b> when not found.
</short>
</element>
<element name="TMenu.GetHelpContext.AValue">
<short>Command or Handle to locate in the menu items for the menu.</short>
</element>
<element name="TMenu.GetHelpContext.ByCommand">
<short>
<b>True</b> to search Command values, <b>False</b> to search Handle values.
</short>
</element>
<element name="TMenu.IsShortcut">
<short>
Indicates if the specified control message contains a shortcut (accelerator)
key used in the menu.
</short>
<descr>
<p>
Is Shortcut is a Boolean function used to determine if the control message in
Message contains a shortcut (accelerator) key used in the menu. It converts
the CharCode and KeyData in Message to a shortcut value by calling the
ShortCut routine.
</p>
<p>
The FindItem method is called to locate the menu item with the value in its
Shortcut property. The ShortCutHandled property is updated to indicate
whether the shortcut value exists in Items.
</p>
<p>
IsShortCut checks the Parent for the menu item to determine if the shortcut
key is handled in the parent menu item. The InitiateAction and Click methods
for the menu item are called if the parent handles the shortcut value.
</p>
</descr>
<seealso/>
</element>
<element name="TMenu.IsShortcut.Result">
<short>
<b>True</b> when the message matches a menu item shortcut in Items.
</short>
</element>
<element name="TMenu.IsShortcut.Message">
<short>Control message examined in the method.</short>
</element>
<element name="TMenu.HandleAllocated">
<short>
Returns <b>True</b> if a Handle has been allocated for the menu.
</short>
<descr/>
<seealso/>
</element>
<element name="TMenu.HandleAllocated.Result">
<short><b>True</b> if a Handle has been allocated for the menu.</short>
</element>
<element name="TMenu.IsRightToLeft">
<short>
Indicates if Right-to-Left text display is used in the menu.
</short>
<descr>
<p>
<var>IsRightToLeft</var> is a <var>Boolean</var> function which indicates if
Right-to-Left text display is used in the menu. The return value is
<b>True</b> when the <var>BiDiMode</var> property contains a value other than
<var>bdLeftToRight</var>.
</p>
</descr>
<seealso/>
</element>
<element name="TMenu.IsRightToLeft.Result">
<short>
<b>True</b> when the BiDiMode contains a value other than bdLeftToRight.
</short>
</element>
<element name="TMenu.UseRightToLeftAlignment">
<short>
<var>UseRightToLeftAlignment</var> - returns <b>True</b> if Right-to-Left
alignment is being used.
</short>
<descr/>
<seealso/>
</element>
<element name="TMenu.UseRightToLeftAlignment.Result">
<short>
<b>True</b> if Right-to-Left alignment is used on the menu.
</short>
</element>
<element name="TMenu.UseRightToLeftReading">
<short>
Indicates if right-to-left reading is used for the menu.
</short>
<descr>
<p>
<var>UseRightToLeftReading</var> is a <var>Boolean</var> function which
indicates if the menu uses Right-to-Left reading for its values.
UseRightToLeftReading is used in the widgetset class to enable bi-directional
text display for languages like Arabic and Hebrew.
</p>
<p>
The return value is <b>True</b> when the <var>BiDiMode</var> property is set
to a value other than <var>bdLeftToRight</var>.
</p>
<p>
Use the UseRightToLeftAlignment property to set the alignment for text values
in the menu.
</p>
</descr>
<seealso>
<link id="TMenu.UseRightToLeftAlignment"/>
<link id="TMenu.BiDiMode"/>
<link id="#rtl.classes.TBiDiMode">TBiDiMode</link>
</seealso>
</element>
<element name="TMenu.UseRightToLeftReading.Result">
<short>
<b>True</b> if Right-to-Left reading is used for the text on the menu.
</short>
</element>
<element name="TMenu.HandleNeeded">
<short>
Ensures that a Handle has been allocated for the menu.
</short>
<descr>
<p>
Calls CreateHandle if the Handle has not been allocated for the menu.
</p>
</descr>
<seealso>
<link id="TMenu.Handle"/>
<link id="TMenu.HandleAllocated"/>
<link id="TMenu.CreateHandle"/>
<link id="TMenu.DestroyHandle"/>
<link id="TMenu.GetHandle"/>
</seealso>
</element>
<element name="TMenu.DispatchCommand">
<short>
Executes the menu item with the specified numeric Command value.
</short>
<descr/>
<seealso>
<link id="TMenu.FindItem"/>
<link id="TMenuItem.Command"/>
<link id="TMenuItem.Click"/>
</seealso>
</element>
<element name="TMenu.DispatchCommand.Result">
<short>
<b>True</b> if a menu item with the specified command was found and executed.
</short>
</element>
<element name="TMenu.DispatchCommand.ACommand">
<short>Numeric command value to locate in the menu items for the menu.</short>
</element>
<element name="TMenu.Handle">
<short>
Handle for the menu allocated in the widgetset class.
</short>
<descr>
<p>
<var>Handle</var> is a read-only <var>HMenu</var> property with the handle
for the menu. The Handle value is allocated by the widgetset class when the
<var>CreateHandle</var> method is called. Use <var>DestroyHandle</var> to
free the Handle for the menu.
</p>
</descr>
<seealso>
<link id="TMenu.HandleNeeded"/>
<link id="TMenu.CreateHandle"/>
<link id="TMenu.DestroyHandle"/>
</seealso>
</element>
<element name="TMenu.Parent">
<short>Parent component for the menu.</short>
<descr>
<p>
<var>Parent</var> is a <var>TComponent</var> property with the component
associated with the menu instance. Setting Parent to <b>Nil</b> when a handle
has been assigned for <var>Items</var> in the menu causes the
<var>DestroyHandle</var> method to be called.
</p>
</descr>
<seealso>
<link id="TMenu.DestroyHandle"/>
<link id="TMenuItem.Items"/>
<link id="TMenuItem.Handle"/>
</seealso>
</element>
<element name="TMenu.ShortcutHandled">
<short>
Indicates whether the shortcut key for a menu item is used in the menu.
</short>
<descr/>
<seealso>
<link id="TMenu.IsShortcut"/>
<link id="TMenuItem.Enabled"/>
<link id="TMenuItem.Click"/>
</seealso>
</element>
<!-- published -->
<element name="TMenu.AutoLineReduction">
<short>
Indicates the method used to perform line reduction for the menu and
optionally for its child Items.
</short>
<descr>
<p>
<var>AutoLineReduction</var> is a <var>TMenuAutoFlag</var> property which
controls if redundant separators on the menu or its child Items are
automatically hidden. Line reduction causes leading, trailing, or adjacent menu
separators to be hidden.
</p>
<p>
maAutomatic causes redundant separators to be automatically removed for the
menu. The default value for the property is maAutomatic and causes the line
reduction top be performed automatically. Use maManual if line reduction is
performed only when the RethinkLines method in a child menu item is explicitly
called.
</p>
<p>
See TMenuAutoFlag for more information about the valid values for the property.
</p>
<p>
The value in AutoLineReduction is used by child menu Items when their
AutoLineReduction property is set to maParent or maAutomatic.
</p>
</descr>
<version>
Added in LCL version 4.0.
</version>
<seealso>
<link id="TMenu.AutoLineReduction"/>
<link id="TMenu.Items"/>
<link id="TMenuItem.AutoLineReduction"/>
<link id="TMenuAutoFlag"/>
<link id="TMenuItemAutoFlag"/>
</seealso>
</element>
<element name="TMenu.BidiMode">
<short>
Indicates whether Bi-directional text mode is implemented allowing use with
languages like Arabic or Hebrew.
</short>
<descr/>
<seealso/>
</element>
<element name="TMenu.ParentBidiMode">
<short>
The BiDiMode value for the parent component.
</short>
<descr/>
<seealso/>
</element>
<element name="TMenu.Items">
<short>Contains the menu items displayed on the menu.</short>
<descr>
<p>
<var>Items</var> is a read-only <var>TMenuItem</var> property with the menu
items included in the menu. Values in Items can be maintained at design-time
using the menu editor in the Lazarus IDE, or created and configured at
run-time.
</p>
</descr>
<seealso>
<link id="TMenuItems"/>
<link id="TMenuItem.Items"/>
<link id="TMenuItem.Bitmap"/>
<link id="TMenuItem.Caption"/>
<link id="TMenuItem.Command"/>
<link id="TMenuItem.Enabled"/>
<link id="TMenuItem.Default"/>
<link id="TMenuItem.ShortCut"/>
<link id="TMenuItem.ShortCutKey2"/>
<link id="TMenuItem.Visible"/>
<link id="TMenuItem.Action"/>
<link id="TMenuItem.OnClick"/>
</seealso>
</element>
<element name="TMenu.Images">
<short>The image list with bitmaps used as glyphs for the menu items.</short>
<descr>
<p>
<var>Images</var> is a <var>TCustomImageList</var> property which contains
the bitmap images displayed as glyphs for the <var>Items</var> on the menu.
Populate an image list and assign it to the property prior to setting the
<var>ImageIndex</var> and <var>GlyphShowMode</var> for the individual
<var>TMenuItem</var> instances on the menu. As an alternative, glyphs can
assigned directly to the <var>Bitmap</var> property in each TMenuItem
instance.
</p>
<p>
Setting a new value for the property causes the image change link and free
notification to be removed and/or added as needed. The UpdateImages method in
Items is called to validate the image(s) and to notify the widgetset class of
change(s) to the property value(s).
</p>
</descr>
<seealso>
<link id="TMenuItem.Bitmap"/>
<link id="TMenuItem.ImageIndex"/>
<link id="TMenuItem.GlyphShowMode"/>
<link id="TMenuItem.UpdateImages"/>
<link id="#lcl.imglist.TCustomImageList">TCustomImageList</link>
</seealso>
</element>
<element name="TMenu.ImagesWidth">
<short>Width for the bitmaps in the Images property.</short>
<descr>
<p>
<var>ImagesWidth</var> is an <var>Integer</var> property with the width
needed for bitmaps in the <var>Images</var> property. The default value for
the property is <b>0</b> (<b>zero</b>), and indicates that the width in the
Images property is used.
</p>
<p>
Setting a new value for the property causes the <var>UpdateImages</var>
method in <var>Items</var> to be called.
</p>
</descr>
<seealso>
<link id="TMenu.Images"/>
<link id="TMenuItem.UpdateImages"/>
<link id="TMenuItem.ImageIndex"/>
<link id="TMenuItem.Bitmap"/>
</seealso>
</element>
<element name="TMenu.OwnerDraw">
<short>
Indicates if the menu items are drawn using the OnDrawItem event handler.
</short>
<descr>
<p>
<var>OwnerDraw</var> is a <var>Boolean</var> property which indicates if the
menu items are drawn using the <var>OnDrawItem</var> event handler. The
default value for the property is <b>False</b>.
</p>
<p>
OwnerDraw is used when the widgetset class renders the menu. If OwnerDraw is
<b>False</b>, the default drawing routines for the platform are used to draw
the menu control. Otherwise, the <var>OnMeasureItem</var> and
<var>OnDrawItem</var> event handlers are signalled for the purpose.
</p>
<remark>
OwnerDraw, OnDrawItem, and OnMeasureItem are not supported on the macOS Carbon, GTK2, QT4, QT5, and QT6 widgetsets.
</remark>
</descr>
<seealso>
<link id="TMenu.OnDrawItem"/>
<link id="TMenu.OnMeasureItem"/>
<link id="TMenuItem.OnDrawItem"/>
<link id="TMenuItem.OnMeasureItem"/>
</seealso>
</element>
<element name="TMenu.OnDrawItem">
<short>Event handler signalled to draw a menu item on the menu.</short>
<descr>
<remark>
OwnerDraw, OnDrawItem, and OnMeasureItem are not supported on the macOS Carbon, GTK2, QT4, QT5, and QT6 widgetsets.
</remark>
</descr>
<seealso>
<link id="TMenu.OwnerDraw"/>
<link id="TMenu.OnMeasureItem"/>
</seealso>
</element>
<element name="TMenu.OnMeasureItem">
<short>
Event handler signalled to get the width and height for a menu item on the
menu.
</short>
<descr>
<remark>
OwnerDraw, OnDrawItem, and OnMeasureItem are not supported on the macOS Carbon, GTK2, QT4, QT5, and QT6 widgetsets.
</remark>
</descr>
<seealso>
<link id="TMenu.OwnerDraw"/>
<link id="TMenu.OnDrawItem"/>
</seealso>
</element>
<element name="TMainMenu">
<short>
<var>TMainMenu</var> - the Main Menu that appears at the top of most windows.
</short>
<descr>
<p>
<var>TMainMenu</var> - the Main Menu that appears at the top of most windows;
form designers can customize by choosing various menu items.
</p>
<p>
Main Menu is a non-visible component: that is, if the icon is selected from
the Component Palette and placed on the Form, it will not appear at Run-time.
Instead, a Menu bar with a structure defined by the Menu Editor will appear.
</p>
<p>
To see the Menu Editor, right-click on the Main Menu icon on your Form.
</p>
</descr>
<seealso>
<link id="HowToUseMenus">How To Use Menus</link>
<link id="TMenuItem"/>
<link id="TMenu"/>
<link id="TMenuActionLink"/>
</seealso>
</element>
<!-- private -->
<element name="TMainMenu.FWindowHandle"/>
<element name="TMainMenu.GetHeight"/>
<element name="TMainMenu.GetHeight.Result"/>
<element name="TMainMenu.SetWindowHandle"/>
<element name="TMainMenu.SetWindowHandle.AValue"/>
<!-- protected -->
<element name="TMainMenu.ItemChanged">
<short>
Performs actions needed when a menu item has been changed.
</short>
<descr>
<p>
Calls MenuChanged when a menu item has been changed in the widgetset class.
</p>
</descr>
<seealso/>
</element>
<element name="TMainMenu.WSRegisterClass" link="#lcl.lclclasses.TLCLComponent.WSRegisterClass"/>
<element name="TMainMenu.MenuChanged">
<short>
Implements the OnChange event handler used for menu items in the class
instance.
</short>
<descr>
<p>
<var>MenuChanged</var> is an overridden method in <var>TMainMenu</var>. It
ensures that the <b>CM_MENUCHANGED</b> control message is forwarded to the
<var>WindowHandle</var> (when assigned) where the menu is displayed.
MenuChanged calls the inherited method prior to exit to signal the
<var>OnChange</var> event handler (when assigned).
</p>
</descr>
<seealso>
<link id="TMainMenu.WindowHandle"/>
<link id="TMainMenu.OnChange"/>
</seealso>
</element>
<element name="TMainMenu.MenuChanged.Sender">
<short>Object of the change notification.</short>
</element>
<element name="TMainMenu.MenuChanged.Source">
<short>Menu item for the change notification.</short>
</element>
<element name="TMainMenu.MenuChanged.Rebuild">
<short><b>True</b> to rebuild the child menu items for the menu.</short>
</element>
<element name="TMainMenu.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
<var>Create</var> is the overridden constructor in <var>TMainMenu</var>.
</p>
<p>
Create ensures that the internal component style flags are set for the main
menu instance. It also sets the <var>WindowHandle</var> to <b>0</b>
(<b>zero</b>) to indicate that the display window has not been assigned for
the menu instance.
</p>
<p>
Create calls the inherited constructor prior to exiting from the method.
</p>
</descr>
<seealso>
<link id="TMainMenu.WindowHandle"/>
<link id="#lcl.menus.TMenu.Create">TMenu.Create</link>
</seealso>
</element>
<element name="TMainMenu.Create.AOwner">
<short>
Owner of the class instance.
</short>
</element>
<element name="TMainMenu.Merge">
<short>Merges menu items from the specified main menu instance.</short>
<descr>
<p>
<var>Merge</var> is a method used to merge the menu items from the specified
<var>Menu</var> into the Items for the current class instance. When Menu
contains a non-<b>Nil</b> value, the <var>MergeWith</var> method in
<var>Items</var> is called using the Items in the current class instance as
the target. When Menu has not been assigned, the MergeWith method in Items is
called using <b>Nil</b> as the target.
</p>
<p>
Use <var>Unmerge</var> to remove merge menu items from a specified menu
instance.
</p>
</descr>
<seealso>
<link id="TMainMenu.Unmerge"/>
<link id="TMenu.Items"/>
<link id="TMenuItem.MergedItems"/>
<link id="TMenuItem.Merged"/>
</seealso>
</element>
<element name="TMainMenu.Merge.Menu">
<short>Main menu merged into the current class instance.</short>
</element>
<element name="TMainMenu.Unmerge">
<short>Removes merged menu items for the specified menu.</short>
<descr/>
<seealso/>
</element>
<element name="TMainMenu.Unmerge.Menu">
<short>Menu instance with the merged items removed in the method.</short>
</element>
<element name="TMainMenu.Height">
<short>Height for the menu.</short>
<descr/>
<seealso/>
</element>
<element name="TMainMenu.WindowHandle">
<short>Handle for the window where the menu is displayed.</short>
<descr/>
<seealso/>
</element>
<element name="TMainMenu.OnChange">
<short>Event handler signalled when a menu item has been changed.</short>
<descr/>
<seealso>
<link id="TMainMenu.ItemChanged"/>
<link id="TMainMenu.MenuChanged"/>
<link id="TMenu.MenuChanged"/>
</seealso>
</element>
<element name="TPopupAlignment">
<short>
An enumerated type to describe the position of pop-up menu relative to the
pop-up coordinates.
</short>
<descr>
<dl>
<dt>paLeft</dt>
<dd>Positions the pop-up menu so its left corner is at the pop-up
coordinate</dd>
<dt>paRight</dt>
<dd>Positions the pop-up menu menu so its right corner is at the pop-up
coordinate</dd>
<dt>paCenter</dt>
<dd>Centers the pop-up menu around the pop-up coordinate</dd>
</dl>
</descr>
</element>
<element name="TTrackButton">
<short>
<var>TTrackButton</var> - enumerated type described which mouse buttons can
be used to activate (click) menu items.
</short>
<descr>
<dl>
<dt>tbRightButton</dt>
<dd>Both left and right buttons are used to activate a menu item</dd>
<dt>tbLeftButton</dt>
<dd>Only the left button is used to activate a menu item</dd>
</dl>
</descr>
</element>
<element name="TPopupMenu">
<short>
Implements a menu panel that pops up on the screen when the right mouse button
is clicked.
</short>
<descr>
<p>
<var>TPopupMenu</var> is a menu panel that pops up on the screen when the
right mouse button is clicked.
</p>
<p>
TPopupMenu inherits all the properties of <var>TMenu</var> (including the
properties of <var>TMenuItem</var>), but has some new methods (procedure
<var>PopUp</var> and procedure <var>Close</var>) that define its behavior
when invoked.
</p>
<p>
PopupPoint defines the position of the pop-up menu, usually at the current
cursor position.
</p>
<p>
To use a pop-up menu, first create it with the MenuEditor. Then with the
Object Inspector for the control that needs to use the Pop-up, select the
property named PopupMenu, and a list box will appear with the names of the
available Menus - choose the Pop-up name you want.
</p>
</descr>
<version>
TPopupMenu for the Windows platform was modified in LCL version 2.2.6. It no
longer uses the highlighted drawing effect when drawing the glyph icon for an
enabled menu item. The normal drawing effect is used instead.
</version>
<seealso>
<link id="TMainMenu"/>
<link id="TMenuItem"/>
<link id="TMenu"/>
<link id="TMenuActionLink"/>
<link id="HowToUseMenus">How To Use Menus</link>
</seealso>
</element>
<!-- private -->
<element name="TPopupMenu.FAlignment"/>
<element name="TPopupMenu.FAutoPopup"/>
<element name="TPopupMenu.FOnClose"/>
<element name="TPopupMenu.FOnPopup"/>
<element name="TPopupMenu.FPopupComponent"/>
<element name="TPopupMenu.FPopupPoint"/>
<element name="TPopupMenu.FTrackButton"/>
<element name="TPopupMenu.GetHelpContext"/>
<element name="TPopupMenu.GetHelpContext.Result"/>
<element name="TPopupMenu.SetHelpContext"/>
<element name="TPopupMenu.SetHelpContext.AValue"/>
<!-- protected -->
<element name="TPopupMenu.WSRegisterClass" link="#lcl.lclclasses.TLCLComponent.WSRegisterClass"/>
<element name="TPopupMenu.DoPopup">
<short>Performs actions needed to display the pop-up menu.</short>
<descr/>
<seealso/>
</element>
<element name="TPopupMenu.DoPopup.Sender">
<short>Object for the event notification.</short>
</element>
<element name="TPopupMenu.DoClose">
<short>Performs actions needed when the pop-up menu is closed.</short>
<descr/>
<seealso/>
</element>
<element name="TPopupMenu.SetPopupPoint">
<short>
Sets the value for the PopupPoint property.
</short>
<descr/>
<version>
Added in LCL version 4.0.
</version>
<seealso>
<link id="TPopUpMenu.PopupPoint"/>
<link id="TPopUpMenu.Popup"/>
</seealso>
</element>
<element name="TPopupMenu.SetPopupPoint.APopupPoint">
<short>
New value for the PopupPoint property.
</short>
</element>
<element name="TPopupMenu.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
<var>Create</var> is the constructor for <var>TPopupMenu</var>, and calls the
inherited <var>Create</var>, sets style to <var>PopupMenu</var>, sets
<var>AutoPopup</var> to <b>True</b>.
</p>
</descr>
<seealso>
<link id="#lcl.menus.TMenu.Create">TMenu.Create</link>
</seealso>
</element>
<element name="TPopupMenu.Create.AOwner">
<short>Owner of the class instance.</short>
</element>
<element name="TPopupMenu.Destroy">
<short>Destructor for the class instance.</short>
<descr>
<p>
<var>Destroy</var> is the destructor for <var>TPopupMenu</var>. It closes the
display window for the pop-up menu and calls the inherited <var>Destroy</var>
method.
</p>
</descr>
<seealso>
<link id="#lcl.menus.TMenu.Destroy">TMenu.Destroy</link>
</seealso>
</element>
<element name="TPopupMenu.PopUp">
<short>
Displays the pop-up menu.
</short>
<descr>
<p>
<var>PopUp</var> is an overloaded method used to display the pop-up menu. An
overloaded variant is provided which includes <var>X</var> and <var>Y</var>
coordinates where the pop-up menu is displayed. The parameter-less variant
calls the overloaded variant using the current position for the mouse pointer
in the X and Y arguments.
</p>
<p>
No actions are performed in the method if a pop-up menu has already been
assigned to the <var>ActivePopupMenu</var> variable.
</p>
<p>
PopUp updates the <var>PopupPoint</var> property with the coordinates specified
in X and Y and releases the current mouse capture in the widgetset.
<var>DoPopUp</var> is called to signal the <var>OnPopup</var> event handler
(when assigned).
</p>
<p>
No additional actions are performed in the method if menu items have not been
defined in the <var>Items</var> property.
</p>
<p>
PopUp sets the value in <var>ActivePopupMenu</var> to the current class
instance. The <var>InitiateActions</var> method is called for the menu
<var>Items</var> to ensure that the <var>ActionLink</var> for the component is
updated. The handles for the menu and its sub-items are recreated, and the
<var>OnMenuPopupHandler</var> event handler is signalled (when assigned).
</p>
<p>
PopUpMenu calls the corresponding method in the widgetset class prior to
exiting from the method.
</p>
</descr>
<version>
Modified in LCL version 4.0 to use the protected SetPopupPoint method to update
the location for the pop-up menu.
</version>
<seealso>
<link id="TPopUpMenu.DoPopUp"/>
<link id="TPopUpMenu.OnPopup"/>
<link id="TPopUpMenu.PopupPoint"/>
<link id="TPopUpMenu.SetPopupPoint"/>
<link id="TMenu.Items"/>
<link id="TMenuItem.InitiateActions"/>
<link id="TMenuItem.ActionLink"/>
<link id="OnMenuPopupHandler"/>
</seealso>
</element>
<element name="TPopupMenu.PopUp.X">
<short>Horizontal coordinate where the pop-up menu is displayed.</short>
</element>
<element name="TPopupMenu.PopUp.Y">
<short>Vertical coordinate where the pop-up menu is displayed.</short>
</element>
<element name="TPopupMenu.PopupComponent">
<short>Component to which the pop-up menu is attached.</short>
<descr>
<p>
<var>PopupComponent</var> is a <var>TComponent</var> property which contains
a reference to the component which implements the pop-up menu. It allows
properties and methods in the implementor to be accessed from the menu items
for the pop-up menu. Its value is must be assigned in code where the pop-up
menu is created and configured.
</p>
</descr>
<seealso/>
</element>
<element name="TPopupMenu.PopupPoint">
<short>
TPoint instance with the coordinates where the pop-up menu is displayed.
</short>
<descr>
<p>
<var>PopupPoint</var> is a <var>TPoint</var> property which
contains the coordinates where the pop-up menu is displayed. The value in
PopupPoint is updated when the PopUp method is called, and contains the
position for the mouse pointer when the pop-up menu was activated.
</p>
</descr>
<seealso>
<version>
Modified in LCL version 4.0 to make PopupPoint a writable property. Provides
code compatibility with the Delphi VCL.
</version>
<link id="TPopupMenu.PopUp"/>
<link id="TPopupMenu.SetPopupPoint"/>
</seealso>
</element>
<element name="TPopupMenu.Close">
<short>
Closes the pop-up menu when it is active.
</short>
<descr>
<p>
<var>Close</var> is a method used to close the pop-up menu when it is active.
When <var>ActivePopupMenu</var> contains the current class instance, the
<var>DoClose</var> method is called to signal the <var>OnClose</var> event
handler (when assigned). ActivePopupMenu is set to <b>Nil</b> to indicate
that the pop-up menu is no longer active.
</p>
<p>
No actions are performed in the method if ActivePopupMenu does not refer to
the current class instance.
</p>
</descr>
<seealso>
<link id="TPopUpMenu.DoClose"/>
<link id="TPopUpMenu.OnClose"/>
<link id="ActivePopupMenu"/>
</seealso>
</element>
<element name="TPopupMenu.Alignment">
<short>
Determines the position of pop-up menu relative to the pop-up coordinate.
</short>
<descr>
<p>
<var>Alignment</var> is a <var>TPopupAlignment</var> property which indicates
the alignment of the pop-up menu relative to the mouse coordinates in
<var>PopupPoint</var>. The default value for the property is
<var>paLeft</var> and causes the menu to be displayed to the left of the
mouse coordinates passed to the <var>PopUp</var> method.
</p>
</descr>
<seealso>
<link id="TPopUpMenu.PopUp"/>
<link id="TPopUpMenu.PopupPoint"/>
<link id="TPopupAlignment"/>
</seealso>
</element>
<element name="TPopupMenu.AutoPopup">
<short>
Indicates if the pop-up is displayed when the mouse hovers over the component
for the pop-up menu.
</short>
<descr>
<p>
<var>AutoPopUp</var> determines whether the pop-menu is automatically
displayed when the mouse is hovered over the <var>PopupComponent</var> for
the menu. Its value can be used in the implementing component to determine
whether the <var>PopUp</var> method should be called. The default value for
the property is <b>True</b>.
</p>
</descr>
<seealso>
<link id="TPopUpMenu.PopupComponent"/>
<link id="TPopUpMenu.PopUp"/>
<link id="ActivePopupMenu"/>
</seealso>
</element>
<element name="TPopupMenu.HelpContext">
<short>Help context for the pop-up menu.</short>
<descr/>
<seealso/>
</element>
<element name="TPopupMenu.TrackButton">
<short>
Identifies the mouse button which activated the pop-up menu.
</short>
<descr>
<p>
TrackButton is a TTrackButton property which contains the mouse button which
can be used to activate the pop-up menu. The default value for the property
is tbRightButton.
</p>
<p>
TrackButton is used in widgetset classes when they are notified of the mouse
event for the menu and perform the actions needed for the platform.
</p>
</descr>
<seealso/>
</element>
<element name="TPopupMenu.OnPopup">
<short>
Event handler signalled to display the pop-up menu.
</short>
<descr>
<p>
<var>OnPopUp</var> is signalled from <var>DoPopUp</var> when the
<var>PopUp</var> method is executed. The <var>Sender</var> argument contains
the <var>TPopUpMenu</var> instance for the notification, and occurs before
the handles for menu items are recreated and the widgetset class is used to
display the pop-up menu. It can be used to alter the menu items for the
pop-up menu based on context.
</p>
</descr>
<seealso>
<link id="TPopUpMenu.PopUp"/>
<link id="TPopUpMenu.DoPopUp"/>
</seealso>
</element>
<element name="TPopupMenu.OnClose">
<short>
Event handler signalled when the pop-up menu is closed.
</short>
<descr>
<p>
You can delete menu items here. But if you delete the clicked menu item on
OnClose the OnClick will not follow under Windows.
</p>
</descr>
<seealso/>
</element>
<element name="ShortCut">
<short>Converts a virtual key code and modifier to a shortcut value.</short>
<descr>
<p>
Calls the KeyToShortCut routine in <file>LCLType</file> get the return value
for the function.
</p>
</descr>
<seealso>
<link id="#lcl.lcltype.KeyToShortCut">KeyToShortCut</link>
</seealso>
</element>
<element name="ShortCut.Result">
<short>TShortCut type with the value for the key and modifier.</short>
</element>
<element name="ShortCut.Key">
<short>Virtual key code for the shortcut value.</short>
</element>
<element name="ShortCut.Shift">
<short>Shift, Alt, or Ctrl modifier for the shortcut value.</short>
</element>
<element name="ShortCutToKey">
<short>Converts a shortcut value to a virtual key code and modifier.</short>
<descr/>
<seealso/>
</element>
<element name="ShortCutToKey.ShortCut">
<short>Shortcut value converted to a Key code and Shift modifier.</short>
</element>
<element name="ShortCutToKey.Key">
<short>Virtual key code for the shortcut value.</short>
</element>
<element name="ShortCutToKey.Shift">
<short>Shift, Ctrl or Alt modifier for the shortcut value.</short>
</element>
<element name="OnDesignerMenuItemClick">
<short>
Unit global variable with the event handler signalled when a menu item is
clicked at design-time.
</short>
<descr/>
<seealso/>
</element>
<element name="ActivePopupMenu">
<short>Unit global variable which represents the active pop-up menu.</short>
<descr>
<p>
The value for the variable is updated when the <var>PopUp</var> or
<var>Close</var> methods are called for a <var>TPopUpMenu</var> instance. It
is set to the TPopUpMenu instance in the Popup method if an existing pop-up
menu is not already active. It is set to <b>Nil</b> when the Close method is
called for the pop-up menu.
</p>
</descr>
<seealso/>
</element>
<element name="OnMenuPopupHandler">
<short>
Unit global variable with the event handler signalled when a pop-up menu is
displayed.
</short>
<descr>
<p>
<var>OnMenuPopupHandler</var> is a <var>TNotifyEvent</var> variable which
contains the global routine executed when when a pop-up menu is displayed. It
is signalled (when assigned) from the <var>Popup</var> method in a
<var>TPopUpMenu</var> instance, or from the <var>Click</var> method in a
<var>TMenuItem</var> instance. The <var>MenuPopupHandler</var> method in
<var>Application</var> is assigned to the variable (by default) during
application start up. It is set to <b>Nil</b> when an application is shut
down.
</p>
</descr>
<seealso>
<link id="#lcl.forms.TApplication.MenuPopupHandler">TApplication.MenuPopupHandler</link>
</seealso>
</element>
<element name="NewMenu">
<short>
Creates and configures a new menu instance with the specified menu items.
</short>
<descr>
<p>
<var>NewMenu</var> is a <var>TMainMenu</var> function used to create and
configure a new menu instance using the values passed in the arguments to the
routine. The return value is a TMainMenu instance created using the component
in <var>Owner</var> as the owner for the class instance. The value in
<var>AName</var> is used in the <var>Name</var> property for the new menu
instance.
</p>
<p>
NewMenu calls an implementation routine to add the menu Items to the new menu
instance. It ensures that the Owner for the menu items are updated to reflect
the Owner for the new menu instance, and that they are inserted into the
Owner component.
</p>
</descr>
<seealso/>
</element>
<element name="NewMenu.Result">
<short>TMainMenu instance created in the routine.</short>
</element>
<element name="NewMenu.Owner">
<short>Component which owns the new menu instance.</short>
</element>
<element name="NewMenu.AName">
<short>Name for the new menu instance.</short>
</element>
<element name="NewMenu.Items">
<short>Array with the menu items for the new menu instance.</short>
</element>
<element name="NewPopupMenu">
<short>
Creates and configures a new pop-up menu with the specified menu items.
</short>
<descr>
<p>
<var>NewPopupMenu</var> is a <var>TPopUpMenu</var> function used to create
and configure a new pop-menu with the values specified in the arguments to
the routine. The return value is created using the component in Owner as the
owner of the class instance. The value in <var>AName</var> is used in the
<var>Name</var> property for the new menu instance. <var>AutoPopUp</var> and
<var>Alignment</var> are assigned to the corresponding properties in the new
pop-up menu instance.
</p>
<p>
NewPopupMenu calls an implementation routine to add the menu Items to the new
menu instance. It ensures that the Owner for the menu items are updated to
reflect the Owner for the new menu instance, and that they are inserted into
the Owner component.
</p>
</descr>
<seealso/>
</element>
<element name="NewPopupMenu.Result">
<short>TPopUpMenu instance created in the routine.</short>
</element>
<element name="NewPopupMenu.Owner">
<short>Component which owns the new pop-up menu instance.</short>
</element>
<element name="NewPopupMenu.AName">
<short>Name for the new pop-up menu instance.</short>
</element>
<element name="NewPopupMenu.Alignment">
<short>
Alignment relative to the mouse pointer for the pop-up menu instance.
</short>
</element>
<element name="NewPopupMenu.AutoPopup">
<short>
<b>True</b> if the pop-up menu is automatically displayed when the mouse is
hovered over the component.
</short>
</element>
<element name="NewPopupMenu.Items">
<short>Array with the menu items for the new pop-up menu instance.</short>
</element>
<element name="NewSubMenu">
<short>
Creates and configures a new sub-menu with the specified child menu items.
</short>
<descr>
<p>
<var>NewSubMenu</var> is a <var>TMenuItem</var> function used to create a
sub-menu using the values specified in the arguments to the routine. The
return value contains the TMenuItem instance created to represent the
sub-menu. It uses the value in <var>aCaption</var> as the caption text for
the menu item, and <var>AName</var> contains the name for the sub-menu.
</p>
<p>
The menu item is created using <b>Nil</b> as the owner of the class instance;
it must be added or inserted into the Items for the desired menu instance.
Each of the menu Items is added to the class instance, and the remaining
arguments are assigned to the corresponding properties for the sub-menu (menu
item).
</p>
</descr>
<seealso/>
</element>
<element name="NewSubMenu.Result">
<short>TMenuItem with the sub-menu created in the routine.</short>
</element>
<element name="NewSubMenu.ACaption">
<short>Caption text displayed for the sub-menu.</short>
</element>
<element name="NewSubMenu.hCtx">
<short>Help context for the sub-menu.</short>
</element>
<element name="NewSubMenu.AName">
<short>Name for the menu item representing the sub-menu.</short>
</element>
<element name="NewSubMenu.Items">
<short>Array of menu items for the new sub-menu.</short>
</element>
<element name="NewSubMenu.TheEnabled">
<short><b>True</b> if the menu item for the sub-menu is enabled.</short>
</element>
<element name="NewItem">
<short>Creates and configures a new menu item instance.</short>
<descr>
<p>
<var>NewItem</var> is a <var>TMenuItem</var> function used to create and
configure a new menu item instance using the values passed in the arguments
to the routine. The TMenuItem instance is created with its <var>Owner</var>
property set to <b>Nil</b>. Values passed in the parameters are assigned to
the corresponding properties in the TMenuItem instance in the return value.
</p>
<p>
Other property values for the menu item can be assigned in the calling
routine. Use the <var>Add</var> or <var>Insert</var> method in the desired
menu or sub menu to store the new menu item instance.
</p>
</descr>
<seealso>
<link id="TMenu.Items"/>
<link id="TMenuItem"/>
<link id="TMenuItem.Items"/>
<link id="TMenuItem.Add"/>
<link id="TMenuItem.Insert"/>
</seealso>
</element>
<element name="NewItem.Result">
<short>Menu item instance created in the routine.</short>
</element>
<element name="NewItem.ACaption">
<short>Caption text for the new menu item.</short>
</element>
<element name="NewItem.AShortCut">
<short>Short cut for the new menu item.</short>
</element>
<element name="NewItem.AChecked">
<short><b>True</b> if the new menu item is checked.</short>
</element>
<element name="NewItem.TheEnabled">
<short><b>True</b> if the new menu item is enabled.</short>
</element>
<element name="NewItem.TheOnClick">
<short>OnClick handler for the new menu item.</short>
</element>
<element name="NewItem.hCtx">
<short>Help context for the new menu item.</short>
</element>
<element name="NewItem.AName">
<short>Name assigned for the new menu item.</short>
</element>
<element name="NewLine">
<short>
Creates and configures a menu item displayed as a separator line.
</short>
<descr>
<p>
Uses the value in cLineCaption as the caption text for the menu item.
</p>
</descr>
<seealso/>
</element>
<element name="NewLine.Result">
<short>TMenuItem instance created in the routine.</short>
</element>
<element name="StripHotkey">
<short>
Removes the hot key (accelerator) prefix from the specified text.
</short>
<descr/>
<seealso/>
</element>
<element name="StripHotkey.Result">
<short>Text value after removing the hotkey prefix.</short>
</element>
<element name="StripHotkey.Text">
<short>Text examined and updated in the routine.</short>
</element>
<element name="Register">
<short>Registers components for use in the Lazarus IDE.</short>
<descr>
<p>
The following components are added to the Lazarus IDE component palette:
</p>
<p>
<b>Standard</b> Tab
</p>
<ul>
<li>TMainMenu</li>
<li>TPopupMenu</li>
</ul>
<p>
<b>Registered</b> but not displayed:
</p>
<ul>
<li>TMenuItem</li>
</ul>
</descr>
</element>
<element name="cHotkeyPrefix">
<short>
Prefix used in a menu item caption to identify a hot key (accelerator).
</short>
<descr/>
<seealso/>
</element>
<element name="cLineCaption">
<short>Caption used for a menu item displayed as a separator line.</short>
<descr/>
<seealso/>
</element>
<element name="cDialogSuffix">
<short>Not used in the current LCL implementation.</short>
<descr/>
<seealso/>
</element>
<element name="ValidMenuHotkeys">
<short>
Contains characters that can be used as accelerator keys in menus and menu
items.
</short>
<descr>
<p>
Not used in the current LCL implementation.
</p>
</descr>
<seealso/>
</element>
<topic name="HowToUseMenus">
<short>
<var>HowToUseMenus</var> - hints for creating Menus for your Forms.
</short>
<descr>
<p>
<var>TMainMenu</var> is the Main Menu that appears at the top of most forms;
form designers can customize by choosing various menu items.
<var>TPopupMenu</var> is a menu window that pops up with pertinent, usually
context-sensitive, details and choices when the right mouse button is clicked
near a control.
</p>
<p>
Main Menu is a non-visible component: that is, if the icon is selected from
the Component Palette and placed on the Form, it will not appear at Run-time.
Instead, a Menu bar with a structure defined by the Menu Editor will appear.
Pop-up menus, placed on the form by selecting the icon from the Component
Palette, do not appear at all unless the right mouse button is clicked on a
control that owns such a menu.
</p>
<p>
To see the Menu Editor, right-click on the Main Menu or Pop-up Menu icon on
your Form. A pop-up box appears, that invites you to enter items into the
Menu bar.
</p>
<p>
An Edit box is displayed, containing a Button labeled New Item1. If you
right-click on that box, a pop-up menu is displayed that allows you to add a
new item before or after (along the same level) or create a sub-menu with the
opportunity to add further items below (or above) the new item in a downward
column.
</p>
<p>
Any or all of the <link id="TMenuItem">MenuItems</link> that you add can be
configured using the Object Inspector.
</p>
<p>
At the least you should give each item a <var>Caption</var> which will appear
on the Menu Bar (you may also wish to give it a more meaningful
<var>Name</var>). The caption should indicate the activity to be selected,
such as "File Open" or "Close", "Run" or "Quit"
</p>
<p>
If you want a particular letter in the Caption to be associated with a
shortcut key, that letter should be preceded by an ampersand. The Menu item
at run-time will appear with the shortcut letter underlined, and hitting that
letter key will have the same effect as selecting the menu item.
Alternatively you can choose a shortcut key sequence (such as Ctrl-C for Copy
or Ctrl-V for Paste - the standard Keyboard shortcuts) with the
<var>ShortCut</var> property of the MenuItem.
</p>
<p>
It is often helpful to use the Menu controls in conjunction with an <link
id="#lcl.ActnList.TActionList">ActionList</link> which contains a series of
standard or customized <link id="#lcl.ActnList.TAction">Actions</link>. Menu
Items can be linked in the Object Inspector to Actions on the list, and the
same actions can be linked to <link
id="#lcl.StdCtrls.TButton">Buttons</link>, <link
id="#lcl.ComCtrls.TToolButton">ToolBar Buttons</link>, <link
id="#lcl.Buttons.TSpeedButton">SpeedButtons</link> etc. It is obviously
economic of effort to re-use the same code to respond to the various events,
rather than writing separate <var>OnClick</var> event handlers for each
individual control.
</p>
<p>
By default a number of standard actions are pre-loaded from <link
id="#lcl.StdActns">StdActns</link> or, if DataAware controls are being used,
from <link id="#lcl.DBActns">DBActns</link>, and these can be chosen using
the ActionList editor which appears when you right-click on the ActionList
icon on the Form Designer.
</p>
</descr>
</topic>
</module>
<!-- Menus -->
</package>
</fpdoc-descriptions>
|