├── .gitignore ├── Demo ├── DesignBoxDemo.dpr ├── DesignBoxDemo.dproj ├── DesignBoxDemo.res ├── untMain.dfm └── untMain.pas ├── DesignBox.dpk ├── DesignBox.dproj ├── DesignBox.pas ├── DesignBox.res ├── DesignBoxGroup.groupproj ├── LICENSE └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | # Uncomment these types if you want even more clean repository. But be careful. 2 | # It can make harm to an existing project source. Read explanations below. 3 | # 4 | # Resource files are binaries containing manifest, project icon and version info. 5 | # They can not be viewed as text or compared by diff-tools. Consider replacing them with .rc files. 6 | #*.res 7 | # 8 | # Type library file (binary). In old Delphi versions it should be stored. 9 | # Since Delphi 2009 it is produced from .ridl file and can safely be ignored. 10 | #*.tlb 11 | # 12 | # Diagram Portfolio file. Used by the diagram editor up to Delphi 7. 13 | # Uncomment this if you are not using diagrams or use newer Delphi version. 14 | #*.ddp 15 | # 16 | # Visual LiveBindings file. Added in Delphi XE2. 17 | # Uncomment this if you are not using LiveBindings Designer. 18 | #*.vlb 19 | # 20 | # Deployment Manager configuration file for your project. Added in Delphi XE2. 21 | # Uncomment this if it is not mobile development and you do not use remote debug feature. 22 | #*.deployproj 23 | # 24 | # C++ object files produced when C/C++ Output file generation is configured. 25 | # Uncomment this if you are not using external objects (zlib library for example). 26 | #*.obj 27 | # 28 | 29 | # Delphi compiler-generated binaries (safe to delete) 30 | *.exe 31 | *.dll 32 | *.bpl 33 | *.bpi 34 | *.dcp 35 | *.so 36 | *.apk 37 | *.drc 38 | *.map 39 | *.dres 40 | *.rsm 41 | *.tds 42 | *.dcu 43 | *.lib 44 | *.a 45 | *.o 46 | *.ocx 47 | 48 | # Delphi autogenerated files (duplicated info) 49 | *.cfg 50 | *.hpp 51 | *Resource.rc 52 | 53 | # Delphi local files (user-specific info) 54 | *.local 55 | *.identcache 56 | *.projdata 57 | *.tvsconfig 58 | *.dsk 59 | 60 | # Delphi history and backups 61 | __history/ 62 | __recovery/ 63 | *.~* 64 | 65 | # Castalia statistics file (since XE7 Castalia is distributed with Delphi) 66 | *.stat 67 | 68 | # Boss dependency manager vendor folder https://github.com/HashLoad/boss 69 | modules/ 70 | Demo/Win32/Debug/data.json 71 | *.skincfg 72 | Demo/DesignBoxDemo.res 73 | -------------------------------------------------------------------------------- /Demo/DesignBoxDemo.dpr: -------------------------------------------------------------------------------- 1 | program DesignBoxDemo; 2 | 3 | uses 4 | Vcl.Forms, 5 | untMain in 'untMain.pas' {frmMain}, 6 | Vcl.Themes, 7 | Vcl.Styles, 8 | DesignBox in '..\DesignBox.pas'; 9 | 10 | {$R *.res} 11 | 12 | begin 13 | Application.Initialize; 14 | Application.MainFormOnTaskbar := True; 15 | Application.Title := 'Design Box Demo'; 16 | Application.CreateForm(TfrmMain, frmMain); 17 | Application.Run; 18 | end. 19 | -------------------------------------------------------------------------------- /Demo/DesignBoxDemo.dproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | {38D4ED95-F86C-4607-955C-DA500BD1701B} 4 | 19.1 5 | VCL 6 | DesignBoxDemo.dpr 7 | True 8 | Debug 9 | Win32 10 | 1 11 | Application 12 | 13 | 14 | true 15 | 16 | 17 | true 18 | Base 19 | true 20 | 21 | 22 | true 23 | Base 24 | true 25 | 26 | 27 | true 28 | Cfg_1 29 | true 30 | true 31 | 32 | 33 | true 34 | Base 35 | true 36 | 37 | 38 | true 39 | Cfg_2 40 | true 41 | true 42 | 43 | 44 | .\$(Platform)\$(Config) 45 | .\$(Platform)\$(Config) 46 | false 47 | false 48 | false 49 | false 50 | false 51 | System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace) 52 | $(BDS)\bin\delphi_PROJECTICON.ico 53 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png 54 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png 55 | DesignBoxDemo 56 | 57 | 58 | DBXSqliteDriver;RESTComponents;KernowSoftware;DBXInterBaseDriver;MARSClient.FireDAC;sgcWebSocketsD10_3;vclactnband;vclFireDAC;tethering;svnui;JvGlobus;FireDACADSDriver;JvPluginSystem;JvMM;vcltouch;JvBands;vcldb;bindcompfmx;svn;JvJans;JvNet;DPFiOSPackagesDX10;inetdb;JvAppFrm;RvXmlD10_3;FmxTeeUI;JvDotNetCtrls;FireDACIBDriver;fmx;fmxdae;RVPkgD10_3;vclib;rbUSER1926;JvWizards;MonkeyBuilder;dbexpress;IndyCore;vclx;JvPageComps;dsnap;TMSMQTTPkgDEDXE12;FireDACCommon;JvDB;RESTBackendComponents;VCLRESTComponents;soapserver;TMSVCLUIPackPkgWizDXE12;MARSServerWizard;JclDeveloperTools;vclie;TMSVCLUIPackPkgDXE12;bindengine;DBXMySQLDriver;CloudService;JvCmp;FireDACMySQLDriver;JvHMI;rbRCL1926;rbTCUI1926;FireDACCommonODBC;FireDACCommonDriver;RvHtmlD10_3;inet;iCrew;bindcompdbx;IndyIPCommon;JvCustom;vcl;IndyIPServer;RVMathD10_3;JvXPCtrls;IndySystem;dsnapcon;rbIDE1926;FireDACMSAccDriver;fmxFireDAC;RVASpellPkgD10_3;vclimg;RichViewActionsD10_3;TeeDB;FireDAC;Jcl;TMSMQTTPkgDXE12;JvCore;JvCrypt;FireDACSqliteDriver;FireDACPgDriver;ibmonitor;rbTC1926;RVIndyD10_3;FMXTee;TMSVCLUIPackPkgXlsDXE12;rbBDE1926;soaprtl;DbxCommonDriver;JvDlgs;JvRuntimeDesign;ibxpress;Tee;JvManagedThreads;xmlrtl;soapmidas;ibxbindings;fmxobj;vclwinx;JvTimeFramework;rtl;RVDBPkgD10_3;DbxClientDriver;CustomIPTransport;vcldsnap;JvStdCtrls;JvSystem;MARSClient.Core;bindcomp;appanalytics;TMSVCLUIPackPkgExDXE12;JVEsoft;EasyWebRun_D10;IndyIPClient;bindcompvcl;SynEdit_R;TeeUI;JvDocking;dbxcds;VclSmp;JvPascalInterpreter;adortl;PentireFMX;RVHunSpellPkgD10_3;JclVcl;dsnapxml;dbrtl;inetdbxpress;IndyProtocols;JvControls;JvPrintPreview;JclContainers;rbUSERDesign1926;fmxase;$(DCC_UsePackage) 59 | Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) 60 | Debug 61 | true 62 | CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= 63 | 1033 64 | $(BDS)\bin\default_app.manifest 65 | 66 | 67 | DEBUG;$(DCC_Define) 68 | true 69 | false 70 | true 71 | true 72 | true 73 | 74 | 75 | false 76 | true 77 | PerMonitorV2 78 | true 79 | 1033 80 | 81 | 82 | false 83 | RELEASE;$(DCC_Define) 84 | 0 85 | 0 86 | 87 | 88 | true 89 | PerMonitorV2 90 | 91 | 92 | 93 | MainSource 94 | 95 | 96 |
frmMain
97 | dfm 98 |
99 | 100 | 101 | 102 | Cfg_2 103 | Base 104 | 105 | 106 | Base 107 | 108 | 109 | Cfg_1 110 | Base 111 | 112 |
113 | 114 | Delphi.Personality.12 115 | Application 116 | 117 | 118 | 119 | DesignBoxDemo.dpr 120 | 121 | 122 | Microsoft Office 2000 Sample Automation Server Wrapper Components 123 | Microsoft Office XP Sample Automation Server Wrapper Components 124 | 125 | 126 | 127 | 128 | 129 | DesignBoxDemo.exe 130 | true 131 | 132 | 133 | 134 | 135 | .\ 136 | true 137 | 138 | 139 | 140 | 141 | 1 142 | 143 | 144 | Contents\MacOS 145 | 1 146 | 147 | 148 | 0 149 | 150 | 151 | 152 | 153 | classes 154 | 1 155 | 156 | 157 | classes 158 | 1 159 | 160 | 161 | 162 | 163 | res\xml 164 | 1 165 | 166 | 167 | res\xml 168 | 1 169 | 170 | 171 | 172 | 173 | library\lib\armeabi-v7a 174 | 1 175 | 176 | 177 | 178 | 179 | library\lib\armeabi 180 | 1 181 | 182 | 183 | library\lib\armeabi 184 | 1 185 | 186 | 187 | 188 | 189 | library\lib\armeabi-v7a 190 | 1 191 | 192 | 193 | 194 | 195 | library\lib\mips 196 | 1 197 | 198 | 199 | library\lib\mips 200 | 1 201 | 202 | 203 | 204 | 205 | library\lib\armeabi-v7a 206 | 1 207 | 208 | 209 | library\lib\arm64-v8a 210 | 1 211 | 212 | 213 | 214 | 215 | library\lib\armeabi-v7a 216 | 1 217 | 218 | 219 | 220 | 221 | res\drawable 222 | 1 223 | 224 | 225 | res\drawable 226 | 1 227 | 228 | 229 | 230 | 231 | res\values 232 | 1 233 | 234 | 235 | res\values 236 | 1 237 | 238 | 239 | 240 | 241 | res\values-v21 242 | 1 243 | 244 | 245 | res\values-v21 246 | 1 247 | 248 | 249 | 250 | 251 | res\values 252 | 1 253 | 254 | 255 | res\values 256 | 1 257 | 258 | 259 | 260 | 261 | res\drawable 262 | 1 263 | 264 | 265 | res\drawable 266 | 1 267 | 268 | 269 | 270 | 271 | res\drawable-xxhdpi 272 | 1 273 | 274 | 275 | res\drawable-xxhdpi 276 | 1 277 | 278 | 279 | 280 | 281 | res\drawable-ldpi 282 | 1 283 | 284 | 285 | res\drawable-ldpi 286 | 1 287 | 288 | 289 | 290 | 291 | res\drawable-mdpi 292 | 1 293 | 294 | 295 | res\drawable-mdpi 296 | 1 297 | 298 | 299 | 300 | 301 | res\drawable-hdpi 302 | 1 303 | 304 | 305 | res\drawable-hdpi 306 | 1 307 | 308 | 309 | 310 | 311 | res\drawable-xhdpi 312 | 1 313 | 314 | 315 | res\drawable-xhdpi 316 | 1 317 | 318 | 319 | 320 | 321 | res\drawable-mdpi 322 | 1 323 | 324 | 325 | res\drawable-mdpi 326 | 1 327 | 328 | 329 | 330 | 331 | res\drawable-hdpi 332 | 1 333 | 334 | 335 | res\drawable-hdpi 336 | 1 337 | 338 | 339 | 340 | 341 | res\drawable-xhdpi 342 | 1 343 | 344 | 345 | res\drawable-xhdpi 346 | 1 347 | 348 | 349 | 350 | 351 | res\drawable-xxhdpi 352 | 1 353 | 354 | 355 | res\drawable-xxhdpi 356 | 1 357 | 358 | 359 | 360 | 361 | res\drawable-xxxhdpi 362 | 1 363 | 364 | 365 | res\drawable-xxxhdpi 366 | 1 367 | 368 | 369 | 370 | 371 | res\drawable-small 372 | 1 373 | 374 | 375 | res\drawable-small 376 | 1 377 | 378 | 379 | 380 | 381 | res\drawable-normal 382 | 1 383 | 384 | 385 | res\drawable-normal 386 | 1 387 | 388 | 389 | 390 | 391 | res\drawable-large 392 | 1 393 | 394 | 395 | res\drawable-large 396 | 1 397 | 398 | 399 | 400 | 401 | res\drawable-xlarge 402 | 1 403 | 404 | 405 | res\drawable-xlarge 406 | 1 407 | 408 | 409 | 410 | 411 | res\values 412 | 1 413 | 414 | 415 | res\values 416 | 1 417 | 418 | 419 | 420 | 421 | 1 422 | 423 | 424 | Contents\MacOS 425 | 1 426 | 427 | 428 | 0 429 | 430 | 431 | 432 | 433 | Contents\MacOS 434 | 1 435 | .framework 436 | 437 | 438 | Contents\MacOS 439 | 1 440 | .framework 441 | 442 | 443 | 0 444 | 445 | 446 | 447 | 448 | 1 449 | .dylib 450 | 451 | 452 | 1 453 | .dylib 454 | 455 | 456 | 1 457 | .dylib 458 | 459 | 460 | Contents\MacOS 461 | 1 462 | .dylib 463 | 464 | 465 | Contents\MacOS 466 | 1 467 | .dylib 468 | 469 | 470 | 0 471 | .dll;.bpl 472 | 473 | 474 | 475 | 476 | 1 477 | .dylib 478 | 479 | 480 | 1 481 | .dylib 482 | 483 | 484 | 1 485 | .dylib 486 | 487 | 488 | Contents\MacOS 489 | 1 490 | .dylib 491 | 492 | 493 | Contents\MacOS 494 | 1 495 | .dylib 496 | 497 | 498 | 0 499 | .bpl 500 | 501 | 502 | 503 | 504 | 0 505 | 506 | 507 | 0 508 | 509 | 510 | 0 511 | 512 | 513 | 0 514 | 515 | 516 | 0 517 | 518 | 519 | Contents\Resources\StartUp\ 520 | 0 521 | 522 | 523 | Contents\Resources\StartUp\ 524 | 0 525 | 526 | 527 | 0 528 | 529 | 530 | 531 | 532 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 533 | 1 534 | 535 | 536 | 537 | 538 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 539 | 1 540 | 541 | 542 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 543 | 1 544 | 545 | 546 | 547 | 548 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 549 | 1 550 | 551 | 552 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 553 | 1 554 | 555 | 556 | 557 | 558 | 1 559 | 560 | 561 | 1 562 | 563 | 564 | 1 565 | 566 | 567 | 568 | 569 | 1 570 | 571 | 572 | 1 573 | 574 | 575 | 1 576 | 577 | 578 | 579 | 580 | 1 581 | 582 | 583 | 1 584 | 585 | 586 | 1 587 | 588 | 589 | 590 | 591 | 1 592 | 593 | 594 | 1 595 | 596 | 597 | 1 598 | 599 | 600 | 601 | 602 | 1 603 | 604 | 605 | 1 606 | 607 | 608 | 1 609 | 610 | 611 | 612 | 613 | 1 614 | 615 | 616 | 1 617 | 618 | 619 | 1 620 | 621 | 622 | 623 | 624 | 1 625 | 626 | 627 | 1 628 | 629 | 630 | 1 631 | 632 | 633 | 634 | 635 | 1 636 | 637 | 638 | 1 639 | 640 | 641 | 1 642 | 643 | 644 | 645 | 646 | 1 647 | 648 | 649 | 1 650 | 651 | 652 | 1 653 | 654 | 655 | 656 | 657 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 658 | 1 659 | 660 | 661 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 662 | 1 663 | 664 | 665 | 666 | 667 | 1 668 | 669 | 670 | 1 671 | 672 | 673 | 1 674 | 675 | 676 | 677 | 678 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 679 | 1 680 | 681 | 682 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 683 | 1 684 | 685 | 686 | 687 | 688 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 689 | 1 690 | 691 | 692 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 693 | 1 694 | 695 | 696 | 697 | 698 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 699 | 1 700 | 701 | 702 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 703 | 1 704 | 705 | 706 | 707 | 708 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 709 | 1 710 | 711 | 712 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 713 | 1 714 | 715 | 716 | 717 | 718 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 719 | 1 720 | 721 | 722 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 723 | 1 724 | 725 | 726 | 727 | 728 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 729 | 1 730 | 731 | 732 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 733 | 1 734 | 735 | 736 | 737 | 738 | 1 739 | 740 | 741 | 1 742 | 743 | 744 | 1 745 | 746 | 747 | 748 | 749 | 1 750 | 751 | 752 | 1 753 | 754 | 755 | 1 756 | 757 | 758 | 759 | 760 | 1 761 | 762 | 763 | 1 764 | 765 | 766 | 1 767 | 768 | 769 | 770 | 771 | 1 772 | 773 | 774 | 1 775 | 776 | 777 | 1 778 | 779 | 780 | 781 | 782 | 1 783 | 784 | 785 | 1 786 | 787 | 788 | 1 789 | 790 | 791 | 792 | 793 | 1 794 | 795 | 796 | 1 797 | 798 | 799 | 1 800 | 801 | 802 | 803 | 804 | 1 805 | 806 | 807 | 1 808 | 809 | 810 | 1 811 | 812 | 813 | 814 | 815 | 1 816 | 817 | 818 | 1 819 | 820 | 821 | 1 822 | 823 | 824 | 825 | 826 | 1 827 | 828 | 829 | 1 830 | 831 | 832 | 1 833 | 834 | 835 | 836 | 837 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 838 | 1 839 | 840 | 841 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 842 | 1 843 | 844 | 845 | 846 | 847 | 1 848 | 849 | 850 | 1 851 | 852 | 853 | 1 854 | 855 | 856 | 857 | 858 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 859 | 1 860 | 861 | 862 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 863 | 1 864 | 865 | 866 | 867 | 868 | 1 869 | 870 | 871 | 1 872 | 873 | 874 | 1 875 | 876 | 877 | 878 | 879 | 1 880 | 881 | 882 | 1 883 | 884 | 885 | 1 886 | 887 | 888 | 889 | 890 | 1 891 | 892 | 893 | 1 894 | 895 | 896 | 1 897 | 898 | 899 | 900 | 901 | 1 902 | 903 | 904 | 1 905 | 906 | 907 | 1 908 | 909 | 910 | 911 | 912 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 913 | 1 914 | 915 | 916 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 917 | 1 918 | 919 | 920 | 921 | 922 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 923 | 1 924 | 925 | 926 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 927 | 1 928 | 929 | 930 | 931 | 932 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 933 | 1 934 | 935 | 936 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 937 | 1 938 | 939 | 940 | 941 | 942 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 943 | 1 944 | 945 | 946 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 947 | 1 948 | 949 | 950 | 951 | 952 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 953 | 1 954 | 955 | 956 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 957 | 1 958 | 959 | 960 | 961 | 962 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 963 | 1 964 | 965 | 966 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 967 | 1 968 | 969 | 970 | 971 | 972 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 973 | 1 974 | 975 | 976 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 977 | 1 978 | 979 | 980 | 981 | 982 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 983 | 1 984 | 985 | 986 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 987 | 1 988 | 989 | 990 | 991 | 992 | 1 993 | 994 | 995 | 1 996 | 997 | 998 | 999 | 1000 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 1001 | 1 1002 | 1003 | 1004 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 1005 | 1 1006 | 1007 | 1008 | 1009 | 1010 | 1 1011 | 1012 | 1013 | 1 1014 | 1015 | 1016 | 1017 | 1018 | ..\ 1019 | 1 1020 | 1021 | 1022 | ..\ 1023 | 1 1024 | 1025 | 1026 | 1027 | 1028 | 1 1029 | 1030 | 1031 | 1 1032 | 1033 | 1034 | 1 1035 | 1036 | 1037 | 1038 | 1039 | ..\$(PROJECTNAME).launchscreen 1040 | 64 1041 | 1042 | 1043 | ..\$(PROJECTNAME).launchscreen 1044 | 64 1045 | 1046 | 1047 | 1048 | 1049 | 1 1050 | 1051 | 1052 | 1 1053 | 1054 | 1055 | 1 1056 | 1057 | 1058 | 1059 | 1060 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 1061 | 1 1062 | 1063 | 1064 | 1065 | 1066 | ..\ 1067 | 1 1068 | 1069 | 1070 | ..\ 1071 | 1 1072 | 1073 | 1074 | 1075 | 1076 | Contents 1077 | 1 1078 | 1079 | 1080 | Contents 1081 | 1 1082 | 1083 | 1084 | 1085 | 1086 | Contents\Resources 1087 | 1 1088 | 1089 | 1090 | Contents\Resources 1091 | 1 1092 | 1093 | 1094 | 1095 | 1096 | library\lib\armeabi-v7a 1097 | 1 1098 | 1099 | 1100 | library\lib\arm64-v8a 1101 | 1 1102 | 1103 | 1104 | 1 1105 | 1106 | 1107 | 1 1108 | 1109 | 1110 | 1 1111 | 1112 | 1113 | 1 1114 | 1115 | 1116 | Contents\MacOS 1117 | 1 1118 | 1119 | 1120 | Contents\MacOS 1121 | 1 1122 | 1123 | 1124 | 0 1125 | 1126 | 1127 | 1128 | 1129 | library\lib\armeabi-v7a 1130 | 1 1131 | 1132 | 1133 | 1134 | 1135 | 1 1136 | 1137 | 1138 | 1 1139 | 1140 | 1141 | 1142 | 1143 | Assets 1144 | 1 1145 | 1146 | 1147 | Assets 1148 | 1 1149 | 1150 | 1151 | 1152 | 1153 | Assets 1154 | 1 1155 | 1156 | 1157 | Assets 1158 | 1 1159 | 1160 | 1161 | 1162 | 1163 | 1164 | 1165 | 1166 | 1167 | 1168 | 1169 | 1170 | 1171 | 1172 | 1173 | True 1174 | 1175 | False 1176 | 1177 | 12 1178 | 1179 | 1180 | 1181 | 1182 |
1183 | -------------------------------------------------------------------------------- /Demo/DesignBoxDemo.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gmurt/DesignBox/932c1aeb15308863cac7c338c7b591353c663781/Demo/DesignBoxDemo.res -------------------------------------------------------------------------------- /Demo/untMain.dfm: -------------------------------------------------------------------------------- 1 | object frmMain: TfrmMain 2 | Left = 0 3 | Top = 0 4 | Caption = 'frmMain' 5 | ClientHeight = 916 6 | ClientWidth = 1065 7 | Color = clBtnFace 8 | DoubleBuffered = True 9 | Font.Charset = DEFAULT_CHARSET 10 | Font.Color = clWindowText 11 | Font.Height = -12 12 | Font.Name = 'Segoe UI' 13 | Font.Style = [] 14 | OldCreateOrder = False 15 | OnCreate = FormCreate 16 | PixelsPerInch = 96 17 | TextHeight = 15 18 | object Bevel1: TBevel 19 | Left = 0 20 | Top = 129 21 | Width = 8 22 | Height = 719 23 | Align = alLeft 24 | Shape = bsSpacer 25 | ExplicitTop = 49 26 | ExplicitHeight = 362 27 | end 28 | object Bevel2: TBevel 29 | Left = 0 30 | Top = 848 31 | Width = 1065 32 | Height = 8 33 | Align = alBottom 34 | Shape = bsSpacer 35 | ExplicitLeft = 8 36 | ExplicitTop = 588 37 | ExplicitWidth = 832 38 | end 39 | object Bevel3: TBevel 40 | Left = 1057 41 | Top = 129 42 | Width = 8 43 | Height = 719 44 | Align = alRight 45 | Shape = bsSpacer 46 | ExplicitLeft = 50 47 | ExplicitTop = 49 48 | ExplicitHeight = 362 49 | end 50 | object Bevel4: TBevel 51 | Left = 0 52 | Top = 121 53 | Width = 1065 54 | Height = 8 55 | Align = alTop 56 | Shape = bsSpacer 57 | ExplicitLeft = -8 58 | ExplicitTop = 81 59 | ExplicitWidth = 669 60 | end 61 | object DesignBox1: TDesignBox 62 | Left = 8 63 | Top = 129 64 | Width = 1049 65 | Height = 719 66 | HorzScrollBar.Tracking = True 67 | VertScrollBar.Tracking = True 68 | Align = alClient 69 | BackgroundColor = clBtnFace 70 | GridOptions.Visible = True 71 | PopupMenu = PopupMenu1 72 | RulerOptions.ForegroundColor = clGray 73 | RulerOptions.BackgroundColor = clWindow 74 | RulerOptions.Units = 'mm' 75 | RulerOptions.MeasurementSystem = dbMetric 76 | RulerOptions.Font.Charset = DEFAULT_CHARSET 77 | RulerOptions.Font.Color = clWindowText 78 | RulerOptions.Font.Height = -13 79 | RulerOptions.Font.Name = 'Segoe UI' 80 | RulerOptions.Font.Style = [] 81 | PageWidthMM = 100 82 | PageHeightMM = 100 83 | Scale = 1.000000000000000000 84 | OnChange = DesignBox1Change 85 | OnMouseDown = DesignBox1MouseDown 86 | OnMouseMove = DesignBox1MouseMove 87 | OnSelectItem = DesignBox1SelectItem 88 | AfterDrawItem = DesignBox1AfterDrawItem 89 | AfterEditItem = DesignBox1AfterEditItem 90 | end 91 | object Panel1: TPanel 92 | Left = 0 93 | Top = 0 94 | Width = 1065 95 | Height = 121 96 | Align = alTop 97 | BevelOuter = bvNone 98 | TabOrder = 0 99 | object Image1: TImage 100 | Left = 900 101 | Top = -5 102 | Width = 128 103 | Height = 128 104 | AutoSize = True 105 | Picture.Data = { 106 | 0954506E67496D61676589504E470D0A1A0A0000000D49484452000000800000 107 | 00800806000000C33E61CB0000000473424954080808087C0864880000364949 108 | 44415478DAED9D079C55C5D987E72EBB2020581054EC8A25F65EB08B122BD87B 109 | 8B1A3596583E5BD4249A68624BEC9A628DBDA2067BC386BD774504EC282A45CA 110 | B2BBF7FB3FE7CC5CE6CE9D73F7962560CCFB6338774F99FACECCDB2767FE073F 111 | 69C8CDEA0ACC8ED0AB572FB3F0C20B9BA5975EDA74EBD62DB997CBA55D95CFE7 112 | A3DF70FF830F3E30DF7CF38DF9E8A38F6675132A86FF218085C6C646B3CC32CB 113 | 9875D75DD7CC37DF7C85FB6EE0CB418814E3C68D33CF3EFB6C82102D2D2DB3BA 114 | 6965E17F0820586BADB5CC0A2BAC607AF7EE5D18F04A063E062003DF720511EE 115 | BAEBAEE43ABBC24F1A01E69D775EB3FDF6DB274B7ED219C1E06B107BEAF72AFA 116 | B9817E6FAADFCB292DA8DFBCF0B9AE1FE9EF27DADADA1E6868687845F79AC332 117 | 264F9E6C6EBDF556F3D5575FCDEAE646E1278B00CCFAF5D75FDF74EEDCB9E8BE 118 | 9DBD73E97A88FEDC576959FDEED44E76CDFAE619A5B3F5EE43E14390E0C61B6F 119 | 9C2D57829F1C02B0D76FBBEDB6A65FBF7EC960FBB39E81D76C3E56EFFC5AB7E6 120 | AA257FE5718D2E27298DF5EFCFAE2BC14F0A0158F2B7DC724BD3B76FDFD8E0B3 121 | C49FA3B4469DC528AB3CDBC1D64A5F7B37CD279F7C626EBAE9A659DD0D45F093 122 | 41803E7DFA989D77DED974EDDAD568BFF6F7F939F5FBF7BA776C47F687F27D59 123 | 6947E5FD89FD3B49AFBFFEBA79E8A187EACDBEC3E0278100CCFCDD77DFDD74EF 124 | DE7D46C353049857D7EB9506EA77434797AB017FD6AE2CCD0E01A64D9B66AEBF 125 | FE7AF3EDB7DFCEEA6E49FB6156576066C3FCF3CF6F76DA69A7C2E0BB99DFDADA 126 | BA8666FDF59D3A755A766696AF413F4FE92495DBE690E0C30F3F4CD8C3D901FE 127 | EB11E0D0430F353D7AF4481B3B63D95F5183FF80FEEE5B491EF954D283780F32 128 | 7E9AD2C2FA767153C1AAA14F7F10B20D12A23DEE0B8CAEBCF2CAD9822BF88F21 129 | 40CF9E3D93FDB71AA0836A95A4396A1F71AE2FD4D120ACADC1BFB382C19F228E 130 | E019BD779DBE7954D7CF83E7080FF656FA95D2D2B93292237DFF9ED22A7A65BA 131 | BBF7D65B6F997BEFBD776674755530D31080C1A6F391A92368996BAEB9927BD5 132 | 88564180E9D3A727F2F5CF3EFB2CF99B6B253068D020B3DC72CBCD68684AE9AF 133 | A86BD999AF77DA74B94FE9CF428097842CD3CB95A3F7FBE872A6DE3BB0DC7BCA 134 | 6B4F957BB3FB1B5AE05FFFFAD72CA7053A1C0198E9ABACB24A2253F707BB5AD1 135 | 6A4CE9C23DF869F650A8697E4F9C38B1E43D64FA83070F0ED9BC7EFAF9A0066A 136 | 89EC22F31F291DA7F7FFCDDF615DDA6903BCFF697AA77346E6AFE9B2B1525261 137 | 218479F4D147CD2BAFBCD2D1435015742802205C81CF761AB4AC4EB32256664E 138 | 6FA526A51F746F82AEDFEA7E74638C210408F0CE3BEF98F7DF7FBFB03240F1EF 139 | B7DF7EA6A9A9C9DFF3BBE937CBF83A5975D780DCA6E747EBE71761B9AE6C375B 140 | 51163999BF07B4E38FBA774246FD5B75D95DE90E97EFEC2017E83004D868A38D 141 | 92599F645ABCE7E69496D0CCDB4CD74DF46C80D2FC59F9E81D7AF94D0DC86B7A 142 | EF4DFD1EAEF4B17E4F731DE7BD9B5C4564252B01B369D555572DD2E6E91D088F 143 | 6B54FE2E19E5FDA0CB594A67469E255B1008F6DE7BEF9991234726F741B23DF7 144 | DCB304D1556715D300A26D1C2B4BCFEFD5B3EDFCBA5F74D14566EAD4A91D350C 145 | 55438720C07AEBAD972040041653FA83D2D66A78AF5AF256474DD2E543A58795 146 | 1ED4DF4F3896CA7B276D4C7CCB395DE9E4983C5FDFA1BC41DE7FBB525B981F34 147 | C7534F3D95A8754380B318306040B2DDF8650A195711C5FF48ACBDCA779A121C 148 | C438B7B2DC7FFFFD094138ABA06E0460C66DB1C51645A25541931A77A4FE664F 149 | 9CB3232BAC7CC7E872A3AE3728BDAFFCCBB1093FD773665D43249F711AAC5F68 150 | B086FA08E406E6E9A79F4E74FAED01DA449FD3B057DAFDBB8CFA1FA1CB65AE9C 151 | 279F7CD23CFFFCF31DD9455541DD0870F8E187274BA187002CB9E7291D12EBF8 152 | 8E0256062DA92FA88CBFEB4FA42A21B5CE4C7B4CA95FE4DBA9622F076BF01F2E 153 | EA0CD51FBAE2DFFFFEB719356A5445F56025D8679F7D124193D707EC4123F4BB 154 | 67F8BEEACC2AB69543982FBFFC32E1066615D485003FFFF9CFCDCA2BAFEC379C 155 | 65F60AFDDEEF3FDC8E919ACDE7E87AA7F6E06FD4C18DAAC35D4A5B872FB2E76B 156 | 100ED47BB7FA041EC05E5C8BDA76C92597343BEEB863918E4170A67EFF2652FE 157 | A7BAACA5F415654F9932C55C7BEDB566C28409FFE12E4BA1660480A7DF7BEFBD 158 | CDDC73CF5D40000DC2AF1A1B1B2FA927DF5AC14AEB4669702F87F0D4EC3E2B26 159 | 9CD1B3A374B9D4F2FB0902C092FDF0C30FE6CE3BEF3463C78EADB6E804D80A96 160 | 5DB648AA8CE0E7695DBBFB37E1062C31FC8C2B1F0498556AE29A076A89259648 161 | B46BDEECFF99AE4F9A544256094C55E3D1942162A5D79D44043D3CB2DBC595E0 162 | 167A2BDF392AAD97450413197C08C7F3753DDE9FF50C3E1CC42DB7DC62BEFFFE 163 | FB9A3B126197633F2DB01A3EA86A6C16A9E3C926E53C120478F8E187CDABAFBE 164 | 5A73D9F540CD083070E0C084004C324967FF159AFD07B4F79D1ACC60FFC3F2DD 165 | A3952664BC4707824C20C1AA7A6F0B5DD1AC2D5426EFACC1E7D9A3563D3BD147 166 | 0066FE6DB7DD56F3CCF7619B6DB6496C0B5DF16AE3AFB4125D1AA9CB505D06D9 167 | DFC9E08304B3026A4680030F3C30C17A4B392FA0FDEF63DDEE92F53E2C903AE4 168 | 2ABD7FBCD2E45ACB553E6BE87B78FAC14A4BE977A3F72C9F31F82ABA6D2044A1 169 | 772F49E81A20C4EEBEFBEE643FAE07900F1C74D04169C7A6FDB2A8ED97A23AE9 170 | FE685D9670F578EDB5D766998D40CD0870C20927F80DDD570DBDA6DCFB1A80C3 171 | 4C4A2016B16D5976F62EEF3200858DF5CEA17A6F90F2E96CBFC945F20737E0BD 172 | 2FD6EFB39D7EDE3D27B10D3CFEF8E38998B91E38E08003124194578D0F424E04 173 | 3A40FD3197FA6C3265B30A5D7AE9A5D517D6015033029C78E289FE9F37AB91BB 174 | C6DEB3C4D6454AC77AF70ACFC78F1F9F88449DB2C759E8C25DC05EA2444A2A5A 175 | 061910AEE832541DBA72E459DE17DBEA37529713B465A11708DF4D843E20424C 176 | C750096068DABF7F7FE3F206E9F4FBF048BD40DE571D029E7BEEB9B50E455D50 177 | 130220F387EDF12C685F8CF1DBB6A12394D673D22FD7D1105F08405E7EF9E5CC 178 | A5174E03E512D236922FE20DCAC072F7D590580C07DFBB3F4508C0C09CA13F7F 179 | 089E25B2809B6FBEB9264D1D062810835E99FBE8F7B5913AEFA1CB2DAECC73CE 180 | 39A796A1A81B6A420066274A1FDBC8259540807962EFAAA38F55475FE01ACA37 181 | 2C79F0DBD57630AB03C4272A66C77D28CF265D212807051DCCF23AA11DBDC35B 182 | 4ABFA4FEC66AFFDC8C4407F0E28B2F56240D0C61DF7DF7350B2EB8A02B6335D5 183 | E139A526FF1D4D80DFEADE99AECC1F3302E038F142D840DB30967F74EF635D43 184 | 99EDF59847EFB1C71E21026CA9EB10A52202541D7C8190EF42211F1DBD77AC7E 185 | B64EF07E7FD5FB7F46C7E0EAE9125B026ADB6A08C4ADB7DEDAACB8E28AAE7FC0 186 | 8417431B04E5CDB678B42BEF8A2BAE9825B6017523802A3F10F3AA8CCE4507BE 187 | BADFA92FBDF452B2C7D6020C3C5AB8A4E269D9B08ACFABFCD583723F555AC158 188 | DDBB28FDD5C5A29EA76FD6D79F8DB1BCF5FE4310AA7AE763575F776560EEB8E3 189 | 0E2396AE48CD0CB04D391F0307AC548B2EBAA8FBB3939E3DABB466501EC6217B 190 | BA32860F1F5E2040B3EC1C660674C40A3008B16B46A75EA1CBC1AE91A86D2FBB 191 | ECB29AD9AD5D76D925114025154F11601B5DEFF1297F561D2578B16B5CB916BA 192 | AAFCDD2D22CC1DCB5FCF47E9D9FEFAF9948F00006262CCCC420428DBB9338464 193 | 77E8BA43D0378FE832D02FC35D41008863C79D8C1E3D3AE9B39856B25E98D92B 194 | 00AAD8D35DE3D84F51AFD6028B2DB698D96DB7DD7C6ABEAB7EA3765D2F28F341 195 | 5DB647EEE077AA03CDF245F5CDB9AAF30E192AE2A9DAFFCF04514CE0EB578BC3 196 | A8FDE6AFD6D8C42F070E606DDD6F8DD4A1240FB7823A8BA84F3FFD3449F5EA10 197 | EA4600CD9A0DD5594FC4DE5385E1FDFFE61A558FCC7BF3CD3737ABAFBEBA8F00 198 | AC3CB70782A036CB71BCE8EFE311405DBD8F96F43FE9DDDEF1AAE76F6A6E6E3E 199 | 42337E7C6CE0D5EE7985447DF50CD68415652E9C4C74ED6909621FB930445D3F 200 | 28E033A51390865A05D1E7EDA8B64BDA0232D09FAC0C98C8D5023521C04A2BAD 201 | E4AF00ABAB71CFC7669366DB2F75FF4A7E43F98300B5EC6DECB3471E79645A61 202 | BBF7AB4CC8F3A27D558372B3EEEF19B29BBEBEDFD7DB8B365858037CB57E6F62 203 | 2226DE5825E972899E2FA63C96B66268D282FA5D9589734440158AAD5112313B 204 | 46AB5E6F685251F6DB4A6374FF4B8457B17C5DDB68272B032B6C35C464DD0820 205 | 58DCCA016216308CDAA5AEA2B5AE009B6DB6995973CD355D47D2D8819ABDF7FB 206 | F557FEC8F837D5CF57C23DD5FD8EF9FE2B2F66EFC5EAF03D62FD514EBF500D54 207 | 800031604543370D1220C67E54E9497D526243E6DA0AFB0A22B0DD56A2D6AEA9 208 | 51283CB6DA6A2B27EDEA6E1160B9F03D3C627439C755B01604C0E002BEDA195C 209 | 98948AFFB77EFFDC7F4FB3FF1F2AE3506F8B28D9B335D8088A20CF710CC1866D 210 | 2DBD83DA760E6F9588214172B18F6AEAB31A11A004906F981411AED4EFA7F4F9 211 | 7759EFC259C0759523BA6B6A0C420E6C01BC19F5484CEDA90EBF58F78F729D38 212 | 74E8D0C48AB71A587EF9E5132D9B27B6652918A67CBB79AF4D575928E34785FB 213 | A41063317D8B1671633D5B55BF59B17A6474AE6B4F87AE047CAA723B0401FCA6 214 | 290B58D6DB74FD5BCE3AA1866DF9E28B2FCC638F3D96E94F51F3B276FCF1C7FB 215 | C298F3D5C0A3220D873BD8DA55A816AD5744B972756871A43D13ABDF03603321 216 | CC840C2B698B6085D842EFFEAC9AF2CA21817D4EC78FD4E36F4C2AE01AAF8430 217 | 89E57ABC35349DD1C1B91CDEC7F3A95E0787F9E832390B19ABAC3353FC42A5CB 218 | 953EF1EE17DEC11731C646D68C00C71D775CC1044A05EDA4DFB7452A86646359 219 | 57996AB45EAC320858D659671D5FB132BF061603926E5E1993B5EFED66256DDB 220 | E93942A13E75D823B628CF8F84449FABDCFE11FD82F0ACF5363DDBAF3DAADDFB 221 | 867A87FE064CC99DD1622A1FC4E91857A0205AB31A0398204FC2D69C66D24952 222 | C45E8AA34956E050DB593302C093C39B5B04C0CDFA4B9F25B3156256CCEF9C3D 223 | 40828B2FBEB8ACF207772E143F48FD920ADA55C6A6DF938232A65B3B80465305 224 | D819F825B359D7B7915A5A3F84D73D226B73A51B2CAB57044210BC870EB22B81 225 | CBB3A41CDB3F3104F85869CD700FB7BA8D558464DBE81BCAC79DADE26825766B 226 | 19A2CBE1FAEE2BEF7E92860C1962468C1831A37EB50DFF0C8B206FA57C59BF57 227 | 8B74D4B6BA7F9FABC4830F3E58C2B36257C8A0931FDA3FBFF3BC2B4B29CE9A2B 228 | 050D6E331582DEFDC6124ECFEB8A4D1E83F0956673A65182EADF5FCF6FD4378B 229 | 44FAFA7125044A9342FB02C05B21630830C2224039494EA3DE59CA1AB742E02E 230 | 5D455B517BA3A27FCFD50BF8EEBBEF92F8046E12D68C00106778DF7A54F79FD5 231 | E013C3F7D481845D39C955C23783C682068712ECEA6354BBEDBC1ECA631DE57D 232 | 8895DE1596768BEDD1C1B388F1A5D26BFA1EB12BF4C887E1609733487175D016 233 | B3785353D3DDFABD62A41C9000C7CFB1B17C4102951F43003C86E1427EC85A39 234 | 82F73B299F8D94CF297AB6A1495DD1CA82BE8128DE5CEF8F747522E1E974CF3D 235 | F7D48700E8BD61CFBCFD79FD5CEA7F57E41C994FA36460059BD8EDC3A70E1B36 236 | 2C09D9C272EF1951862E65BDADA5D12F2CE6374658A992D9AF7B503A0FA8B3EE 237 | D7EB6F2995F8FAC5FEF6EFFBC578C223D8C7EBAD4229C822FFA4D260EC0DFD7C 238 | 3D227961B5634CF0D1EB1601A03912A318563FD85E5F6015D649EF76B1F69167 239 | 5742E0528EFA626B95FF85DF46A77DAC4BB8814304C45A6E8643C8D3E136904F 240 | 7DEF90D7BFE5EBDA419CC08E1E60C9436CBABFEEEF69F34CB209893A37FB91DD 241 | EBFA81AEA034BE00AF650D786CB0914BE07E8E5C9D2B2B1484A7B3EAF169107D 242 | 07F179BBEEA3C409911105D2EED0427E19E4816652D73783F7B1A0DEC4BDFBC0 243 | 030F9837DE7823A183D80EF1B046ABE84F101F110473EABB3F2A5FE213443D92 244 | BDB2EEB15B95E33E138FA4E79E7BAE3E0408F4DE89F207FD7BA40298835DE010 245 | 00B1652895CBA54E93480E370875FBF679515D9507ECCE75262578DED1E32941 246 | 99D1819F3469524199821978963530EDDA70C30DCD9C73CEE9D7212178F5F35A 247 | B533743AC95B24D8D65FD62DF2ACAB343C78190DEA8EAE5EF808BEF966118E24 248 | 5B2426666C91A8A2C39521A57D730728615B504E348D51EC20478B01203A82B9 249 | BA10C0370DB315425EFE6E64B63EA74BFF7006EADA5DD4EE76C2F2FFD337ABC7 250 | CAB0147E2E54F99AD4CEE08DD8ACF6FF46AD0AFB890326035F8D2ADA7901BBC8 251 | 265E3BE7D0EF5B94B631C14AA08EA693891C32DE436E2C928B34A6CA031DC92F 252 | 5D5D714AF1A9F3B01E38E0E278824ADAAF8B855D72A9D95926FBC818286DE68B 253 | 91AFB9E69AFA3D78B00E0EB0F249CD8E0D82C2119EC0CEBC9F4F4DB171A3C656 254 | EE705DD9323279766F2FF51180A80A6BBAE711C44A9653069C25BE1E736F1764 255 | 2AF07FA40C740857A9FE83C32A2327D0756F3D6BB583B5B3D2AD41BBB0023DD1 256 | D5B7129330B6043C904088703510E29DA155E2E432FD88800A5D49C1C6AD4310 257 | 00CFE0D5565BCDAF0CCE17183B1669075501B6001ACCD2F93BBDB36AB97C916E 258 | 41404224A9238BE4FE6AEC31BA7FA1EB3C92B32E66D0B36652ADE0C2CC392400 259 | AC520A21CE2DAA1FDB57515FE228A3FB441CC525FC500DCE65411B58F5CE776D 260 | A8D426708E39E6485683B5D75EBB48CBA9FC60931F5699994130F43EDE480524 261 | E91004587CF1C5CDAEBBEEEA23008CFCB32185AAC2BFB0BCE926E5843656B083 262 | 8D1F08F38A5535AFEA3D9FA0C49EFA9EBB075B837CA1DC4CEFDEF767A6EBBCCE 263 | 9630BB3D298D9237E3DE7EA4E83E2B810B34E92381DEEF65B7834D83ACA0EEFF 264 | AAEB6FF48CC821A704E5ECA4CB107E4313556B16EE027204DC064EAFFF2CD3B6 265 | 61BA1474361D8200806F056B0B3A4615F94BA402994C773E0D04712F942D7484 266 | BD1DA39E1F5222E0442148449696B169EE054D9F55B733BD97ED6F3A77EFC988 267 | 250D2E15F3E7AD4970FA8B6C199449DF7C62C6BE34C47C3FE239936F694E5602 268 | 24A0FE76909B611A8F1FE05A611D94CF91CC4A3DDB27B88F87D3ABF6774D7E01 269 | D05F78267B02275681AFB26C15988426B56748A04310004E00E2C48FBA6D45C3 270 | 284C8AFCE3F3298403C04C21480326D2886313DEDEBE8345EFE9FECB5A5A1108 271 | FDD30D3E3A6F10200C2737FFDA3B993E6B6E6F3A77E96A3A4193E6F8972B5C43 272 | 1C70A8994FB1A08008909B93C68E36A31EF88B99FAEDA789FC828E873B08F6E1 273 | C595B04F5C2168F344B802A5058376F4563BC6D58300AC46871C7248D2F75E3D 274 | DECE920F5896B9A047A90B01FC089C11C1C56A2A0C6FA1A523122DB70A4018BE 275 | A0C69FA08E181E29029938C60FEB78DFE25FB8A0DEFFDEEDFDA19571436317B3 276 | D4D6479B79965E37194E7FD06D2E7DF5D98A0DB9DCB2BAB594492D87A768D917 277 | F29977B4AC8C69C835B4D935214502641793279A51CFDC62BE7FF3BE6425C03C 278 | DD8F1164077551EDF5C354BFC5BC3AC78858CA9CCB3DAFC73770830D36486416 279 | 5EF684C11B988100EC91DD5DB935B381C4DA2779461A7E058E66BFB3FC72D410 280 | 4280B084776ECD65388A5AE9DF0BBE224483FFB8FE1EE01AC0CC21CA96AFEB5E 281 | 66F08966DEA59D9DA8C3B59C696E6959B37363E361AA0D2AE2F94DA914947A7D 282 | D7DA967F4A9F5DA445E349BB18A416CD42894953A69B91F79D6D5A3E79359900 283 | 5829330BFD554D755A5F4880D8789E320880A9D74A1D8100A148DEA416431BC4 284 | DECDA7B6878BD685000847A0427DE2C366C86CBAD01790381E3EA8044289DDF5 285 | DEED31618D97E7C1BAFE2DF8169B838B6D4727429DCB2FBFBCF07CE1814798BE 286 | 2B0D300DCE7027977CD34797DF5889597B073F14A0A5A5ED7655E338FDFCCC47 287 | 82D6A913CC0777FCD14CF97A64414ED0A54B97D0DE10B13076FF9D6D3F157583 288 | EE11946A57D76E229039D97CB5005B88E4D0CB9F534CA2B110D189B8D5A16A04 289 | 00D3D9EF975A6AA9C23D6FF08979F38F5CE0BB6F97FB5C641B20943A4B7B9127 290 | 8ED32BD8F709E7BABDF70D2B0553FB4DF73E7EF58F3C9252EBDD165DCB2CBDDD 291 | 31A6CB1C5D93FDDD2EF97DF41BF1F09AA606BD071ABB29535B77EAD2B9E11D1A 292 | D2C660EAC7F763DE361FDE910A3C7100212A698804A2494ED1DE7C9A49651C21 293 | 02E093F83BD7760C59D88FAB0D4D835C00377D6F1CB0521E9DCB38E1247447AB 294 | 1801187CF8606799E335A649953FB1B1B11116271A1B002190950C8612334498 295 | D7848C81E569BB0919A066BB7BF9BCA4B4A1EE4D73088056D151FF8B6E799CE9 296 | B35C7FD3A953CEA4145E7E21EDF343631ABC6A607A6BEB28D107831A3B35BC4B 297 | 55939C757DF79653CCC4CF52F3B635D658C36CB2C92661DFA0BC3A5FE9B08818 298 | FB8C9C8D22E6DA8F8977B556D398CA21B2F6002BECBF678C03ECF546A8C2AB42 299 | 00069FBD6E810516280C900584E434F01726439207CFCE112CB847479444F41E 300 | 6ACDEFFC8EB0F9134CB228648610ED6CE5F31BF7AE4FFD77996721B3D2FE9724 301 | 4B7F32FBF157686BBBA9A9B1D3CEF50CBE57D757B425ACDFD029B500A2AADF8C 302 | 78D98CBCFB8CC23B6C8D08677CF6D0A4F2F967546F5F8EC165A2FA6513DD7FD5 303 | 6F3B265B958691473FC0DEEFB8AF7C6A48820674B3D8FB7A2E044E7C2626B809 304 | D42E0230F850BBCE2DDB5F6A7419A206AC95F5ADDE19AE749015D80CB0B2F050 305 | 3A8875CF1F239FFFC9D91078EF226879C275169EBB8EFAEFBDD21666892D0E2B 306 | 0CFEB4E6D63DBBCED178ADE940D02A70B24A3E3767076CEAA4F1E69D1B8E33D3 307 | 27150C829219094BEC2B6EF4EEA318A57AED704B1E6A6B2C7E3EB3F7939B58EC 308 | B417A4827181F670115A2C202D850D8DDA0908E18EB64AA3A42C1461ACA06511 309 | 00360F414340EC117FEF8E98D0C36B24EA4754BADFBB027369D8B6D0851B5BFE 310 | D59CC182055693C7ADD18383A95A017AA923A738EC45F287BC1F5866C7DF9979 311 | 9658CD2EFDA6AB5682877365E202D7022A73B48AEDAF9F63137AA0B5CDBC2D04 312 | 983C7646D5DD56E99F3F28F846BFE78D2000BF6FB16AEF0202B828E258EE6441 313 | E82369E1D18834D295F3ADD292396B7D445928C7EEBBEFBE6C0470D4BE5F883E 314 | 5CDC2E3359A76C10FAE4AF767F9B16548228624FE402FB3A2B044259E2AC6961 315 | 53F033E8EDBD8353C4E6AEF27000E79D775E218F15F63ECFCCB940BF747F36F9 316 | CD3BE51A86EA8F8A29FE4A71607A4BDBFE9D1A7237F20704E1BBB79D6E268E29 317 | 323F08A9F2657C91B5AD7F1167A4B61050F39FAE6D6E7BBBEAAAAB32C705BE3F 318 | C813E1D8E5B1F72DD7758A9E9FEDD35B6EA5892200326617FBD71B7C9C2A5962 319 | 563671D076DC828102CB7796C323429FB382FB1027FB5A05127FE3EF3F34576C 320 | FA759A49630E174C9A08EAE460458B00697DCD1F7291008D1D01ADAD6D7026BB 321 | 399670F40BF79AAF9FB9B2E81D5F3B8A8108F684417B8B10407F8ECDA7665B6F 322 | 79FD5430D8F0011A63E38D372E61BFF57B582E237A9A15B6E1C03BC1D7963AC9 323 | 63090220E040B91348B97AE8A347CAECF9984A139099691995F7DBFD105F798C 324 | 32D70D2A898C9A40136CA8D8101EE73D23EFCDB4AF3EE566086E4FC4F2F511A0 325 | C782FDECFBE6F18686B820A45E50D91F2AFFE553D62D6F463E3FD47CFBEC8C99 326 | BAD0420B99BDF6DACB1F9CBFAACF42AFE009A1889C832974D918A3169F2B2090 327 | 86335861350EAD944C2AD57B246BBB43F4ABBC37E054537FF0FDFE2B4100883E 328 | 2FB8011F74B63CFEBE19FDC212C3AC66D92FE2EB7D29A1D72968F21E88E80920 329 | DAF0EB7FCCDFFFF3A9FD3C88F7658CFD0B1140A5BDA3A22AB69EAD129A9BA7B7 330 | F6D436D08AC6F0A3E78A1100332EC2E7E666B890D1163F74FC54EDF1C78872BF 331 | 38D488AA0F51919FE10FD4983163920096485D11F9065641B099E47348C6E0B3 332 | F673924981DDCC5BDF0CAC829D5B791102E080C912E30AB270BA7E9F6A320429 333 | CA149F3C2260B7F8051150013B374495187F06AC70899247DFF03DD2BA0B739E 334 | DB971A81EDDCA6396BCF06F57ADD75D715A97E97DFEB3CD373C17E9606CC8DD1 335 | 75413373203F7EE2B4EE73766B9A1E4300B4A2B0CB76B5C31F025A6661AF8DAC 336 | E9ECAD5786DA41ABE666FB7BCEF521093B45884A07B61F1BD81635B827E7321C 337 | 60F41C73392C8E9AFDFC9E78E28984832AE4E77E40C162E44958360FCBA0D0B1 338 | 9F8F9A1AD968DD10674576F148B6D8A33FFAE8A3C4CA95A859FE997DF934B803 339 | 32EB35824A7F9F0BA277E81E861FC7B80620F727C0940F20400F8B00FAF74EAE 340 | 0AFBF9EA86DF348BF8EBEE6880911E0260A8413B5DFF59A1D563BE54CE6B0B9E 341 | 4B683E1708DAFA9CFA74432C89C255D4831CC6248D8D8D7F3619A26DB6143B2E 342 | 05AA9FF4F5D75F2712C7A2CCDC0F9C3208C2E0F1AF3D559187F47BED0C0CC30D 343 | 09E38E11DEBD820B926F9583D062871D762844BAB0574458D0157DBCEF63BA83 344 | BD74B929C6FECD4080734D8F05D2383D2DAD6D433A3775DA76A68C7F3EFF81AA 345 | B002F568110DF0B14703A02676E1E13254D9340FF3B1A1F60F7C09AECE95460F 346 | 2B785447A041CF4FD60AFDBB5C86514D3E8D7CB61D2261372600E3123BA4AAD0 347 | D9183AB0F77B7BF50996A28F2E31AA08D2BDCBBD82936B96200304001182CAFE 348 | 528DF9BBF7770902A81CD8C7F71D02DC70C30DE6F3CF8B4F70FBD99EE7165600 349 | 7188A73535369C6266023437B75EDDD8D870B043800F86DF6326BE704DF22C0C 350 | 102978D8692E6DDB8893881FC0287B0BD1395CC556419FE0BD04DDE08C62DC84 351 | E17D389C63B364FD29919A6C231F573A2EA9E4C446E0F0969C1ED6A0A3574641 352 | C38C675AE4068773F0B2DCBF29833DD2B97EB999A201BE5148B0BB1390042CD2 353 | F7622D7B69B9CBBB322EB9E49212D3AF65773FC7F4ECDBCF34905F3EBF7263A7 354 | 86A772C5EEE31D01AD6DAD6DBB1B1B100B1AE0ADEBFFAF2008C25DDEF948A89E 355 | 73A84D68760A963948464D7A6A58AB77AF1F14BA49C5EA7EFF2248DBDE5331CF 356 | 4D28DE5090167C83826D27BD33C61F7864268CCBBBEFBE1BFD2E2981E51F5F3F 357 | 3730DAC38F50A75F9451101E3E54E4411F01E0CD29A8DC418F4E7E8D69B3C721 358 | C0BF12F060E90802107B68539F88018B7D1900B0E42E679979165EC6746A4856 359 | 8026B1810F080936321D087669DD485364A2B16C209240D4C2C031C71C536897 360 | 124A9761C1F7B0C8B113C54ECB05C7CBE453A75A8EBBA15F96D36F0C4CFB6754 361 | 8D417E59171C3F3EF5C704686F5C92CE46AEEC79E3324587EBBA7C4647208067 362 | D96A76053123F1FAAD045029C319F8AA5FE5B1BAAEE4DBC3DF01D43066073CFD 363 | 548700002166FD6863BDFBEF6716597B9010206788C3D0DCD2B2F61C9D3B0FCB 364 | 55E03F57E9F88BB6D84FF915CE789B3A798A79E7C6E3CCF4F19F27EC1FD6D18E 365 | 4727E8A45680223F4954E6C69B341E2026C6A36AB9E0FD5735112F1352615BD9 366 | D3C4A1CDB2CFC81A26FA030F54A25C4A7ADBB978D90181E87B2A4BA9C0A9206A 367 | E8DFFDC21058547AC60EB384E5D2C9CB3D9A8323DC43D76F785956220443FED2 368 | 9948CA5E78E185E4EF6E7D97334BEF7C86E9DCD8906C03E920E42FD67E7D68BD 369 | 239FF4725BFECEB634B66F9BE3F0277E3E4208707CF21CD93CD6D1169951CF3D 370 | 2D042804B0CAA726EEB0859362F9A33453DBFF517A3B9FCF65C739109EB7FC49 371 | DF11E174BA3F1E791BE1B4BD15B90801FAF6EDEB3E3ED906518E55944158DC78 372 | 1AAC8F3FFE383970A11AC09206895970946C896C40834F0720093C55753AC76F 373 | 20FE851036084B8025F6FD87F2ED653A756A70F200944284A7DFB5F29A95C2F4 374 | 96B667A636B7ECD2B54BE3D7891ED85A167F70F759E6BB11CF1762187996C298 375 | 7A3DEBD320F9E0808890BDD3DF38CAE05EBF4AA4CF639C11543002A07BBD7BAE 376 | CF92C1AFD4C228C938086E4C18F52D321000D66209BF21D8E4E167572D6044C1 377 | B97B5EDB08C4B047D878FB136350DC9FEEF591006113E5A33C996BA581A6DF80 378 | 834D6322C4B24DCB89B8CA9B7F6A55D851BFAB8E18A2329E9EF8C3D49DBB75ED 379 | 62CFF94BE5DCD3BEFDD4BC75EDAF93775C0C23AF1D98815F18E4931C15978500 380 | 1676B57A831227D840794474B4A342F6DBE5C98967D049951EBA5D82008231BE 381 | F42AA80C94EC06AE506CF208FD5A0B44C2AABFE62B9A7CB5A9FD7B9C3D86FD39 382 | 573E00FDC10A8468B8DFE0534DAF7E6BCCC833610BF3D884EFA3D5E034D1070B 383 | 990A4CC3286B5A73CB598D8D9DC4E672D8635A1EACDFF4E669E693872E321346 384 | A667FD39ED5F525C5A6E915AD6AABCF10B782F68927BDEDDAE529C32367F64B6 385 | BB8FD00FFF49037BBEFAA024C6016A641C4CAB3DF0228600D8B067391660BABA 386 | A5FB1B57AC502A5707028CCB7921E7F391DE12F68FB49D5B44EDA23861259830 387 | A5C5ACB0FB99A6DB7C8B883A72E65B69361ABC05A64D9DBE6B8F1E5DF6B7046E 388 | 2C4C2C821E8E8BC76873843306CD630CCA8AD3DC62BE78F309F3FDD33334AF7E 389 | B02CCBAE7D91F3BC9BF3A9291B1ECFCD6193B020666BB3B615497D7291A5C1F2 390 | F79C3B1C3D598A1510E7D27236046511808170265F8229B9887BB6AD084CFE8A 391 | AEE34928160845562DF85B80F2E1F8943056CE177676F408EEE3298444AD20E9 392 | 724870FBEDB79B6F274E35CBEDFC3BD3B5F752D634D0A4FFD9BD9BFF44D1CFD3 393 | 24224DB7904FF744EFD2DCD2FA9ECAFA4AEC63BAD61BCF24BCB5CD344F9D6C46 394 | BFFE8499F8DC0CF52F21739DF2C78EDB814EB7EFD5373100F5B62E967844EC44 395 | FAD8D67888E896F1C82A30DEAA7DBFF5B921F67BCE4B466D5CAB036C0C013E0F 396 | 65D45E45265B6AF6075711A4728452AFF600E4C0A974255D5F0FCABA5E0D7C56 397 | 887149A41EACBF98404DF46902345D9CF431716AAB5968D3434DEF65D7D3EC6D 398 | 4B5AD9E07C020BEE6185E6DBA5C2F70A2A1494C8FC274F9D66BE7CE422117DC5 399 | FA79DF32C7244524760C5B06752D1C0D2360E5C19C18D7B6CC237563AB803B78 400 | C31F7C54BAA1CD404720000A8C4DB23EC8A7A1D8AFF22B12F2E595401064AA24 401 | E4BCF2450C7DAACA81CD21C0441881EC917C1A91E33B7F56B80320A1097A2CB1 402 | B6996B955DCC9CBD16325DBA362516C309223424CE61065184BF2ABB19DF962E 403 | 1822F63E33DF7DFC8AF9E2F9DB4DEBD4626B5D249AF49BB39BD07758FF3CE72B 404 | B374EF5DB56355ABF4C2260F33F74CD984D5886235B5624451C4EA8B30A860D8 405 | 4100483CA33A1A01E8F013B33E50835057626152D0003288F0E5D51CAFE22380 406 | F23C42844D91E41169A49E4161764116A0E70785FDA5FB77A90E7BA82ED3C395 407 | 003D7AA2F86868324D3DFB9AEE8B2C6FE6ECBD8810A0C1690D9351CE5B62216F 408 | 5700160C6D0766D267EF9A69635E346D2DC5319AD1FA21D1640B4301E4DA2FE0 409 | B0EC22EA5FF57BCC2EEB58E3968DFDA7F75E5342D64F8089F3D4A6238357D010 410 | 422C0E7137EAA1C132114085F4B76ACCCCB8331A1C0410A7060D4888112A54C9 411 | 7E0402B00558F883B539F0F323EAF7CDB623D927AF1712EC624C897FC19D5690 412 | 32DE4702471374C48190C82D10F430F08B2C32235A9CDBFB2D02A01AF7853FF9 413 | 0C76CF6F2306344431BB44E9BAC6C646E7188B73E71BA1D247EFB3CC6EECDA08 414 | 408385CAB16A208600843F793C57DEAA16D12CE15A4B2440186CE0EBD6DE91E8 415 | 7EA0499386643F2C682C4117EEF596777C046FD0406F1564C54A80D4638F9C75 416 | 1A711D54CFE95F704598C387C19AFC01F57E137C1AEBD0A2107631218E034DA2 417 | 5755EFBF08A9A9FB0F7E7EF6FA6C3806166110198F70FD823414238F5A2129C9 418 | 8563F7C4B2DBA841F798323C733E75D53A4A574E032D3A71CB2DC31028F8BDC5 419 | 5684638F3DD6570A959C3B88E24597A7FDFDDDA491C9875A93B170252072E72F 420 | 7236F2A62F27402AE624865980689A814627C24C0FA38184838E514B3E8DFEC5 421 | 5130FBE85A243B89B1B1F9F414936774C594EB1E1F595DDEDE8A72ACB5B10CF3 422 | 38CD7806B2AC70AC02950A7EA20810398C09C41D524EFD6801DE16A618CA7692 423 | DF1807D89E111914F1A4EFFBE6C71A163C642D58FC86B23FBCEE2380AD1B8735 424 | 8030A1E167DE4AC940A429AE2E4E48027DC219850E104333D0187232F0ECE7BE 425 | 6EC21FEC406C8B97CF0EB66F96B12C732ED06226B3D5BBC78A79A3EA77B53513 426 | 2BA259FCF6797D824819A55CD1E9E34E41A6FB53F3D6FA0A13B95AB7BA42A58F 427 | 38E28822AC57417D5599FB72D966E07EA7E07674921DC86991E7C9D5C5E30319 428 | 60A16C144DD8A717C293BF741F47865119B2738E65B93BB612E4D3A08DD8DB7D 429 | EA77B05325C3B5C0BAB1A407CEA85903BE20D1C7F52E8616A4654A3A311EC390 430 | C0171F6A808864FEAF9C8D24EA4F10572FEA84108790B938995A60CF7932B20D 431 | 34EBFD4D3931C57DCFB176C803EA4200A85AB6824043D72F979E05B0687B1959 432 | 3B81A7D4602C51A9786BF0BC0429EC0020757C31543FAB918BE8DE67F6776C60 433 | 9047DC942BB6BA75CFDED0923858FBEB9858D9DEC0456FC3D2E9BAA5EA87450F 434 | 2BD1FC65B472E1EC07885D88C614B6B0287A680850F2AC4EC4EDE34C24E78F61 435 | E13CCB021781FA98B0BCA738046085AD35BE40A1E2B037CE0934580AA1487161 436 | AAC6CBF643DB011071F8AB976C506E56E7D3B836204091B79143003743C241F3 437 | BEBDCBCA2D429A60B4122C62941AB5862F393D2758C412FA7BFD7C6AB2CEF21A 438 | 3FA3369E4F38FBDF8193329E41A6DF6600E214E929D6B9BE22CDB97B7BED8C1E 439 | C9970FC2E4859E52D54051A7B11FE217108670554711ECF8322BC8A8D8CF5E95 440 | A313B0A4C1D3F75E7D8F356773F04EF4EC611F0162DB80B74ACDA7DF575AB16A 441 | 58FED7C809ACB10979628DBCB2EEADACEBAA96884394B7402EC3CEAE0CB4D87A 442 | 14B1CBD8E2EBDE6FFDBDDDFD865043704344D0ACE3DE4000E7F4A97EEF4390E9 443 | 8868B8C5AE80052158AD874F970CA633DB0AD99E7CEAD5832B38264C7DAB2A65 444 | 0640B860BB86D932820F943BC89039FEAD281CBB8F00ED81DE69D4FBFF125781 445 | 9C209C9178C70CD7402F944B0F66A8EA5C012F1F96A1B11A14661F9CC8A71A9C 446 | 5B03BDFF142BB32F38B1608D0BED03BB5689A62E12867F84AD7711A84DF853DE 447 | E9FA271686BF1288CE66D49BA8393DE584DF11F808FE4A0985785547A765742C 448 | 7B64B77006AA812855BED5757C51854575E752B335DE47ECCAEF3E7625583217 449 | 3F0C32B9D8EFABAD1FD6940FDBE3E6DFE424111C670804A94972405067A289EF 450 | EBCA242122AF465E8FC0C911C816A2419F381B19FA60A62000401C60A25ECC33 451 | CF3CB128600084E1A1AA00861A8BD7B084BA0E8E1E9E94AF64EA97C93243AD5A 452 | 1609404675EC28843ABA3E41502AAD2AA3FDAAD86F17D3F57D7FF9B7721154D5 453 | 2FDABF6BDA9B9147A09E77318105C80C0E8FD4F571A50196164A8441ED09DF62 454 | D06E8008D49D4110A2B022E8F0B18265360CC855698E3DB310209265F830D91E 455 | 943822E645CD685CD0385F604C2E722E5FA1C3D2C9003D54646FA8C186CED9C6 456 | 11BCCE342BB4606E0F187810C073073B5179FE39D20E7C25F03348743208BA90 457 | 7A560B15AD872000CE892E4650968C1B31B2497DDF4004FC0658257A9561A166 458 | 060294CDD73DD6806382F66BA5F1F908A55ED251338C3E56D316F078CE736EB5 459 | AC1F83FF80CB039B4542B0D422860E0C74508A9598E8AB0C328613486425B8CC 460 | E134532D54BC21829920026ECA2E5AB5EB988C01E86C559A20C10AA28057531E 461 | 48B7583E61BD3A951BA86A11209F0641C43285A3E33FCBA536732CDFD8E8C58C 462 | 2D31A97E5C03FA0B3D2F0AD3E2731E619C7EDDBB41F742DB45B81B54BEADEEFB 463 | B7DF7E3BB1CAAD0520C2399CD3428991898556F5E93AAACB2BCE2E039170B550 464 | 75E834805071C4C2413386336421B30A092CA8765D0869B6703E8D3A724EC859 465 | E83E32F317BCBF617D701E250E3FCA138843D8A06F34885FA823A2534D54F85C 466 | 9D3B77BE54DFEC6622C1ACF4FD5875247104E9BD8287B3039F25D6FD3554CEF3 467 | A658E9C33720C41DEE5B52783A573510AC0044108946FF50BD37767113902B20 468 | 12AE166A420007D008D8F6B9234E920C339020EBBE068FE8562FAAA38B44CE6A 469 | D405BA1C5BCB4E10126D7635C2B7E0940CBD3CA6E7B054C7AB1E4527707AF526 470 | 0F7CF9B60ECA82E883F82B443C85EDBBF2CA2B4D2D409F3A2F630B38829E96D1 471 | 4EACA21EFE8FAF0059C0D68062095A812BD2C5F010A40C752A214E8A64A08853 472 | 75D9C9FE8E353EB31E11AADD010AA46BACF027F6DD77DABB8FD35645B89A2901 473 | FB8BC6EFAA888EBE10F6DD01A6D9D51E91EB001B09CCE5BCB2FFAEDFBFCCA82F 474 | 82B97B661B040801C506A653340645134226D730560C0F311004ED18348E9945 475 | 94AA367F4FF69E2704962F4A75EFA019A3239D862FC8972DE7B2F0100AEF394B 476 | 3A6AE8E372369CBB49CF2C7C2BD489E81DA296AEE18BBA99FDB1E8E5950251C6 477 | 7C2F6DC12BB98CC335B47A4278DE3FCBB6807A20B0072861ABD4A84F2D9B93C4 478 | 8241954C70834A3B96A514870DCF68336D702A626DB0C7ABA073CF3A9513AD1B 479 | 538AC05747E4BCB84516A6299F1DF5EC7EFF267B7FEC8CDE4A00029B2860AE9E 480 | 026CCE3ECFE0A2D8B6D6B1DEC50902B8F318AB8159860083070F4E0849DBD0D3 481 | 919FFBCFF3E91937A8420BE22D66165AB36A00F695E85AA1EAD7B67D6D28EC5C 482 | 10E33FA807216B7B847A79DDC7008548A4457E79951EFD12822F82F754F2BF16 483 | A25E90512F9409B08109A5C916F0A35A011030B96D40B097AE25B55723397DAB 484 | 60F5486068DFA8A3526015D86AABAD0ABE88011DD29D20CAEA688C30A3869B11 485 | 161501121ECDEF79F7922B1648AC0098C5B16AB5B762B10A1296CFC5FEF38A22 486 | 36030621D17037F9F4CC631C4A120BA81F3502B0D4C7D4B6984EE97294EBE0D1 487 | A34727D6BEB500923544DB9E1D62DA01A970C7589AE01CA7F6F6F420257DA4F7 488 | 31D8E4C8B8CFB2CACB5B23590EB3420984DEDF170AB9032231C50B42BE3AC016 489 | 00B7EFAC2050702D3BBBEF089B836B58B5305B20803AB4079E4191BD0E71E7CF 490 | 5C8732501C3F5FCF31709C0ACA5E1B3BB2369FBA769F602584BD4C3CD4BD135C 491 | 610E77B712671ABCEC1B7EB8FA86BFF3D650D511C5193A16C2A11C68C5CDE56C 492 | 3213FF0CF73711D93A541934B381659953B83CADD727B9D26897C420846AFFD4 493 | FE110D12552DC0AE4283F8E7EF057DCD018B0FC588AF7CBEC4D2170115FB30EC 494 | 18EAE1DA6CB35240BB8AF68850FA5DB25EB2F4112AE2823DF88F0E0110201197 495 | C03BF1EA3EECEEC2F7C28014598744550BC828A00BD07A261D31634C7B5881CF 496 | 80F09B76F40BEE1DB6053475D86831227031E37291F0B9F67DEC1B3963085B06 497 | 4E49E963DA017D73B52E077A7F170E83AE16661902C0A383004ED6AED97DAA7E 498 | FF21D2D847F369E4AB56B7941286AE56418B036801A8EE9030B46269ECF06286 499 | 9E65073F5277B48A5F5B4E82C85D584E3BFB0642C3A0F2030317C9B5E339E4E5 500 | 8983286165DF76F7EA913CCE32040082D3C791043E1A91B421F7E7C8F637ECDF 501 | C92A506B8301582E6215817CA4A423D2E5FE30AD3631CD1B838F1166AB95572C 502 | 5E0D22741458AD232E689779F712A3D26A7D331DCC5204204C0CA1696C5FF6B5 503 | B68125615EF3E99982BF750D267158442D8E910C3E0222FF1066BB05EDACC1BF 504 | 3AE4F76D991C5649F0C5E95AA93018DD49EF1E1F33D59A99A03A20E961E92F68 505 | 1D81AC83332B81598A00C42576C7ACD8BA3C644DB1C386A3B3C7447D9C4300A2 506 | 93E0965E8D438433750BA1B9B979F32E5DBAE0675062E266F96D6C1BC6F87610 507 | FA0D1BB183AE076B1521B0D69C662681555D13448AF386A778F79349809770AD 508 | 304B1100361023486F0F2EF1B075A0998731EA1F7CBD00BC75A57281F084538F 509 | 4DDB3697866C2D098A49C78BD81CA4D5E2BE98F2C9D22E8D425AFCF570ADDA2B 510 | 346EED0098A432089E7551CE460373F5CF6704CEAC0666290200BE8B18CB2BEA 511 | D8180B944F63040DD06C7BC3371347EA065198C515C06EC2F77B7110DDA306BB 512 | EC13672FC672417422D73DC5EFF0984594B72AE0E584A3CA409B3839B5A69581 513 | F6EA02E2FD3E3723BC6C0171B138A2DDD5C6040A619623C0FEFBEF1F6AEDF01F 514 | D82AF62E163C4282CD0992E4CF48A260637B174ADA187862ED6700037B526CCF 515 | 07848C1878ECA7E793FD5507172E0C6593CECB5073DBBA825468A290F1AE6435 516 | 7A5CE7CDAA10DC82CAE590A9616AE763BA7E9CB38EB7DE3B49220064BD839FD4 517 | BBEE1CEA04B45FC8C23D811056C6C8FFB302229F6DD2C3298A94302C83844565 518 | 4580AEC05A29385DC37D0F9179819EED92552754D14A08830AA17000061F7E1B 519 | 630DE809CE41F04F4DAF8431505E6C35F35A9B42900F47D1AF751D9BB3873A79 520 | EF16E5CDDF8896D9F33B62F0937C3B24973A80D98F09942710421043A4D2A853 521 | AA95821151F4ECC8B3224F5BBFF36C5BF11EFA8BFE5E2AABED9885EB82DCE103 522 | 97278008D785A3F3C1058E40878F4CBFA4836BE016B38C5D40707C00EBD9F34B 523 | EAD76139D501810D5C121DC4DAE86582060A4100265E63DB79AF4979A1363DC9 524 | 2A70CA592813998C63700B32079B47A2E7E7008C728068196420416CFAA2E610 525 | 8255A9E4B7D37D8070087AF023AC45D2D71ECC1608C016004BE8750276826FE6 526 | 22AED8DE3BF414EB200693204BD1C1BBDA43FB8A5618804A5908802958592F26 527 | 3BF868D79EB57F179ED5226841CEE010C0059CF0210B011C20D777D64D331366 528 | 0B040038AF804E7214B6B07F730DDC902C222D00F8E451268D0900F1C55ABC54 529 | A5D2BA7C7A6A19C69EAFDBBFDDFD64E60D1B366C5677CF4C83D906015CE0480F 530 | 1A348BCF6B6A6A3ABAD63C2B817C121D34BFB770E525EF5E41E44CD0AB6A6320 531 | FE9860B64100670E1D5811A320C16278ED3AB32F817CEAED8B3B175647E38267 532 | 898D1D51C63A92E09A1D61B6410000F60DB6D067DFF2A937325BC16AF5979082 533 | 55AA9C6F5257F749C1B384D8C2CDEABF7DF081D90A01008C4460AD02234E5CC9 534 | 08A0B86ABD5A380D30AE5458FD3CE6DD2B3CC7E81476EFA730F8C06C8700D8EE 535 | 1143D051CD9E989588186729ED574BBE56A1848D217280F1DEFDC23B50FB2857 536 | 7E2A830FCC7608002050216C5DC83A01F9F4302542D912D1B473B97CF2E90927 537 | EF2B11021E0F9BEF83E7053B3DA87D7704CD4F09664B0400320EB176D0D97AE4 538 | A033C0906429EB5CCADE8E9D1C834E5C203C7C5EF767BC0337F87816215AAD55 539 | 9FFE6387D916010077B6500612D4046EE0D1A6B1E4D71255E3BF09666B0400F0 540 | 2DC46E00CD5EBD56580C3CFBFBF0E1C393C3AE668668F5C706B33D0238404E80 541 | C8D8791FC78237C7C0097408CB8632A55E93F2FF36F8D120800F6C0DBE63477B 542 | 50898BD64F15FE1FCA2736D097022A250000000049454E44AE426082} 543 | Stretch = True 544 | Visible = False 545 | end 546 | object Label3: TLabel 547 | Left = 365 548 | Top = 52 549 | Width = 24 550 | Height = 15 551 | Caption = 'Text:' 552 | end 553 | object btnAddText: TButton 554 | Left = 167 555 | Top = 19 556 | Width = 83 557 | Height = 25 558 | Caption = 'Add Text' 559 | TabOrder = 1 560 | OnClick = btnAddTextClick 561 | end 562 | object btnAddGraphic: TButton 563 | Left = 256 564 | Top = 19 565 | Width = 83 566 | Height = 25 567 | Caption = 'Add Images' 568 | TabOrder = 2 569 | OnClick = btnAddGraphicClick 570 | end 571 | object btnSave: TButton 572 | Left = 616 573 | Top = 49 574 | Width = 65 575 | Height = 25 576 | Caption = 'Save' 577 | TabOrder = 15 578 | OnClick = btnSaveClick 579 | end 580 | object btnClear: TButton 581 | Left = 545 582 | Top = 49 583 | Width = 65 584 | Height = 25 585 | Caption = 'Clear' 586 | TabOrder = 14 587 | OnClick = btnClearClick 588 | end 589 | object btnAddRectangle: TButton 590 | Left = 167 591 | Top = 50 592 | Width = 83 593 | Height = 25 594 | Caption = 'Add Rectangle' 595 | TabOrder = 3 596 | OnClick = btnAddRectangleClick 597 | end 598 | object btnAddEllipse: TButton 599 | Left = 167 600 | Top = 81 601 | Width = 83 602 | Height = 25 603 | Caption = 'Add Ellipse' 604 | TabOrder = 5 605 | OnClick = btnAddEllipseClick 606 | end 607 | object btnFont: TButton 608 | Left = 687 609 | Top = 18 610 | Width = 65 611 | Height = 25 612 | Caption = 'Font' 613 | TabOrder = 13 614 | OnClick = btnFontClick 615 | end 616 | object btnBorderColor: TButton 617 | Left = 616 618 | Top = 18 619 | Width = 65 620 | Height = 25 621 | Caption = 'Border' 622 | TabOrder = 12 623 | OnClick = btnBorderColorClick 624 | end 625 | object btnFillColor: TButton 626 | Left = 545 627 | Top = 18 628 | Width = 65 629 | Height = 25 630 | Caption = 'Fill' 631 | TabOrder = 11 632 | OnClick = btnFillColorClick 633 | end 634 | object chkNoFill: TCheckBox 635 | Left = 481 636 | Top = 22 637 | Width = 58 638 | Height = 17 639 | Caption = 'No Fill' 640 | TabOrder = 8 641 | OnClick = chkNoFillClick 642 | end 643 | object btnLoad: TButton 644 | Left = 687 645 | Top = 49 646 | Width = 65 647 | Height = 25 648 | Caption = 'Load' 649 | TabOrder = 16 650 | OnClick = btnLoadClick 651 | end 652 | object txtTextItem: TEdit 653 | Left = 395 654 | Top = 49 655 | Width = 144 656 | Height = 23 657 | TabOrder = 9 658 | OnChange = txtTextItemChange 659 | end 660 | object chkNoBorder: TCheckBox 661 | Left = 395 662 | Top = 22 663 | Width = 80 664 | Height = 17 665 | Caption = 'No Border' 666 | TabOrder = 7 667 | OnClick = chkNoBorderClick 668 | end 669 | object Button3: TButton 670 | Left = 256 671 | Top = 50 672 | Width = 83 673 | Height = 25 674 | Caption = 'Round Rect' 675 | TabOrder = 4 676 | OnClick = Button3Click 677 | end 678 | object Button5: TButton 679 | Left = 256 680 | Top = 81 681 | Width = 83 682 | Height = 25 683 | Action = actSelectAll 684 | TabOrder = 6 685 | end 686 | object RadioGroup1: TRadioGroup 687 | Left = 8 688 | Top = 4 689 | Width = 137 690 | Height = 102 691 | Caption = 'Mode' 692 | ItemIndex = 0 693 | Items.Strings = ( 694 | 'Select' 695 | 'Draw Rectangle' 696 | 'Draw Ellipse' 697 | 'Draw Text') 698 | TabOrder = 0 699 | OnClick = RadioGroup1Click 700 | end 701 | object btnTestFocus: TButton 702 | Left = 687 703 | Top = 80 704 | Width = 65 705 | Height = 25 706 | Caption = 'Test Focus' 707 | TabOrder = 17 708 | OnClick = btnTestFocusClick 709 | end 710 | object chkAllowTextEdit: TCheckBox 711 | Left = 395 712 | Top = 80 713 | Width = 144 714 | Height = 17 715 | Caption = 'Allow Direct Text Editing' 716 | Checked = True 717 | State = cbChecked 718 | TabOrder = 10 719 | OnClick = chkAllowTextEditClick 720 | end 721 | end 722 | object StatusBar1: TStatusBar 723 | Left = 0 724 | Top = 897 725 | Width = 1065 726 | Height = 19 727 | Panels = <> 728 | SimplePanel = True 729 | end 730 | object Panel2: TPanel 731 | Left = 0 732 | Top = 856 733 | Width = 1065 734 | Height = 41 735 | Align = alBottom 736 | BevelOuter = bvNone 737 | PopupMenu = alignPopup 738 | TabOrder = 2 739 | object Label1: TLabel 740 | Left = 564 741 | Top = 14 742 | Width = 61 743 | Height = 15 744 | Caption = 'Page Width' 745 | end 746 | object Label2: TLabel 747 | Left = 716 748 | Top = 14 749 | Width = 36 750 | Height = 15 751 | Caption = 'Height' 752 | end 753 | object Label4: TLabel 754 | Left = 835 755 | Top = 13 756 | Width = 40 757 | Height = 15 758 | Caption = 'Scale %' 759 | end 760 | object Button1: TButton 761 | Left = 8 762 | Top = 10 763 | Width = 75 764 | Height = 25 765 | Action = actUndo 766 | TabOrder = 0 767 | end 768 | object Button2: TButton 769 | Left = 89 770 | Top = 10 771 | Width = 75 772 | Height = 25 773 | Action = actRedo 774 | TabOrder = 1 775 | end 776 | object CheckBox3: TCheckBox 777 | Left = 185 778 | Top = 13 779 | Width = 97 780 | Height = 17 781 | Caption = 'Rulers' 782 | Checked = True 783 | State = cbChecked 784 | TabOrder = 2 785 | OnClick = CheckBox3Click 786 | end 787 | object spinWidth: TSpinEdit 788 | Left = 634 789 | Top = 11 790 | Width = 66 791 | Height = 24 792 | Increment = 10 793 | MaxValue = 0 794 | MinValue = 0 795 | TabOrder = 7 796 | Value = 100 797 | OnChange = spinWidthChange 798 | end 799 | object spinHeight: TSpinEdit 800 | Left = 758 801 | Top = 11 802 | Width = 63 803 | Height = 24 804 | Increment = 10 805 | MaxValue = 0 806 | MinValue = 0 807 | TabOrder = 8 808 | Value = 100 809 | OnChange = spinHeightChange 810 | end 811 | object chkGridVisible: TCheckBox 812 | Left = 265 813 | Top = 13 814 | Width = 42 815 | Height = 17 816 | Caption = 'Grid' 817 | TabOrder = 3 818 | OnClick = chkGridVisibleClick 819 | end 820 | object SpinEdit1: TSpinEdit 821 | Left = 313 822 | Top = 10 823 | Width = 39 824 | Height = 24 825 | MaxValue = 0 826 | MinValue = 0 827 | TabOrder = 4 828 | Value = 5 829 | OnChange = SpinEdit1Change 830 | end 831 | object chkSnapTogrid: TCheckBox 832 | Left = 358 833 | Top = 13 834 | Width = 89 835 | Height = 17 836 | Caption = 'Snap to Grid' 837 | TabOrder = 5 838 | OnClick = chkSnapTogridClick 839 | end 840 | object Button4: TButton 841 | Left = 453 842 | Top = 10 843 | Width = 75 844 | Height = 25 845 | Caption = 'Align' 846 | Style = bsSplitButton 847 | TabOrder = 6 848 | OnClick = Button4Click 849 | OnDropDownClick = Button4DropDownClick 850 | end 851 | object spinScale: TSpinEdit 852 | Left = 884 853 | Top = 11 854 | Width = 53 855 | Height = 24 856 | Increment = 10 857 | MaxValue = 0 858 | MinValue = 0 859 | TabOrder = 9 860 | Value = 100 861 | OnChange = spinScaleChange 862 | end 863 | end 864 | object PopupMenu1: TPopupMenu 865 | OnPopup = PopupMenu1Popup 866 | Left = 608 867 | Top = 464 868 | object Al1: TMenuItem 869 | Caption = 'Align...' 870 | object AlignLeft2: TMenuItem 871 | Action = actAlignleft 872 | end 873 | object AlignTop2: TMenuItem 874 | Action = actAlignTop 875 | end 876 | object AlignRight2: TMenuItem 877 | Action = actAlignRight 878 | end 879 | object AlignBottom2: TMenuItem 880 | Action = actAlignBottom 881 | end 882 | object N5: TMenuItem 883 | Caption = '-' 884 | end 885 | object Aligntogrid2: TMenuItem 886 | Action = actAlignToGrid 887 | end 888 | object N6: TMenuItem 889 | Caption = '-' 890 | end 891 | object AlignHorzCenters2: TMenuItem 892 | Action = actAlignHorzCenter 893 | end 894 | object AlignVertCenters2: TMenuItem 895 | Action = actAlignVertCenter 896 | end 897 | end 898 | object N3: TMenuItem 899 | Caption = '-' 900 | end 901 | object BringToFront1: TMenuItem 902 | Action = actBringToFront 903 | end 904 | object BringForwards1: TMenuItem 905 | Action = actBringForwards 906 | end 907 | object SendBackwards1: TMenuItem 908 | Action = actSendBackwards 909 | end 910 | object SendToBack1: TMenuItem 911 | Action = actSendToBack 912 | end 913 | object N1: TMenuItem 914 | Caption = '-' 915 | end 916 | object Delete1: TMenuItem 917 | Action = actDelete 918 | end 919 | end 920 | object ActionList1: TActionList 921 | Left = 504 922 | Top = 464 923 | object actAlignleft: TAction 924 | Category = 'Alignment' 925 | Caption = 'Align Left' 926 | OnExecute = actAlignleftExecute 927 | end 928 | object actAlignTop: TAction 929 | Tag = 1 930 | Category = 'Alignment' 931 | Caption = 'Align Top' 932 | OnExecute = actAlignleftExecute 933 | end 934 | object actAlignRight: TAction 935 | Tag = 2 936 | Category = 'Alignment' 937 | Caption = 'Align Right' 938 | OnExecute = actAlignleftExecute 939 | end 940 | object actBringToFront: TAction 941 | Caption = 'Bring To Front' 942 | OnExecute = actBringToFrontExecute 943 | end 944 | object actSendToBack: TAction 945 | Caption = 'Send To Back' 946 | OnExecute = actSendToBackExecute 947 | end 948 | object actDelete: TAction 949 | Caption = 'Delete' 950 | ShortCut = 16430 951 | OnExecute = actDeleteExecute 952 | end 953 | object actUndo: TAction 954 | Caption = 'Undo' 955 | OnExecute = actUndoExecute 956 | end 957 | object actRedo: TAction 958 | Caption = 'Redo' 959 | OnExecute = actRedoExecute 960 | end 961 | object actBringForwards: TAction 962 | Caption = 'Bring Forwards' 963 | OnExecute = actBringForwardsExecute 964 | end 965 | object actSendBackwards: TAction 966 | Caption = 'Send Backwards' 967 | OnExecute = actSendBackwardsExecute 968 | end 969 | object actAlignBottom: TAction 970 | Tag = 3 971 | Category = 'Alignment' 972 | Caption = 'Align Bottom' 973 | OnExecute = actAlignleftExecute 974 | end 975 | object actAlignToGrid: TAction 976 | Tag = 4 977 | Category = 'Alignment' 978 | Caption = 'Align Objects to Grid' 979 | OnExecute = actAlignleftExecute 980 | end 981 | object actSelectAll: TAction 982 | Caption = 'Select All' 983 | ShortCut = 16449 984 | OnExecute = actSelectAllExecute 985 | end 986 | object actAlignHorzCenter: TAction 987 | Tag = 5 988 | Category = 'Alignment' 989 | Caption = 'Align Horz Centers' 990 | OnExecute = actAlignHorzCenterExecute 991 | end 992 | object actAlignVertCenter: TAction 993 | Tag = 6 994 | Category = 'Alignment' 995 | Caption = 'Align Vert Centers' 996 | OnExecute = actAlignVertCenterExecute 997 | end 998 | end 999 | object FontDialog1: TFontDialog 1000 | Font.Charset = DEFAULT_CHARSET 1001 | Font.Color = clWindowText 1002 | Font.Height = -16 1003 | Font.Name = 'Tahoma' 1004 | Font.Style = [] 1005 | Left = 504 1006 | Top = 352 1007 | end 1008 | object dlgBorderColor: TColorDialog 1009 | Options = [cdAnyColor] 1010 | Left = 584 1011 | Top = 352 1012 | end 1013 | object dlgFillColor: TColorDialog 1014 | Options = [cdAnyColor] 1015 | Left = 664 1016 | Top = 352 1017 | end 1018 | object alignPopup: TPopupMenu 1019 | Left = 392 1020 | Top = 504 1021 | object AlignLeft1: TMenuItem 1022 | Action = actAlignleft 1023 | end 1024 | object AlignRight1: TMenuItem 1025 | Action = actAlignRight 1026 | end 1027 | object AlignTop1: TMenuItem 1028 | Action = actAlignTop 1029 | end 1030 | object AlignBottom1: TMenuItem 1031 | Action = actAlignBottom 1032 | end 1033 | object N2: TMenuItem 1034 | Caption = '-' 1035 | end 1036 | object Aligntogrid1: TMenuItem 1037 | Action = actAlignToGrid 1038 | end 1039 | object N4: TMenuItem 1040 | Caption = '-' 1041 | end 1042 | object AlignHorzCenters1: TMenuItem 1043 | Action = actAlignHorzCenter 1044 | end 1045 | object AlignVertCenters1: TMenuItem 1046 | Action = actAlignVertCenter 1047 | end 1048 | end 1049 | end 1050 | -------------------------------------------------------------------------------- /Demo/untMain.pas: -------------------------------------------------------------------------------- 1 | { ****************************************************************************** 2 | * * 3 | * DesignBox - Basic canvas/drawing component for Delphi * 4 | * * 5 | * https://github.com/gmurt/DesignBox * 6 | * * 7 | * Copyright 2021 Graham Murt * 8 | * * 9 | * email: graham@kernow-software.co.uk * 10 | * * 11 | * Licensed under the Apache License, Version 2.0 (the "License"); * 12 | * you may not use this file except in compliance with the License. * 13 | * You may obtain a copy of the License at * 14 | * * 15 | * http://www.apache.org/licenses/LICENSE-2.0 * 16 | * * 17 | * Unless required by applicable law or agreed to in writing, software * 18 | * distributed under the License is distributed on an "AS IS" BASIS, * 19 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * 20 | * See the License for the specific language governing permissions and * 21 | * limitations under the License. * 22 | * * 23 | *******************************************************************************} 24 | 25 | unit untMain; 26 | 27 | interface 28 | 29 | uses 30 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, 31 | Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, System.Generics.Collections, 32 | System.Types, DesignBox, Vcl.Imaging.pngimage, System.Actions, Vcl.ActnList, Vcl.Menus, Vcl.ComCtrls, Vcl.Samples.Spin; 33 | 34 | type 35 | TfrmMain = class(TForm) 36 | Panel1: TPanel; 37 | btnAddText: TButton; 38 | Bevel1: TBevel; 39 | Bevel2: TBevel; 40 | Bevel3: TBevel; 41 | Bevel4: TBevel; 42 | Image1: TImage; 43 | btnAddGraphic: TButton; 44 | btnSave: TButton; 45 | btnLoad: TButton; 46 | btnClear: TButton; 47 | PopupMenu1: TPopupMenu; 48 | ActionList1: TActionList; 49 | actBringToFront: TAction; 50 | actSendToBack: TAction; 51 | BringToFront1: TMenuItem; 52 | SendToBack1: TMenuItem; 53 | N1: TMenuItem; 54 | actDelete: TAction; 55 | Delete1: TMenuItem; 56 | btnAddRectangle: TButton; 57 | btnAddEllipse: TButton; 58 | StatusBar1: TStatusBar; 59 | btnFont: TButton; 60 | btnBorderColor: TButton; 61 | btnFillColor: TButton; 62 | FontDialog1: TFontDialog; 63 | dlgBorderColor: TColorDialog; 64 | dlgFillColor: TColorDialog; 65 | chkNoFill: TCheckBox; 66 | txtTextItem: TEdit; 67 | chkNoBorder: TCheckBox; 68 | Panel2: TPanel; 69 | Button1: TButton; 70 | Button2: TButton; 71 | actUndo: TAction; 72 | actRedo: TAction; 73 | CheckBox3: TCheckBox; 74 | spinWidth: TSpinEdit; 75 | spinHeight: TSpinEdit; 76 | Label1: TLabel; 77 | Label2: TLabel; 78 | Button3: TButton; 79 | actBringForwards: TAction; 80 | actSendBackwards: TAction; 81 | SendBackwards1: TMenuItem; 82 | BringForwards1: TMenuItem; 83 | chkGridVisible: TCheckBox; 84 | SpinEdit1: TSpinEdit; 85 | DesignBox1: TDesignBox; 86 | chkSnapTogrid: TCheckBox; 87 | Label3: TLabel; 88 | Button4: TButton; 89 | alignPopup: TPopupMenu; 90 | actAlignleft: TAction; 91 | actAlignRight: TAction; 92 | actAlignTop: TAction; 93 | actAlignBottom: TAction; 94 | AlignLeft1: TMenuItem; 95 | AlignRight1: TMenuItem; 96 | AlignTop1: TMenuItem; 97 | AlignBottom1: TMenuItem; 98 | actAlignToGrid: TAction; 99 | Aligntogrid1: TMenuItem; 100 | N2: TMenuItem; 101 | Button5: TButton; 102 | RadioGroup1: TRadioGroup; 103 | Al1: TMenuItem; 104 | N3: TMenuItem; 105 | AlignLeft2: TMenuItem; 106 | AlignTop2: TMenuItem; 107 | AlignRight2: TMenuItem; 108 | AlignBottom2: TMenuItem; 109 | Aligntogrid2: TMenuItem; 110 | actAlignHorzCenter: TAction; 111 | actAlignVertCenter: TAction; 112 | N4: TMenuItem; 113 | AlignHorzCenters1: TMenuItem; 114 | AlignVertCenters1: TMenuItem; 115 | N5: TMenuItem; 116 | N6: TMenuItem; 117 | AlignHorzCenters2: TMenuItem; 118 | AlignVertCenters2: TMenuItem; 119 | btnTestFocus: TButton; 120 | spinScale: TSpinEdit; 121 | Label4: TLabel; 122 | chkAllowTextEdit: TCheckBox; 123 | procedure btnAddTextClick(Sender: TObject); 124 | procedure btnAddGraphicClick(Sender: TObject); 125 | procedure DesignBox1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); 126 | procedure DesignBox1SelectItem(Sender: TObject; AItem: TDesignBoxBaseItem); 127 | procedure DesignBox1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); 128 | procedure btnSaveClick(Sender: TObject); 129 | procedure btnLoadClick(Sender: TObject); 130 | procedure btnClearClick(Sender: TObject); 131 | procedure actBringToFrontExecute(Sender: TObject); 132 | procedure actSendToBackExecute(Sender: TObject); 133 | procedure PopupMenu1Popup(Sender: TObject); 134 | procedure actDeleteExecute(Sender: TObject); 135 | procedure btnAddRectangleClick(Sender: TObject); 136 | procedure btnAddEllipseClick(Sender: TObject); 137 | procedure btnFontClick(Sender: TObject); 138 | procedure btnBorderColorClick(Sender: TObject); 139 | procedure btnFillColorClick(Sender: TObject); 140 | procedure FormCreate(Sender: TObject); 141 | procedure chkNoFillClick(Sender: TObject); 142 | procedure chkNoBorderClick(Sender: TObject); 143 | procedure txtTextItemChange(Sender: TObject); 144 | procedure actUndoExecute(Sender: TObject); 145 | procedure actRedoExecute(Sender: TObject); 146 | procedure DesignBox1Change(Sender: TObject); 147 | procedure CheckBox3Click(Sender: TObject); 148 | procedure spinWidthChange(Sender: TObject); 149 | procedure spinHeightChange(Sender: TObject); 150 | procedure Button3Click(Sender: TObject); 151 | procedure actBringForwardsExecute(Sender: TObject); 152 | procedure actSendBackwardsExecute(Sender: TObject); 153 | procedure SpinEdit1Change(Sender: TObject); 154 | procedure chkGridVisibleClick(Sender: TObject); 155 | procedure chkSnapTogridClick(Sender: TObject); 156 | procedure Button4Click(Sender: TObject); 157 | procedure actAlignleftExecute(Sender: TObject); 158 | procedure Button4DropDownClick(Sender: TObject); 159 | procedure actAlignToGridExecute(Sender: TObject); 160 | procedure actSelectAllExecute(Sender: TObject); 161 | procedure RadioGroup1Click(Sender: TObject); 162 | procedure actAlignHorzCenterExecute(Sender: TObject); 163 | procedure actAlignVertCenterExecute(Sender: TObject); 164 | procedure btnTestFocusClick(Sender: TObject); 165 | procedure spinScaleChange(Sender: TObject); 166 | procedure chkAllowTextEditClick(Sender: TObject); 167 | procedure DesignBox1AfterDrawItem(Sender: TObject; aNewItem: TDesignBoxBaseItem; aIndex: Integer); 168 | procedure DesignBox1AfterEditItem(Sender: TObject; aItem: TDesignBoxBaseItem); 169 | private 170 | fUpdatingControls: Boolean; 171 | function AppDir: string; 172 | procedure UpdateItemCoords; 173 | procedure UpdateActionStates; 174 | procedure UpdateModeRadioGroup; 175 | { Private declarations } 176 | protected 177 | procedure DoShow; override; 178 | public 179 | 180 | { Public declarations } 181 | end; 182 | 183 | var 184 | frmMain: TfrmMain; 185 | 186 | implementation 187 | 188 | {$R *.dfm} 189 | 190 | procedure TfrmMain.actAlignHorzCenterExecute(Sender: TObject); 191 | begin 192 | DesignBox1.AlignItems(ialHorzCenters); 193 | end; 194 | 195 | procedure TfrmMain.actAlignleftExecute(Sender: TObject); 196 | begin 197 | DesignBox1.AlignItems(TItemAlignment(TAction(Sender).tag)); 198 | end; 199 | 200 | procedure TfrmMain.actAlignToGridExecute(Sender: TObject); 201 | begin 202 | DesignBox1.AlignItems(TItemAlignment(TAction(Sender).tag)); 203 | end; 204 | 205 | procedure TfrmMain.actAlignVertCenterExecute(Sender: TObject); 206 | begin 207 | DesignBox1.AlignItems(ialVertCenters); 208 | end; 209 | 210 | procedure TfrmMain.actBringForwardsExecute(Sender: TObject); 211 | begin 212 | DesignBox1.BringForwards; 213 | end; 214 | 215 | procedure TfrmMain.actBringToFrontExecute(Sender: TObject); 216 | begin 217 | DesignBox1.BringToFront; 218 | end; 219 | 220 | procedure TfrmMain.actDeleteExecute(Sender: TObject); 221 | begin 222 | DesignBox1.Items.DeleteSelected; 223 | end; 224 | 225 | procedure TfrmMain.actRedoExecute(Sender: TObject); 226 | begin 227 | DesignBox1.Redo; 228 | end; 229 | 230 | procedure TfrmMain.actSelectAllExecute(Sender: TObject); 231 | begin 232 | DesignBox1.items.SelectAll 233 | end; 234 | 235 | procedure TfrmMain.actSendBackwardsExecute(Sender: TObject); 236 | begin 237 | DesignBox1.SendBackwards; 238 | end; 239 | 240 | procedure TfrmMain.actSendToBackExecute(Sender: TObject); 241 | begin 242 | DesignBox1.SendToBack; 243 | end; 244 | 245 | procedure TfrmMain.actUndoExecute(Sender: TObject); 246 | begin 247 | DesignBox1.Undo; 248 | end; 249 | 250 | function TfrmMain.AppDir: string; 251 | begin 252 | Result := IncludeTrailingPathDelimiter(ExtractFilePath(ParamStr(0))); 253 | end; 254 | 255 | procedure TfrmMain.btnBorderColorClick(Sender: TObject); 256 | begin 257 | if dlgBorderColor.Execute then DesignBox1.Canvas.Pen.Color := dlgBorderColor.Color; 258 | end; 259 | 260 | procedure TfrmMain.btnFillColorClick(Sender: TObject); 261 | begin 262 | if (dlgFillColor.Execute) then DesignBox1.Canvas.Brush.Color := dlgFillColor.Color; 263 | end; 264 | 265 | procedure TfrmMain.btnFontClick(Sender: TObject); 266 | begin 267 | if FontDialog1.execute then 268 | DesignBox1.Canvas.Font.Assign(FontDialog1.Font); 269 | end; 270 | 271 | procedure TfrmMain.btnAddTextClick(Sender: TObject); 272 | var 273 | item: TDesignBoxItemText; 274 | begin 275 | item := DesignBox1.Canvas.TextOut(20, 20, txtTextItem.text); 276 | DesignBox1.items.DeselectAll; 277 | item.selected := True; 278 | end; 279 | 280 | procedure TfrmMain.btnAddGraphicClick(Sender: TObject); 281 | var 282 | item1: TDesignBoxItemGraphic; 283 | item2: TDesignBoxItemGraphic; 284 | item3: TDesignBoxItemGraphic; 285 | begin 286 | DesignBox1.BeginUpdate; 287 | try 288 | item1 := DesignBox1.Canvas.StretchDraw(RectF(20, 20, 40, 40), Image1.Picture.Graphic); 289 | item2 := DesignBox1.Canvas.Draw(50, 20, Image1.Picture.Graphic); 290 | item3 := DesignBox1.Canvas.StretchDraw(RectF(80, 20, 100, 40), Image1.Picture.Graphic); 291 | DesignBox1.Items.SelectItems([item1, item2, item3], True); 292 | finally 293 | DesignBox1.Endupdate; 294 | end; 295 | end; 296 | 297 | procedure TfrmMain.btnSaveClick(Sender: TObject); 298 | begin 299 | DesignBox1.SaveToFile(AppDir+'data.json'); 300 | end; 301 | 302 | procedure TfrmMain.Button3Click(Sender: TObject); 303 | var 304 | item: TDesignBoxItemRectangle; 305 | begin 306 | item := DesignBox1.Canvas.Rectangle(RectF(20, 20, 40, 40), 5); 307 | DesignBox1.items.DeselectAll; 308 | item.selected := True; 309 | end; 310 | 311 | procedure TfrmMain.Button4Click(Sender: TObject); 312 | begin 313 | DesignBox1.AlignItems(TItemAlignment.ialLeftSides); 314 | end; 315 | 316 | procedure TfrmMain.Button4DropDownClick(Sender: TObject); 317 | begin 318 | Button4.DropDownMenu := alignPopup; 319 | end; 320 | 321 | procedure TfrmMain.btnTestFocusClick(Sender: TObject); 322 | begin 323 | DesignBox1.SetFocus; 324 | end; 325 | 326 | procedure TfrmMain.chkNoFillClick(Sender: TObject); 327 | begin 328 | case TCheckBox(Sender).Checked of 329 | True: DesignBox1.Canvas.Brush.Style := bsClear; 330 | False: DesignBox1.Canvas.Brush.Style := bsSolid; 331 | end; 332 | end; 333 | 334 | procedure TfrmMain.chkNoBorderClick(Sender: TObject); 335 | const 336 | C_STYLES: array[boolean] of TPenStyle = (psSolid, psClear); 337 | begin 338 | DesignBox1.Canvas.Pen.Style := C_STYLES[TCheckBox(Sender).checked]; 339 | end; 340 | 341 | procedure TfrmMain.CheckBox3Click(Sender: TObject); 342 | begin 343 | DesignBox1.RulerOptions.Visible := CheckBox3.Checked; 344 | end; 345 | 346 | procedure TfrmMain.chkAllowTextEditClick(Sender: TObject); 347 | begin 348 | DesignBox1.AllowTextEdit := TCheckBox(Sender).Checked; 349 | end; 350 | 351 | procedure TfrmMain.chkGridVisibleClick(Sender: TObject); 352 | begin 353 | DesignBox1.GridOptions.Visible := TCheckBox(Sender).Checked; 354 | end; 355 | 356 | procedure TfrmMain.chkSnapTogridClick(Sender: TObject); 357 | begin 358 | DesignBox1.GridOptions.SnapToGrid := TCheckBox(Sender).Checked; 359 | end; 360 | 361 | procedure TfrmMain.btnLoadClick(Sender: TObject); 362 | begin 363 | DesignBox1.LoadFromFile(AppDir+'data.json'); 364 | end; 365 | 366 | procedure TfrmMain.btnClearClick(Sender: TObject); 367 | begin 368 | DesignBox1.Clear; 369 | end; 370 | 371 | procedure TfrmMain.btnAddRectangleClick(Sender: TObject); 372 | var 373 | item: TDesignBoxItemRectangle; 374 | begin 375 | item := DesignBox1.Canvas.Rectangle(RectF(20, 20, 40, 40)); 376 | item.SelectionStyle.PenWidth := 1; 377 | DesignBox1.items.DeselectAll; 378 | item.selected := True; 379 | end; 380 | 381 | procedure TfrmMain.btnAddEllipseClick(Sender: TObject); 382 | var 383 | item: TDesignBoxItemEllipse; 384 | begin 385 | item := DesignBox1.Canvas.Ellipse(RectF(20, 20, 40, 40)); 386 | DesignBox1.items.DeselectAll; 387 | item.selected := True; 388 | end; 389 | 390 | procedure TfrmMain.DesignBox1AfterDrawItem(Sender: TObject; aNewItem: TDesignBoxBaseItem; aIndex: Integer); 391 | begin 392 | // what was drawn and whats' it's list index? 393 | end; 394 | 395 | procedure TfrmMain.DesignBox1AfterEditItem(Sender: TObject; aItem: TDesignBoxBaseItem); 396 | begin 397 | if aItem.Selected and (aitem is TDesignBoxItemText) then 398 | begin 399 | fUpdatingControls := TRUE; 400 | try 401 | // this edit is used to set item properties - so need this to prevent infinite looping 402 | txtTextItem.text := TDesignBoxItemText(aItem).Text; 403 | finally 404 | fUpdatingControls := FALSE; 405 | end; 406 | end; 407 | end; 408 | 409 | procedure TfrmMain.DesignBox1Change(Sender: TObject); 410 | begin 411 | UpdateActionStates; 412 | end; 413 | 414 | procedure TfrmMain.DesignBox1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); 415 | begin 416 | UpdateItemCoords; 417 | UpdateModeRadioGroup; 418 | end; 419 | 420 | procedure TfrmMain.DesignBox1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); 421 | begin 422 | UpdateItemCoords; 423 | end; 424 | 425 | procedure TfrmMain.DesignBox1SelectItem(Sender: TObject; AItem: TDesignBoxBaseItem); 426 | begin 427 | if not assigned(AItem) then EXIT; 428 | if AItem is TDesignBoxItemText then 429 | txtTextItem.Text := TDesignBoxItemText(AItem).Text 430 | else 431 | txtTextItem.text := ''; 432 | if Aitem is TDesignBoxItemOutlineShape then 433 | chkNoBorder.checked := TDesignBoxItemOutlineShape(AItem).Pen.style = psClear; 434 | if AItem is TDesignBoxItemFilledShape then 435 | chkNoFill.checked := TDesignBoxItemFilledShape(aItem).Brush.Style = bsClear; 436 | if AItem is TDesignBoxItemText then 437 | begin 438 | chkNoBorder.checked := TDesignBoxItemText(AItem).Pen.style = psClear; 439 | chkNoFill.checked := TDesignBoxItemText(AItem).Brush.Style = bsClear; 440 | end; 441 | 442 | RadioGroup1.ItemIndex := 0; // when selecting something will revert to select mode 443 | StatusBar1.SimpleText := Format('TopLeft=(%f, %f) | Size=(%f, %f) | Tag=%d', [AItem.LeftMM, AItem.TopMM, AItem.WidthMM, AItem.HeightMM, AItem.Tag]); 444 | end; 445 | 446 | procedure TfrmMain.DoShow; 447 | {vr 448 | textItem: TDesignBoxItemText; 449 | textSize : TSizeF; } 450 | {onst 451 | C_DESIGNBOX = 'DesignBox'; } 452 | begin 453 | inherited; 454 | { UpdateActionStates; 455 | DesignBox1.BeginUpdate; 456 | try 457 | textSize := DesignBox1.Canvas.MeasureText(C_DESIGNBOX); 458 | textItem := DesignBox1.Canvas.TextOut(DesignBox1.PageWidthMM - textSize.Width - 1, DesignBox1.PageHeightMM - textSize.Height - 1, C_DESIGNBOX); 459 | textItem.Font.Color := clGrayText; 460 | textItem.Pen.Style := psClear; 461 | textItem.Brush.Style := bsClear; 462 | textItem.options := []; // can't select, move, size or delete 463 | finally 464 | DesignBox1.EndUpdate; 465 | end; } 466 | end; 467 | 468 | procedure TfrmMain.FormCreate(Sender: TObject); 469 | begin 470 | fUpdatingControls := TRUE; 471 | try 472 | self.Caption := application.title; 473 | dlgBorderColor.Color := clWebNavy; 474 | dlgFillColor.Color := clWebLightSkyBlue; 475 | txtTextItem.text := 'Some Text'; 476 | chkGridVisible.Checked := DesignBox1.GridOptions.Visible; 477 | chkSnapTogrid.Checked := DesignBox1.GridOptions.SnapToGrid; 478 | chkAllowTextEdit.Checked := DesignBox1.AllowTextEdit; 479 | spinWidth.value := Designbox1.PageWidthMM; 480 | spinHeight.Value := DesignBox1.PageHeightMM; 481 | spinHeight.MinValue := 10; 482 | spinHeight.MaxValue := 1000; 483 | spinWidth.MinValue := 10; 484 | spinWidth.MaxValue := 1000; 485 | finally 486 | fUpdatingControls := false; 487 | end; 488 | end; 489 | 490 | procedure TfrmMain.PopupMenu1Popup(Sender: TObject); 491 | begin 492 | UpdateActionStates; 493 | end; 494 | 495 | procedure TfrmMain.RadioGroup1Click(Sender: TObject); 496 | begin 497 | //Set Mode 498 | if TRadioGroup(Sender).ItemIndex = 0 then 499 | DesignBox1.Mode := dbmSelect 500 | else 501 | DesignBox1.Mode := dbmDraw; 502 | 503 | // Set Drawing Class 504 | case RadioGroup1.ItemIndex of 505 | 1: DesignBox1.DrawClass := TDesignBoxItemRectangle; 506 | 2: DesignBox1.DrawClass := TDesignBoxItemEllipse; 507 | 3: DesignBox1.DrawClass := TDesignBoxItemText; 508 | else DesignBox1.DrawClass := TDesignBoxItemRectangle 509 | end; 510 | 511 | end; 512 | 513 | procedure TfrmMain.SpinEdit1Change(Sender: TObject); 514 | begin 515 | DesignBox1.GridOptions.SizeMm := SpinEdit1.Value; 516 | end; 517 | 518 | procedure TfrmMain.spinHeightChange(Sender: TObject); 519 | begin 520 | DesignBox1.PageHeightMM := spinHeight.Value; 521 | end; 522 | 523 | procedure TfrmMain.spinScaleChange(Sender: TObject); 524 | begin 525 | DesignBox1.Scale := TSpinEdit(Sender).Value / 100; 526 | end; 527 | 528 | procedure TfrmMain.spinWidthChange(Sender: TObject); 529 | begin 530 | DesignBox1.PageWidthMM := spinWidth.Value; 531 | end; 532 | 533 | procedure TfrmMain.txtTextItemChange(Sender: TObject); 534 | begin 535 | if fUpdatingControls then EXIT; 536 | 537 | if (DesignBox1.SelectedItems.Count = 1) then 538 | if DesignBox1.SelectedItems[0] is TDesignBoxItemText then 539 | TDesignBoxItemText(DesignBox1.SelectedItems[0]).Text := TEdit(Sender).Text; 540 | end; 541 | 542 | procedure TfrmMain.UpdateActionStates; 543 | begin 544 | actBringToFront.Enabled := DesignBox1.Items.SelectedCount > 0; 545 | actSendToBack.Enabled := DesignBox1.Items.SelectedCount > 0; 546 | actDelete.Enabled := DesignBox1.Items.SelectedCount > 0; 547 | actUndo.Enabled := DesignBox1.CanUndo; 548 | actRedo.Enabled := DesignBox1.CanRedo; 549 | end; 550 | 551 | procedure TfrmMain.UpdateItemCoords; 552 | begin 553 | if DesignBox1.SelectedItems.Count > 1 then 554 | begin 555 | StatusBar1.SimpleText := 'Multiple items selected'; 556 | Exit; 557 | end; 558 | 559 | if DesignBox1.SelectedItems.Count = 1 then 560 | StatusBar1.SimpleText := Format('X = %fmm | Y = %fmm' ,[DesignBox1.SelectedItems[0].LeftMM, DesignBox1.SelectedItems[0].TopMM]) 561 | else 562 | StatusBar1.SimpleText := 'No items selected'; 563 | end; 564 | 565 | procedure TfrmMain.UpdateModeRadioGroup; 566 | var 567 | AIndex: integer; 568 | begin 569 | AIndex := 0; 570 | case DesignBox1.Mode of 571 | dbmSelect: AIndex := 0; 572 | dbmDraw : 573 | begin 574 | if DesignBox1.DrawClass = TDesignBoxItemRectangle then 575 | AIndex := 1 576 | else 577 | if DesignBox1.DrawClass = TDesignBoxItemEllipse then 578 | AIndex := 2 579 | else 580 | if DesignBox1.DrawClass = TDesignBoxItemText then 581 | AIndex := 3; 582 | end; 583 | end; 584 | RadioGroup1.ItemIndex := AIndex; 585 | end; 586 | 587 | end. 588 | -------------------------------------------------------------------------------- /DesignBox.dpk: -------------------------------------------------------------------------------- 1 | package DesignBox; 2 | 3 | {$R *.res} 4 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} 5 | {$ALIGN 8} 6 | {$ASSERTIONS ON} 7 | {$BOOLEVAL OFF} 8 | {$DEBUGINFO OFF} 9 | {$EXTENDEDSYNTAX ON} 10 | {$IMPORTEDDATA ON} 11 | {$IOCHECKS ON} 12 | {$LOCALSYMBOLS ON} 13 | {$LONGSTRINGS ON} 14 | {$OPENSTRINGS ON} 15 | {$OPTIMIZATION OFF} 16 | {$OVERFLOWCHECKS OFF} 17 | {$RANGECHECKS OFF} 18 | {$REFERENCEINFO ON} 19 | {$SAFEDIVIDE OFF} 20 | {$STACKFRAMES ON} 21 | {$TYPEDADDRESS OFF} 22 | {$VARSTRINGCHECKS ON} 23 | {$WRITEABLECONST OFF} 24 | {$MINENUMSIZE 1} 25 | {$IMAGEBASE $400000} 26 | {$DEFINE DEBUG} 27 | {$ENDIF IMPLICITBUILDING} 28 | {$IMPLICITBUILD ON} 29 | 30 | requires 31 | vclimg, 32 | vcl, 33 | rtl; 34 | 35 | contains 36 | DesignBox in 'DesignBox.pas'; 37 | 38 | end. 39 | -------------------------------------------------------------------------------- /DesignBox.dproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | {D8889177-96C2-4EB3-AC44-D0773988A473} 4 | DesignBox.dpk 5 | 19.1 6 | VCL 7 | True 8 | Debug 9 | Win32 10 | 1 11 | Package 12 | 13 | 14 | true 15 | 16 | 17 | true 18 | Base 19 | true 20 | 21 | 22 | true 23 | Base 24 | true 25 | 26 | 27 | true 28 | Base 29 | true 30 | 31 | 32 | true 33 | Base 34 | true 35 | 36 | 37 | true 38 | Base 39 | true 40 | 41 | 42 | true 43 | Base 44 | true 45 | 46 | 47 | true 48 | Cfg_1 49 | true 50 | true 51 | 52 | 53 | true 54 | Base 55 | true 56 | 57 | 58 | .\$(Platform)\$(Config) 59 | .\$(Platform)\$(Config) 60 | false 61 | false 62 | false 63 | false 64 | false 65 | true 66 | true 67 | System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace) 68 | All 69 | C:\projects\Stuart;$(DCC_UnitSearchPath) 70 | bpl 71 | DesignBox 72 | 73 | 74 | None 75 | android-support-v4.dex.jar;cloud-messaging.dex.jar;com-google-android-gms.play-services-ads-base.17.2.0.dex.jar;com-google-android-gms.play-services-ads-identifier.16.0.0.dex.jar;com-google-android-gms.play-services-ads-lite.17.2.0.dex.jar;com-google-android-gms.play-services-ads.17.2.0.dex.jar;com-google-android-gms.play-services-analytics-impl.16.0.8.dex.jar;com-google-android-gms.play-services-analytics.16.0.8.dex.jar;com-google-android-gms.play-services-base.16.0.1.dex.jar;com-google-android-gms.play-services-basement.16.2.0.dex.jar;com-google-android-gms.play-services-gass.17.2.0.dex.jar;com-google-android-gms.play-services-identity.16.0.0.dex.jar;com-google-android-gms.play-services-maps.16.1.0.dex.jar;com-google-android-gms.play-services-measurement-base.16.4.0.dex.jar;com-google-android-gms.play-services-measurement-sdk-api.16.4.0.dex.jar;com-google-android-gms.play-services-stats.16.0.1.dex.jar;com-google-android-gms.play-services-tagmanager-v4-impl.16.0.8.dex.jar;com-google-android-gms.play-services-tasks.16.0.1.dex.jar;com-google-android-gms.play-services-wallet.16.0.1.dex.jar;com-google-firebase.firebase-analytics.16.4.0.dex.jar;com-google-firebase.firebase-common.16.1.0.dex.jar;com-google-firebase.firebase-iid-interop.16.0.1.dex.jar;com-google-firebase.firebase-iid.17.1.1.dex.jar;com-google-firebase.firebase-measurement-connector.17.0.1.dex.jar;com-google-firebase.firebase-messaging.17.5.0.dex.jar;fmx.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar 76 | xmlrtl;rtl;$(DCC_UsePackage) 77 | 78 | 79 | None 80 | android-support-v4.dex.jar;cloud-messaging.dex.jar;com-google-android-gms.play-services-ads-base.17.2.0.dex.jar;com-google-android-gms.play-services-ads-identifier.16.0.0.dex.jar;com-google-android-gms.play-services-ads-lite.17.2.0.dex.jar;com-google-android-gms.play-services-ads.17.2.0.dex.jar;com-google-android-gms.play-services-analytics-impl.16.0.8.dex.jar;com-google-android-gms.play-services-analytics.16.0.8.dex.jar;com-google-android-gms.play-services-base.16.0.1.dex.jar;com-google-android-gms.play-services-basement.16.2.0.dex.jar;com-google-android-gms.play-services-gass.17.2.0.dex.jar;com-google-android-gms.play-services-identity.16.0.0.dex.jar;com-google-android-gms.play-services-maps.16.1.0.dex.jar;com-google-android-gms.play-services-measurement-base.16.4.0.dex.jar;com-google-android-gms.play-services-measurement-sdk-api.16.4.0.dex.jar;com-google-android-gms.play-services-stats.16.0.1.dex.jar;com-google-android-gms.play-services-tagmanager-v4-impl.16.0.8.dex.jar;com-google-android-gms.play-services-tasks.16.0.1.dex.jar;com-google-android-gms.play-services-wallet.16.0.1.dex.jar;com-google-firebase.firebase-analytics.16.4.0.dex.jar;com-google-firebase.firebase-common.16.1.0.dex.jar;com-google-firebase.firebase-iid-interop.16.0.1.dex.jar;com-google-firebase.firebase-iid.17.1.1.dex.jar;com-google-firebase.firebase-measurement-connector.17.0.1.dex.jar;com-google-firebase.firebase-messaging.17.5.0.dex.jar;fmx.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar 81 | xmlrtl;rtl;$(DCC_UsePackage) 82 | 83 | 84 | None 85 | xmlrtl;rtl;$(DCC_UsePackage) 86 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_1024x1024.png 87 | 88 | 89 | None 90 | xmlrtl;rtl;$(DCC_UsePackage) 91 | 92 | 93 | Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) 94 | Debug 95 | true 96 | CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= 97 | 1033 98 | xmlrtl;rtl;vclactnband;vclx;vcl;vclimg;$(DCC_UsePackage) 99 | 100 | 101 | DEBUG;$(DCC_Define) 102 | true 103 | false 104 | true 105 | true 106 | true 107 | 108 | 109 | false 110 | 111 | 112 | false 113 | RELEASE;$(DCC_Define) 114 | 0 115 | 0 116 | 117 | 118 | 119 | MainSource 120 | 121 | 122 | 123 | 124 | 125 | 126 | Cfg_2 127 | Base 128 | 129 | 130 | Base 131 | 132 | 133 | Cfg_1 134 | Base 135 | 136 | 137 | 138 | Delphi.Personality.12 139 | Package 140 | 141 | 142 | 143 | DesignBox.dpk 144 | 145 | 146 | File C:\Users\Public\Documents\Embarcadero\Studio\20.0\Bpl\DesignBox.bpl not found 147 | Microsoft Office 2000 Sample Automation Server Wrapper Components 148 | Microsoft Office XP Sample Automation Server Wrapper Components 149 | 150 | 151 | 152 | 153 | 154 | DesignBox.bpl 155 | true 156 | 157 | 158 | 159 | 160 | 1 161 | 162 | 163 | 0 164 | 165 | 166 | 167 | 168 | classes 169 | 1 170 | 171 | 172 | classes 173 | 1 174 | 175 | 176 | 177 | 178 | res\xml 179 | 1 180 | 181 | 182 | res\xml 183 | 1 184 | 185 | 186 | 187 | 188 | library\lib\armeabi-v7a 189 | 1 190 | 191 | 192 | 193 | 194 | library\lib\armeabi 195 | 1 196 | 197 | 198 | library\lib\armeabi 199 | 1 200 | 201 | 202 | 203 | 204 | library\lib\armeabi-v7a 205 | 1 206 | 207 | 208 | 209 | 210 | library\lib\mips 211 | 1 212 | 213 | 214 | library\lib\mips 215 | 1 216 | 217 | 218 | 219 | 220 | library\lib\armeabi-v7a 221 | 1 222 | 223 | 224 | library\lib\arm64-v8a 225 | 1 226 | 227 | 228 | 229 | 230 | library\lib\armeabi-v7a 231 | 1 232 | 233 | 234 | 235 | 236 | res\drawable 237 | 1 238 | 239 | 240 | res\drawable 241 | 1 242 | 243 | 244 | 245 | 246 | res\values 247 | 1 248 | 249 | 250 | res\values 251 | 1 252 | 253 | 254 | 255 | 256 | res\values-v21 257 | 1 258 | 259 | 260 | res\values-v21 261 | 1 262 | 263 | 264 | 265 | 266 | res\values 267 | 1 268 | 269 | 270 | res\values 271 | 1 272 | 273 | 274 | 275 | 276 | res\drawable 277 | 1 278 | 279 | 280 | res\drawable 281 | 1 282 | 283 | 284 | 285 | 286 | res\drawable-xxhdpi 287 | 1 288 | 289 | 290 | res\drawable-xxhdpi 291 | 1 292 | 293 | 294 | 295 | 296 | res\drawable-ldpi 297 | 1 298 | 299 | 300 | res\drawable-ldpi 301 | 1 302 | 303 | 304 | 305 | 306 | res\drawable-mdpi 307 | 1 308 | 309 | 310 | res\drawable-mdpi 311 | 1 312 | 313 | 314 | 315 | 316 | res\drawable-hdpi 317 | 1 318 | 319 | 320 | res\drawable-hdpi 321 | 1 322 | 323 | 324 | 325 | 326 | res\drawable-xhdpi 327 | 1 328 | 329 | 330 | res\drawable-xhdpi 331 | 1 332 | 333 | 334 | 335 | 336 | res\drawable-mdpi 337 | 1 338 | 339 | 340 | res\drawable-mdpi 341 | 1 342 | 343 | 344 | 345 | 346 | res\drawable-hdpi 347 | 1 348 | 349 | 350 | res\drawable-hdpi 351 | 1 352 | 353 | 354 | 355 | 356 | res\drawable-xhdpi 357 | 1 358 | 359 | 360 | res\drawable-xhdpi 361 | 1 362 | 363 | 364 | 365 | 366 | res\drawable-xxhdpi 367 | 1 368 | 369 | 370 | res\drawable-xxhdpi 371 | 1 372 | 373 | 374 | 375 | 376 | res\drawable-xxxhdpi 377 | 1 378 | 379 | 380 | res\drawable-xxxhdpi 381 | 1 382 | 383 | 384 | 385 | 386 | res\drawable-small 387 | 1 388 | 389 | 390 | res\drawable-small 391 | 1 392 | 393 | 394 | 395 | 396 | res\drawable-normal 397 | 1 398 | 399 | 400 | res\drawable-normal 401 | 1 402 | 403 | 404 | 405 | 406 | res\drawable-large 407 | 1 408 | 409 | 410 | res\drawable-large 411 | 1 412 | 413 | 414 | 415 | 416 | res\drawable-xlarge 417 | 1 418 | 419 | 420 | res\drawable-xlarge 421 | 1 422 | 423 | 424 | 425 | 426 | res\values 427 | 1 428 | 429 | 430 | res\values 431 | 1 432 | 433 | 434 | 435 | 436 | 1 437 | 438 | 439 | 1 440 | 441 | 442 | 0 443 | 444 | 445 | 446 | 447 | 1 448 | .framework 449 | 450 | 451 | 1 452 | .framework 453 | 454 | 455 | 0 456 | 457 | 458 | 459 | 460 | 1 461 | .dylib 462 | 463 | 464 | 1 465 | .dylib 466 | 467 | 468 | 0 469 | .dll;.bpl 470 | 471 | 472 | 473 | 474 | 1 475 | .dylib 476 | 477 | 478 | 1 479 | .dylib 480 | 481 | 482 | 1 483 | .dylib 484 | 485 | 486 | 1 487 | .dylib 488 | 489 | 490 | 1 491 | .dylib 492 | 493 | 494 | 0 495 | .bpl 496 | 497 | 498 | 499 | 500 | 0 501 | 502 | 503 | 0 504 | 505 | 506 | 0 507 | 508 | 509 | 0 510 | 511 | 512 | 0 513 | 514 | 515 | 0 516 | 517 | 518 | 0 519 | 520 | 521 | 0 522 | 523 | 524 | 525 | 526 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 527 | 1 528 | 529 | 530 | 531 | 532 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 533 | 1 534 | 535 | 536 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 537 | 1 538 | 539 | 540 | 541 | 542 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 543 | 1 544 | 545 | 546 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 547 | 1 548 | 549 | 550 | 551 | 552 | 1 553 | 554 | 555 | 1 556 | 557 | 558 | 1 559 | 560 | 561 | 562 | 563 | 1 564 | 565 | 566 | 1 567 | 568 | 569 | 1 570 | 571 | 572 | 573 | 574 | 1 575 | 576 | 577 | 1 578 | 579 | 580 | 1 581 | 582 | 583 | 584 | 585 | 1 586 | 587 | 588 | 1 589 | 590 | 591 | 1 592 | 593 | 594 | 595 | 596 | 1 597 | 598 | 599 | 1 600 | 601 | 602 | 1 603 | 604 | 605 | 606 | 607 | 1 608 | 609 | 610 | 1 611 | 612 | 613 | 1 614 | 615 | 616 | 617 | 618 | 1 619 | 620 | 621 | 1 622 | 623 | 624 | 1 625 | 626 | 627 | 628 | 629 | 1 630 | 631 | 632 | 1 633 | 634 | 635 | 1 636 | 637 | 638 | 639 | 640 | 1 641 | 642 | 643 | 1 644 | 645 | 646 | 1 647 | 648 | 649 | 650 | 651 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 652 | 1 653 | 654 | 655 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 656 | 1 657 | 658 | 659 | 660 | 661 | 1 662 | 663 | 664 | 1 665 | 666 | 667 | 1 668 | 669 | 670 | 671 | 672 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 673 | 1 674 | 675 | 676 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 677 | 1 678 | 679 | 680 | 681 | 682 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 683 | 1 684 | 685 | 686 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 687 | 1 688 | 689 | 690 | 691 | 692 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 693 | 1 694 | 695 | 696 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 697 | 1 698 | 699 | 700 | 701 | 702 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 703 | 1 704 | 705 | 706 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 707 | 1 708 | 709 | 710 | 711 | 712 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 713 | 1 714 | 715 | 716 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 717 | 1 718 | 719 | 720 | 721 | 722 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 723 | 1 724 | 725 | 726 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 727 | 1 728 | 729 | 730 | 731 | 732 | 1 733 | 734 | 735 | 1 736 | 737 | 738 | 1 739 | 740 | 741 | 742 | 743 | 1 744 | 745 | 746 | 1 747 | 748 | 749 | 1 750 | 751 | 752 | 753 | 754 | 1 755 | 756 | 757 | 1 758 | 759 | 760 | 1 761 | 762 | 763 | 764 | 765 | 1 766 | 767 | 768 | 1 769 | 770 | 771 | 1 772 | 773 | 774 | 775 | 776 | 1 777 | 778 | 779 | 1 780 | 781 | 782 | 1 783 | 784 | 785 | 786 | 787 | 1 788 | 789 | 790 | 1 791 | 792 | 793 | 1 794 | 795 | 796 | 797 | 798 | 1 799 | 800 | 801 | 1 802 | 803 | 804 | 1 805 | 806 | 807 | 808 | 809 | 1 810 | 811 | 812 | 1 813 | 814 | 815 | 1 816 | 817 | 818 | 819 | 820 | 1 821 | 822 | 823 | 1 824 | 825 | 826 | 1 827 | 828 | 829 | 830 | 831 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 832 | 1 833 | 834 | 835 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 836 | 1 837 | 838 | 839 | 840 | 841 | 1 842 | 843 | 844 | 1 845 | 846 | 847 | 1 848 | 849 | 850 | 851 | 852 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 853 | 1 854 | 855 | 856 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 857 | 1 858 | 859 | 860 | 861 | 862 | 1 863 | 864 | 865 | 1 866 | 867 | 868 | 1 869 | 870 | 871 | 872 | 873 | 1 874 | 875 | 876 | 1 877 | 878 | 879 | 1 880 | 881 | 882 | 883 | 884 | 1 885 | 886 | 887 | 1 888 | 889 | 890 | 1 891 | 892 | 893 | 894 | 895 | 1 896 | 897 | 898 | 1 899 | 900 | 901 | 1 902 | 903 | 904 | 905 | 906 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 907 | 1 908 | 909 | 910 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 911 | 1 912 | 913 | 914 | 915 | 916 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 917 | 1 918 | 919 | 920 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 921 | 1 922 | 923 | 924 | 925 | 926 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 927 | 1 928 | 929 | 930 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 931 | 1 932 | 933 | 934 | 935 | 936 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 937 | 1 938 | 939 | 940 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 941 | 1 942 | 943 | 944 | 945 | 946 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 947 | 1 948 | 949 | 950 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 951 | 1 952 | 953 | 954 | 955 | 956 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 957 | 1 958 | 959 | 960 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 961 | 1 962 | 963 | 964 | 965 | 966 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 967 | 1 968 | 969 | 970 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 971 | 1 972 | 973 | 974 | 975 | 976 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 977 | 1 978 | 979 | 980 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 981 | 1 982 | 983 | 984 | 985 | 986 | 1 987 | 988 | 989 | 1 990 | 991 | 992 | 993 | 994 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 995 | 1 996 | 997 | 998 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 999 | 1 1000 | 1001 | 1002 | 1003 | 1004 | 1005 | 1006 | 1007 | 1008 | 1 1009 | 1010 | 1011 | 1 1012 | 1013 | 1014 | 1 1015 | 1016 | 1017 | 1018 | 1019 | 1020 | 1021 | 1022 | Contents\Resources 1023 | 1 1024 | 1025 | 1026 | Contents\Resources 1027 | 1 1028 | 1029 | 1030 | 1031 | 1032 | library\lib\armeabi-v7a 1033 | 1 1034 | 1035 | 1036 | library\lib\arm64-v8a 1037 | 1 1038 | 1039 | 1040 | 1 1041 | 1042 | 1043 | 1 1044 | 1045 | 1046 | 1 1047 | 1048 | 1049 | 1 1050 | 1051 | 1052 | 1 1053 | 1054 | 1055 | 1 1056 | 1057 | 1058 | 0 1059 | 1060 | 1061 | 1062 | 1063 | library\lib\armeabi-v7a 1064 | 1 1065 | 1066 | 1067 | 1068 | 1069 | 1 1070 | 1071 | 1072 | 1 1073 | 1074 | 1075 | 1076 | 1077 | Assets 1078 | 1 1079 | 1080 | 1081 | Assets 1082 | 1 1083 | 1084 | 1085 | 1086 | 1087 | Assets 1088 | 1 1089 | 1090 | 1091 | Assets 1092 | 1 1093 | 1094 | 1095 | 1096 | 1097 | 1098 | 1099 | 1100 | 1101 | 1102 | 1103 | 1104 | 1105 | 1106 | 1107 | False 1108 | False 1109 | False 1110 | False 1111 | True 1112 | 1113 | 1114 | 12 1115 | 1116 | 1117 | 1118 | 1119 | 1120 | -------------------------------------------------------------------------------- /DesignBox.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gmurt/DesignBox/932c1aeb15308863cac7c338c7b591353c663781/DesignBox.res -------------------------------------------------------------------------------- /DesignBoxGroup.groupproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | {7798E49E-3949-48BF-8A33-F2427F31E194} 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | Default.Personality.12 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 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # DesignBox 2 | DesignBox component 3 | 4 | Basic canvas/drawing component with included demo showing much of the functionality. 5 | 6 | Lots of contributions/commits from Stuart ;-) https://github.com/stuartclennett 7 | 8 | ![image](https://user-images.githubusercontent.com/1161351/124745481-c5296b80-df17-11eb-8c6e-e72ed8fb0105.png) 9 | --------------------------------------------------------------------------------