Orpheus User Manual

1393
O r ph eus 4 U ser ’sM anual V ol um e 1  T urboPow e r S o ft w a r e Com p an y Color ad o S pri ngs, C O www.turbopower.com ©1997 - 200 1 Turbo Powe r Sof tware Com pany . All ri ghts rese rve d. Fir st Edition S epte m be r 199 7 Se condEdi tionMay19 98  T h ir d E d it io n D e c em b e r 1 9 9 8 Fourth Edition June 20 01

Transcript of Orpheus User Manual

Volume 1
First Edition September 1997
Second Edition May 1998
 Third Edition December 1998
Fourth Edition June 2001
License Agreement
 This software and accompanying documentation are protected by United States copyright law and also by International  Treaty provisions. Any use of this software in violation of copyright law or the terms of this agreement will be prosecuted to the best of our ability.
Copyright ©1997-2001 by TurboPower Software Company, all rights reserved.
 TurboPower Software Company authorizes you to make archival copies of this software for the sole purpose of back-up and protecting your investment from loss. Under no circumstances may you copy this software or documentation for the purposes of distribution to others. Under no conditions may you remove the copyright notices made part of the software or documentation.
 You may distribute, without runtime fees or further licenses, your own compiled programs based on any of the source code of Orpheus. You may not distribute any of the Orpheus source code, compiled units, or compiled example programs without written permission from TurboPower Software Company.
Note that the previous restrictions do not prohibit you from distributing your own source code, units, or components that depend upon Orpheus. However, others who receive your source code, units, or components need to purchase their own copies of Orpheus in order to compile the source code or to write programs that use your units or components.
 The supplied software may be used by one person on as many computer systems as that person uses. Group programming projects making use of this software must purchase a copy of the software and documentation for each member of the group. Contact TurboPower Software Company for volume discounts and site licensing agreements.
 This software and accompanying documentation is deemed to be “commercial software” and “commercial computer software documentation,” respectively, pursuant to DFAR Section 227.7202 and FAR 12.212, as applicable. Any use, modification, reproduction, release, performance, display or disclosure of the Software by the US Government or any of its agencies shall be governed solely by the terms of this agreement and shall be prohibited except to the extent expressly permitted by the terms of this agreement. TurboPower Software Company, PO Box 49009, Colorado Springs, CO 80949- 9009.
With respect to the physical media and documentation provided with Orpheus, TurboPower Software Company warrants the same to be free of defects in materials and workmanship for a period of 60 days from the date of receipt. If you notify us of such a defect within the warranty period, TurboPower Software Company will replace the defective media or documentation at no cost to you.
 TurboPower Software Company warrants that the software will function as described in this documentation for a period of 60 days from receipt. If you encounter a bug or deficiency, we will require a problem report detailed enough to allow us to find and fix the problem. If you properly notify us of such a software problem within the warranty period, TurboPower Software Company will update the defective software at no cost to you.
 TurboPower Software Company further warrants that the purchaser will remain fully satisfied with the product for a period of 60 days from receipt. I f you are dissatisfied for any reason, and TurboPower Software Company cannot correct the problem, contact the party from whom the software was purchased for a return authorization. If you purchased the product directly from TurboPower Software Company, we will refund the full purchase price of the software (not including shipping costs) upon receipt of the original program media and documentation in undamaged condition. TurboPower Software Company honors returns from authorized dealers, but cannot offer refunds directly to anyone who did not purchase a product directly from us.
 TURBOPOWER SOFTWARE COMPANY DOES NOT ASSUME ANY LIABILITY FOR THE USE OF ORPHEUS BEYOND THE ORIGINAL PURCHASE PRICE OF THE SOFTWARE. IN NO EVENT WILL TURBOPOWER SOFTWARE COMPANY BE LIABLE TO YOU FOR ADDITIONAL DAMAGES, INCLUDING ANY LOST PROFITS, LOST SAVINGS, OR OTHER INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF OR INABILITY TO USE THESE PROGRAMS, EVEN IF TURBOPOWER SOFTWARE COMPANY HAS BEEN ADVISED OF  THE POSSIBILITY OF SUCH DAMAGES.
By using this software, you agree to the terms of this section and to any additional licensing terms contained in the DEPLOY.HLP file. If you do not agree, you should immediately return the entire Orpheus package for a refund.
All TurboPower product names are trademarks or registered trademarks of TurboPower Software Company. Other brand and product names are trademarks or registered trademarks of their respective holders.
13
11
10
12
1
9
3
2
8
4
5
7
6
15
14
17
16
 Technical Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-13
Chapter 3: LookOutBar Component . . . . . . . . . . . . . . . . . . . . . . . . . . .1-109  TO32LookOutBar Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-112  TO32LookoutFolder Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-127  TO32LookoutBtnItem Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-131
Chapter 4: ReportView Components . . . . . . . . . . . . . . . . . . . . . . . . . . .1-135 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-136
 TOvcRvField Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-138  TOvcRvView Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-143  TOvcRvViewField Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-148  TOvcCustomReportView Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-154  TOvcReportView Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-186
13
11
10
12
1
9
3
2
8
4
5
7
6
15
14
17
16
Chapter 5: Outline Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-229  TOvcCustomOutline Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-230  TOvcOutline Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-231  TOvcOutlineNodes Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-245  TOvcOutlineNode Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-250
Chapter 6: Orpheus State Components . . . . . . . . . . . . . . . . . . . . . . . . .1-257  TOvcAbstractState Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-258  TOvcFormState Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-261  TOvcComponentState Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-263  TOvcPersistantState Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-266  TOvcAbstractStore Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-268  TOvcRegistryStore Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-272  TOvcIniFileStore Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-274  TO32XMLStore Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-276  TOvcVirtualStore Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-278
Chapter 7: Tabbed Notebook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-281  TOvcNotebook Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-282
Chapter 8: Most-Recently-Used Menu List . . . . . . . . . . . . . . . . . . . . . .1-303  TOvcMenuMRU Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-304
Chapter 9: Data Entry Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-315 Picture Masks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-316 Field Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-331 Validation Helper Routines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-333 Special Field Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-336
Chapter 10: International Support Issues . . . . . . . . . . . . . . . . . . . . . . .1-339  TOvcIntlSup Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-344
Chapter 11: Validated Data Entry Components . . . . . . . . . . . . . . . . .1-361  TOvcBaseEntryField Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-363  TOvcCustomSimpleField Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-397  TOvcSimpleField Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-398
13
11
10
12
1
9
3
2
8
4
5
7
6
15
14
17
16
Chapter 12: FlexEdit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-437  TO32FlexEdit Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-439  TO32EditLines Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-449  TFlexEditValidatorOptions Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-451
Chapter 13: Validators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-453  TO32BaseValidator Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-454  TO32RegexValidator Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-457  TO32RegexEngine Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-460  TO32ParadoxValidator Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-466  TO32OrMaskValidator Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-467  TO32ValidatorPool Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-468  TO32Validators Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-470  TO32ValidatorItem Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-473  TValidatorOptions Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-475
Chapter 14: Calendar Components . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-479  TOvcCustomCalendar Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-480  TOvcCalendar Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-481  TOvcDbCalendar Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-491  TOvcCalColors Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-493
Chapter 15: Calculator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-497  TOvcCustomCalculator Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-498  TOvcCalculator Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-499  TOvcCalcColors Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-509
Chapter 16: Clock Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-513  TOvcCustomClock Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-514  TOvcClock Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-515  TOvcDbClock Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-524  TOvcHandOptions Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-526  TOvcClockDigitalOptions Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-530
13
11
10
12
1
9
3
2
8
4
5
7
6
15
14
17
16
Chapter 18: Dialog Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-587  TOvcBaseDialog Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-588  TOvcCalculatorDialog Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-591  TOvcCalendarDialog Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-594
 TOvcClockDialog Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-597  TOvcMemoDialog Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-600  TOvcDbMemoDialog Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-603  TOvcDbAliasDialog Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-607  TOvcSplashDialog Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-610
Chapter 19: Slider Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-613  TOvcCustomSlider Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-614  TOvcSlider Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-615  TOvcDbSlider Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-618  TOvcSliderEdit Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-621  TOvcCustomDbSliderEdit Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-624  TOvcDbSliderEdit Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-625
Identifier Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . i
Subject Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii
Chapter 21: Transfer Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-653  TOvcTransfer Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-662
Chapter 22: List Boxes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-665  TOvcCustomListBox Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-666  TOvcListBox Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-667  TOvcSearchList Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-670  TOvcCheckList Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-675  TOvcDbColumnList Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-680  TOvcCustomVirtualListbox Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-688  TOvcVirtualListBox Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-689
Chapter 23: Meters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-709  TOvcCustomMeter Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-710  TOvcMeter Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-711  TOvcPeakMeter Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-716
Chapter 24: Spinner Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-721  TOvcSpinner Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-722
Chapter 25: Splitter Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729  TOvcSplitter Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 730
Chapter 26: Labels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-735  TOvcLabel Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-736  TOvcCustomRotatedLabel Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-743  TOvcRotatedLabel Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-744  TOvcCustomPictureLabel Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-748  TOvcPictureLabel Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-749  TOvcDbPictureLabel Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-755  TOvcDbDisplayLabel Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-757  TOvcURL Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-759
Chapter 27: Text Editors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-767  Text Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-768  TOvcCustomEditor Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-774  TOvcEditor Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-775  TOvcCustomTextFileEditor Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-820  TOvcTextFileEditor Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-821  TOvcDbEditor Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-827
Chapter 28: File and Text Viewers . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-829  TOvcBaseViewer Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-830  TOvcCustomTextFileViewer Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-851  TOvcTextFileViewer Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-852  TOvcCustomFileViewer Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-855  TOvcFileViewer Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-856
Chapter 29: Timer Pool Component . . . . . . . . . . . . . . . . . . . . . . . . . . .2-861  TOvcTimerPool Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-864
Chapter 30: Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-871  TOvcTableColors Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-882  TOvcTableColumn Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-885  TOvcGridPen Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-888  TOvcGridPenSet Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-891  TOvcCellGlyphs Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-893  TOvcSparseArray Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-896  TOvcTableRows Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-903  TOvcTableColumns Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-910  TOvcTableCells Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-916  TOvcTableCellAncestor Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-921  TOvcBaseTableCell Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-922  TOvcTCBaseBitMap Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-945  TOvcTCCustomGlyph Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-947  TOvcTCGlyph Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-948  TOvcTCCustomBitmap Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-952  TOvcTCBitmap Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-953  TOvcTCCustomIcon Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-954  TOvcTCIcon Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-955  TOvcTCCustomCheckBox Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-956  TOvcTCCheckBox Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-957
Chapter 31: Inspector Grid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1111  TO32CustomInspectorGrid Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1112  TO32InspectorGrid Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1113  TO32InspectorItems Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1124  TO32InspectorItem Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1128
Chapter 32: Miscellaneous Components and Classes . . . . . . . . . . .2-1135  TOvcBaseISE Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1136  TOvcDbSearchEdit Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1139  TOvcDbIndexSelect Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1142  TOvcCaret Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1147  TOvcColors Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1152  TOvcFixedFont Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1154  TOvcUserData Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1155
Chapter 33: Deprecated Components . . . . . . . . . . . . . . . . . . . . . . . . .2-1159 OvcLookOutBar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1162
 TOvcLookOutBar Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1164  TOvcLookOutFolder Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1177  TOvcLookOutItem Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1180
 TOvcCustomDateEdit Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1194  TOvcDateEdit Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1195  TOvcCustomDbDateEdit Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1205  TOvcDbDateEdit Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1206  TOvcCustomTimeEdit Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1208  TOvcTimeEdit Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1209  TOvcCustomDbTimeEdit Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1215  TOvcDbTimeEdit Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1216 Array Editors: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1218
 TOvcBaseArrayEditor Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1220  TOvcSimpleArrayEditor Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1232  TOvcPictureArrayEditor Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1237  TOvcNumericArrayEditor Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1243  TOvcBaseDbArrayEditor Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1247  TOvcDbSimpleArrayEditor Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1263  TOvcDbPictureArrayEditor Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1266  TOvcDbNumericArrayEditor Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1269 Miscellaneous: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1271
 TOvcCustomEdit Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1272  TOvcEdit Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1273  TOvcEdPopup Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1275
Chapter 34: Demo Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-1277 Address Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1278 Order Entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1280
 Text Viewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1281 File Viewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1283
 Text Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1284 MDI Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1288
Identifier Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . i
Subject Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii
Orpheus is a collection of native, 32-bit Visual Component Library (VCL) components that dramatically extend the user interface design capabilities of Borland Delphi and C++Builder.
Orpheus controls are optimized and fully integrated with the Delphi and C++Builder development environments. Since the VCL components compile directly into your applications there’s nothing extra to distribute and install with your programs unless you decide to use run-time packages. Best of all, Orpheus’ complete source code is included so you can see exactly how it works.
Orpheus offers a very wide range of components. A high-level overview of the main sections of the library follows.
LookOut Bar  The LookOut Bar is a navigational icon bar that is both intuitive and instantly recognizable to users. Icons representing various facets of program functionality can be visually and logically divided by folder groups. Folders smoothly scroll into view along with their associated icons with a simple mouse click. Comprehensive icon handling features including painting, highlighting, animations, size, and sound are supported.
Folders can now serve as component containers. Set the folder’s FolderType property to ftContainer and you can drop any visual component onto a folder’s client area.
ReportView  The ReportView is a major new control in Orpheus that displays detailed or summarized data in a collapsible, configurable grid format. The ReportView lets you define and switch among various Views of your data. No-code sorting lets you sort columns of data with just a mouse click. In addition, data can be aggregated into collapsible groups with automatic data summarization. Orpheus includes three different ReportViews to meet your specific programming needs.
Entry Fields Entry field components provide validated data entry, automatic internationalization, easy-to-use picture masks, and numerous other properties and methods. Most of each component’s functionality is set at design time using the Object Inspector, but you can customize nearly every aspect of the entry field’s behavior at run time, too.
2 Chapter 1: Introduction
13
11
10
12
1
9
3
2
8
4
5
7
6
15
14
17
16
New in Orpheus 4 is the O32FlexEdit control. It provides a multi-line edit control with a number of features like advanced border control, context sensitive line display and input validation via built-in support for the new validators. See“Chapter 13: Validators” on page453for more information on the new validators.
State control Orpheus provides components that can store and retrieve state information for your programs automatically. With these components, your applications can maintain state information between executions, restoring selected program defaults easily. The Orpheus state components let you choose to store state information in the Registry, an INI file, or in a medium of your own devising.
O32XMLStore component extends XML file support to the State control components. Now you can store your program’s state information in XML format.
 Table  The table component displays and edits data in rows and columns. You can edit cells not only with normal VCL edit controls, but also with Orpheus picture mask controls, numeric controls, check boxes, and combo boxes. Bitmaps and labels can be displayed on the grid as well. The appearance of cells (type, font, color, width, height, alignment, hidden state, and read-only state) is fully customizable. The table can hold up to 16,000 columns by 2 billion rows. Data for the table is obtained from a user-defined event handler, allowing you to supply the data from any source. In addition, there is a data-aware version of the table enabling you to display and edit data from a data source.
 Text editors  The text editor component provides a sophisticated text editor with real-time word wrap, bookmarks, search/replace, multi-step undo/redo, and 16MB capacity. The text stream is managed as a linked list of paragraphs of up to 32KB each. The text file editor adds text file I/O to the editor component. A data-aware version of the text editor is also provided to allow editing of database memo fields.
 The text editors have been enhanced for Orpheus 4. New features include syntax highlighting, adjustable margin lines, and line numbers.
Chapter 1: Introduction 3
13
11
10
12
1
9
3
2
8
4
7
6
15
14
17
16
Combo boxes Orpheus includes a variety of combo boxes that are automatically stocked with commonly required data such as all the fonts on a user’s machine. Combo boxes are also provided for navigating the disk’s directory structure, choosing printers, files, file associations, database aliases, and database tables. These combo boxes can also have“history”, which automatically lists the most recently accessed items at the top of the drop-down list.
Viewers  The file viewer uses a virtual memory management scheme to display text or binary files of any size. Orpheus viewers also include a hex display mode for displaying binary data. In addition, the Viewers support searching, scroll bars, and bookmarks. The Orpheus text file viewer component can read any text file into a memory collection of text lines and supports scrolling and displaying the file.
Lists Orpheus provides a variety of list types that fill almost any list requirement. The search list is an incremental search list box. The check list box lets you to display a check mark or an ‘X’  beside selected items. The column list displays the values of a specified database field in a column.
Virtual list box Virtual list boxes use event handlers to supply the display string, color, selection state, and protection state of each item in the list. Because of this design, you can theoretically display up to 2 billion items, with the item data stored in a memory array, a tree, a linked list, a disk file, or some other data structure. The list box supports multiple selection, protected items, and any number of item colors.
4 Chapter 1: Introduction
13
11
10
12
1
9
3
2
8
4
5
7
6
15
14
17
16
 Tabbed notebook  The tabbed notebook component provides for multi-page forms using single-row or multi– row 3D tabs. The notebook also features the ability to have tabs on any edge of the component. Tabs are automatically sized and placed based on the desired tab orientation at design time or run time. An owner draw option gives you complete control over the appearance of the tabs. An advanced feature of the Orpheus notebook can help you conserve Windows resources. When activated, this feature can automatically create and destroy windowed controls when a particular page is activated and deactivated. Following is a list of features new to Orpheus 4:
•  Tab text orientation: Rotate the tab text so that users don’t have to lean their head to the side to read the tab labels.
•  Tab row locking: Prevent the tab rows from re-arranging when the user selects tabs from different rows.
• Delphi component palette emulation: Creates a spinner to scroll tabs horizontally when there are more tabs than can be displayed in the number of allowed rows.
Spinner  The Orpheus spinner component implements a spinner control. It allows you to offer an alternative to normal data entry by allowing the user to adjust an associated control’s value by clicking on the spin buttons.
Buttons  The ButtonHeader component allows you to select sections of a header. This could be used, for example, above a list of related items to specify the sort parameters for the list. The AttachedButton is a TBitButton that you can attach to other components. The SpeedButton is an alternative to the standard TSpeedbutton control that adds the capability to auto-repeat while the button is pressed, a“flat” and“transparent” modes.
Labels  The label components provide capabilities similar to the standard TLabel component, but go further. TOvcLabel lets you create eye-catching captions for your applications. It expands on the VCL TLabel with special shading, color, and highlight capabilities. The rotated label allows you to place a label on a form at any angle and size using a TrueType font. The picture label allows you to display data in accordance with a picture mask that you set. A data-aware version of the picture label connects to a data source and displays data from a field in a
Chapter 1: Introduction 5
13
11
10
12
1
9
3
2
8
4
7
6
15
14
17
16
database. The display label is a data-aware label that connects to a data source and displays the DisplayLabel property of a TField. The URL component is a label component that emulates a hyperlink on a Web page or an e-mail address.
Date and time components  TOvcCalendar allows you to view an entire month at a time. It supports the years from 1600 to 3999. A data-aware version of the calendar connects to a data source and allows visual manipulation of the database’s date or date/time fields. TOvcClock is an analog clock that can display the system’s current time, updated every second, or a static time to display schedules, meeting times, and so on. Both the clock face and the clock hands are customizable. Following is a list of features new to Orpheus 4:
• Digital Clock Display: select a led-style digital display for the clock.
• Advanced timer functionality.
Miscellaneous components  There are many miscellaneous components in Orpheus that defy categorization. Some of these have been requested by Orpheus customers, and others were invented to meet a particular need of TurboPower’s. For example, inside Orpheus you will also find:
• A search edit component that provides an incremental search mechanism similar to the search capability in the Windows on-line help index.
• A database index selection component that provides a drop-down list of the indexes available in an attached dataset.
• An enhanced meter component with a three dimensional, two-color progress bar for reporting the status of long events. In addition, the meter in Orpheus lets you perform dazzling effects using your own bitmaps for the used and unused portions of the display.
• A flexible MRU component for automatically adding a list of “most recently used”  documents to your File menu or elsewhere in your application.
Also included are form splitters that allow you to split a window into two sections, timer pools that use a single Windows timer to manage dozens of application timer events, and a data transfer component that provides the equivalent of the ObjectWindows Library transfer mechanism for Delphi and C++Builder forms.
6 Chapter 1: Introduction
13
11
10
12
1
9
3
2
8
4
5
7
6
15
14
17
16
SystemRequirements Much of Orpheus 4 has been updated to take advantage of newer, 32-bit features of Delphi. As a result, Orpheus 4 is only supported in Delphi 3 and above and C++Builder 3 and abouve. For optimal performance you must have the following hardware and software:
1. A computer capable of running Microsoft Windows 95, Windows 98, Windows NT, or Windows 2000. At least 32MB of RAM is recommended.
2. Borland Delphi Version 3, 4, 5, or 6 or C++Builder 3, 4 or, 5.
3. An installation of all Orpheus files and example programs for one compiler requires about 10MB of disk space.
Installation 7
Installation Orpheus can be installed directly from the CD-ROM.
 The setup program Insert the TurboPower Product Suite CD-ROM and follow the instructions presented by the setup program.
SETUP installs Orpheus in C:\Program Files\Orpheus by default. You can specify a different directory if desired. You can choose a full or partial installation. Full installation is recommended, but if you need to conserve disk space, use custom installation to install only selected portions of Orpheus.
SETUP installs to your start menu under Programs\TurboPower\Orpheus by default (a different name can be specified, if desired).
Installing for multiple compiler versions
Orpheus supports all Delphi compilers version 3 and above and all version of C++Builder 3 and above. However, the compiled file format is different for each version. The Orpheus setup program allows you to select compiler support for each of the different version of Delphi or C++Builder.
By default, only the installed compilers will be selected when Orpheus is installed for the first time. If Orpheus is being re-installed or upgraded, only support for the previously supported compilers will be selected. If you have installed a new compiler and wish to install Orpheus support for that compiler, you must explicitly select support for that compiler.
Installing into C++Builder
Orpheus can be used with either Delphi or C++Builder. If you install the C++Builder help file and examples then you will find the help file in the ORPHEUS \HELP\CBUILDER directory and the examples in ORPHEUS\EXAMPLES\CBUILDER.
Header and object files for each version of C++Builder are installed into the \HPP* directory located in the Orpheus root directory. For example, headers filed for C++Builder 5 will be located in the \HPP5 directory. If you need to generate header and object files to support other C++Builder compilers, you can either re-install Orpheus and select the new compiler, or use the DCC32.EXE program to compile the OVCREG.PAS and OVCREGDB.PAS files using“-jphn” as the command line options.
8 Chapter 1: Introduction
Delphi and C++Builder packages
 To avoid version conflicts with applications using different versions of the Orpheus packages, each version of Orpheus comes with packages using slightly different names. This allows you to use the same Orpheus installation with multiple versions of Delphi and C++Builder.
 The Orpheus packages have the following form:
ONnnXxVv.BPL (or .DPL in Delphi 3.)
Nnn is the version number of Orpheus. Xx are product-specific characters. Vv is the version of VCL supported. So, O400_D50.BPL is an Orpheus version 4.00, design time package for Delphi 5, O400_D30.DPL is the same package except for Delphi 3, etc.
Orpheus packages are automatically installed into Delphi and C++Builder if Orpheus is installed using the setup program. If you need to install the packages manually, you can install them using the“Install Packages” menu option.
 The two run-time packages must be located somewhere on your system PATH. Starting with Delphi 4, the default directory for package files is Projects\BPL located off of the compiler’s root directory. For Delphi 4 – 6 and C++Builder 4 and 5, the setup program will install the packages to this directory by default. For Delphi 3 and C++Builder 3, the setup program will install the package files to the Windows system directory (Windows\System for Windows 95, Windows 98, and Windows ME or Winnt\System32 for Windows NT and Windows 2000).
If you want to locate the package files in a different location, you must make sure that the location appears in your system’s search path.
Be sure to alter the library path so that it includes the path to the Orpheus source files (Tools|Environment Options– Library Page) or add the Orpheus path to your system Path environment. This allows the compiler to find the Orpheus source files when required.
For C++Builder you must also make sure that the proper hpp* path appears in the library search path.
 The component palette will be updated with several new Orpheus tabs. If you registered the data-aware components, tabs for ‘Orpheus (DB)’ are added.
Installing integrated help  The Orpheus help system is typically installed into Delphi and C++Builder by the SETUP program, but steps for manual installation are provided if the need arises.
Installation 9
Installing integrated help for Delphi 4 - 6 and C++Builder.
 To install the help into Delphi or C++Builder, use the Help | Customize option from the IDE. Select the Contents page and browse to the desired Orpheus\Help directory and load the *.CNT file. In the Index and Link pages, do the same thing with the *.HLP files. When you are finished, select File | Save Project.
Installing integrated help for Delphi 3
 To manually install the Orpheus help into Delphi 3, edit the Delphi3.cnt file (in the Delphi Help directory) and add the following line to the index section:
  :Index Orpheus Reference =orph32.hlp
 The first time you attempt to access Orpheus help, Delphi/Windows won’t be able to locate the help file and will ask if you want to find the file yourself. Answer yes to this question and browse for the Orpheus help file (ORPH32.HLP), which should be in the Orpheus/Help/Delphi directory. This step will only be required the first time you access Orpheus’ help.
Demonstration and example programs Look for a list of example programs in EXAMPLES.HLP in the ORPHEUS\EXAMPLES directory. Orpheus examples are provided for both Delphi and C++Builder.
 The demonstration programs are documented in“Chapter 34: Demo Programs” on page1277. The example programs are provided so you can see how to use the various Orpheus components. See the source code for these programs for more information.
Organization of this Manual  This manual is organized as follows:
1. Chapter 1 is the introduction.
2. Chapter 2 describes the base classes and components that are used by all of the Orpheus components.
3. Chapters 3 through 34 describe the Orpheus components.
4. Chapter 35 describes the components that have been deprecated in version 4.
5. Chapter 36 discusses several demonstration programs that provide good examples of how to use most of the Orpheus components.
6. A separate identifier index and subject index are provided.
Each chapter starts with an overview of the classes and components discussed in that chapter. The overview also includes a hierarchy for those classes and components. Each class and component is then documented individually, in the following format:
Overview
Hierarchy
Shows the ancestors of the class being described, generally stopping at a VCL class. The hierarchy also lists the unit in which each class is declared and the number of the first page of the documentation of each ancestor. Some classes in the hierarchy are identified with a number in a bullet:!. This indicates that some of the properties, methods, or events listed for the class being described are inherited from this ancestor and documented in the ancestor class.
Properties
Lists all the properties in the class. Some properties may be identified with a number in a bullet:!. These properties are documented in the ancestor class from which they are inherited.
Methods
Lists all the methods in the class. Some methods may be identified with a number in a bullet: !. These methods are documented in the ancestor class from which they are inherited.
Organization of this Manual 11
13
11
10
12
1
9
3
2
8
4
7
6
15
14
17
16
Events
Lists all the events in the unit. Some events may be identified with a number in a bullet:!.  These events are documented in the ancestor class from which they are inherited.
Exceptions
A list of all the exceptions generated by the class or component. All exceptions are documented in“Orpheus Exception Classes” on page 68.
Reference section
Details the properties, methods, and events of the class or component. These descriptions are in alphabetical order. They have the following format:
• Declaration of the property, method, or event.
• Default value for properties, if appropriate.
• A short, one-sentence purpose. A!symbol is used to mark the purpose to make it easy to skim through these descriptions.
• Description of the property, method, or event. Parameters are also described here.
• Examples are provided in many cases.
•  The“See also” section lists other properties, methods, or events that are pertinent to this item.
 Throughout the manual, the"symbol is used to mark a warning or caution. Please pay special attention to these items.
On-line help Although this manual provides a complete discussion of each component, keep in mind that there is an alternative source of information available. Help is available when you press <F1> with the caret positioned on the property, method, event, or component.
Naming conventions  To avoid class name conflicts with components and classes included with Delphi or from other third party suppliers, all Orpheus class names begin with “ TOvc” or“ TO32.” The “Ovc” stands for Orpheus Visual Component and O32 is for the new 32-bit Orpheus components. Source files also start with “Ovc” or “O32” to make it easier to distinguish Orpheus source files from other files.
12 Chapter 1: Introduction
13
11
10
12
1
9
3
2
8
4
5
7
6
15
14
17
16
“Custom” in a component name means that the component is a base class for descendent components. Components with“Custom” as part of the class name do not publish any properties; instead descendants will publish those properties that are applicable to the derived component. If you create descendent components, use these custom classes and publish only the properties that you need instead of descending from the component class itself.
Design conventions Within a class, Orpheus chooses between dynamic and virtual methods on the basis of performance requirements. Virtual methods are chosen for time-critical operations that might need to be overridden in descendants. Dynamic methods, which consume less code space, are used when performance is less important. Static methods are used when there is no reason ever to override the method.
All methods and variables in Orpheus are either public or protected (as opposed to private). If you look through the source code, you may come across sections of class declarations similar to this:
TOvcCustomEditor = class(TOvcEditBase)
protected   {private}
FAutoIndent : Boolean;
FBorderStyle : TBorderStyle;
FByteLimit : LongInt;
FFixedFont : TOvcFixedFont;
FHideSelection : Boolean;
FHighlightColors : TOvcColors;
FInsertMode : Boolean;
 These should be treated as private sections. In other words, you should not routinely access these variables or methods from descendant classes. The section is defined as protected rather than private to give you access in cases that we may not have anticipated. If you access a method or variable in one of these sections, you should do so as a last resort and only after investigating and understanding the potential effects on other areas of the component’s code.
Each Orpheus class may include additional fields and methods that are protected and are documented only in the source code. It is unlikely that you will ever need to use or understand these, but the interested programmer should study the source code for additional ideas.
 Technical Support 13
13
11
10
12
1
9
3
2
8
4
7
6
15
14
17
16
 Technical Support  The best way to get an answer to your technical support question is to post it in the Orpheus newsgroup on our news server (news.turbopower.com). Many of our customers find the newsgroups a valuable resource where they can learn from other’s experiences and share ideas in addition to getting answers to questions.
 To get the most from the newsgroups, we recommend that you use dedicated newsreader software. More newsgroup information can be found at www.turbopower.com/tpslive.
Newsgroups are public so please do not post your product serial number, 16-character product unlocking code or any other private numbers (such as credit card numbers) in your messages.
14 Chapter 1: Introduction
Chapter 2: Building Blocks
 This chapter provides information on the core classes and components used by nearly all Orpheus components. It describes the following components, classes, and routines:
•  TOvcCustomControl and the TOvcCustomControlEx are classes that are used as the basis for most of the components provided in Orpheus.
•  TOvcComponent is the base class for all non-visual components in Orpheus. It implements certain common data structures used internally by Orpheus and the About property which shows the current version.
•  TO32Component is a replacement for TOvcComponent. It is a base class for new non-visual components in Orpheus. It is identical to TOvcComponent except that it uses standard Delphi streaming.
•  TO32Control is the new version of the TOvcControl class. It provides all of the same functionality except it uses standard Delphi streaming.
•  TOvcController component is available to all components derived from the  TOvcCustomControlEx class. The TOvcController component provides a central location for error reporting and key-to-command translation.
•  TOvcGraphicControl is the ancestor for all the graphic controls in Orpheus that do not require a window handle.
•  The TOvcCommandProcessor allows you to use alternate keystrokes for nearly all data entry and component navigation tasks.
•  TOvcCollection and TOvcCollectible define classes that provide collections and the ability to stream those collections and their contents.
•  TO32Collection and TO32CollectionItem are replacements for the TOvcCollection and TOvcCollectible classes. They are direct descendants of the TCollection and
 TCollectionItem classes.
• Orpheus Date and Time Routines: The StDate unit is borrowed from our SysTools product to provide routines that allow you to store dates and times in compact formats, to convert them to other forms, and to perform date and time arithmetic.
• A hierarchical listing of all the exceptions defined by Orpheus is provided at the end of the chapter.
16 Chapter 2: Building Blocks
13
11
10
12
1
9
3
2
8
4
5
7
6
15
14
17
16
 TOvcCustomControl Class  TOvcCustomControl serves as a common base class for many of the Orpheus components. Its primary purpose is to provide the ability to display an attached label. See “ TOvcAttachedLabel Component” on page762 for more information.
Hierarchy  TCustomControl (VCL)
About shows the current version of Orpheus.
About is provided so you can identify your Orpheus version if you need technical support.  You can display the Orpheus about box by double-clicking this property or selecting the dialog button to the right of the property value.
AfterEnter event
property AfterEnter : TNotifyEvent
AfterEnter defines an event handler that is called after the component receives the focus.
Unlike the OnEnter event, which is called during the focus change, AfterEnter is not called until after the focus change is complete.
 TNotifyEvent is defined in the VCL’s Classes unit.
AfterExit event
property AfterExit : TNotifyEvent
AfterExit defines an event handler that is called after the component receives the focus.
Unlike the OnExit event, which is called during the focus change, AfterExit is not called until after the focus change is complete
 TNotifyEvent is defined in the VCL’s Classes unit.
AttachedLabel property
AttachedLabel provides access to the TOvcAttachedLabel component.
 The TOvcAttachedLabel is normally accessed only at design time, but this property makes it possible to alter the attached label at run-time if necessary.
See“ TOvcAttachedLabel Component” on page762 for more information.
!
!
!
!
13
11
10
12
1
9
3
2
8
4
5
7
6
15
14
17
16
LabelInfo provides access to the status of the attached label.
 TOvcLabelInfo (see page764) groups the Visible, OffsetX, and OffsetY properties that determine whether the attached label is visible and where it is positioned.
See also: AttachedLabel
Delta, XPos, YPos : SmallInt) of object;
OnMouseWheel defines an event handler that is fired when the mouse wheel is moved.
!
!
13
11
10
12
1
9
3
2
8
4
7
6
15
14
17
16
 TOvcCustomControlEx Class  TOvcCustomControlEx serves as a common base class for many of the Orpheus components. Its primary purpose is to provide a Controller property for all its descendants.
During the creation of any descendant of the TOvcCustomControlEx class, the parent form is searched for the existence of a TOvcController component. If one is found, it is assigned as the controller for this component. If no TOvcController component is found, one is created and is then assigned as the controller for this component. See“ TOvcController Component” on page28 for additional information.
Hierarchy  TCustomControl (VCL)
!  TOvcCustomControl (OvcBase). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
13
11
10
12
1
9
3
2
8
4
5
7
6
15
14
17
16
Default: The first TOvcController object on the form.
Controller is the TOvcController object that is attached to this component.
!
 TOvcComponent Class  TOvcComponent is the base class for all non-visual components in Orpheus. It implements certain common data structures used internally by Orpheus and the About property which shows the current version.
Hierarchy  TComponent (VCL)
13
11
10
12
1
9
3
2
8
4
5
7
6
15
14
17
16
About shows the current version of Orpheus.
!
13
11
10
12
1
9
3
2
8
4
7
6
15
14
17
16
 TO32Component Class  TO32Component is a replacement for the TOvcComponent class. It is a direct descendant of the TComponent class and is identical to TComponent except that it implements the Orpheus About property. It differs from the TOvcComponent class in that it uses standard VCL streaming instead of the old Orpheus specific streaming methods which were used to support Delphi 1 and 2.
Hierarchy  TComponent (VCL)
13
11
10
12
1
9
3
2
8
4
5
7
6
15
14
17
16
About shows the current version of Orpheus.
!
 TO32CustomControl Class  The TO32CustomControl is a replacement for the TOvcCustomControl class. It provides all of the same benefits as the TOvcCustomControl except that it uses standard VCL streaming.
Hierarchy  TCustomControl (VCL)
13
11
10
12
1
9
3
2
8
4
5
7
6
15
14
17
16
About shows the current version of Orpheus.
About is provided so you can identify your Orpheus version if you need technical support.  You can display the Orpheus about box by double-clicking this property or selecting the dialog button to the right of the property value.
AfterEnter event
property AfterEnter : TNotifyEvent
AfterEnter defines an event handler that is called after the component receives the focus.
Unlike the OnEnter event, which is called during the focus change, AfterEnter is not called until after the focus change is complete.
 TNotifyEvent is defined in the VCL’s Classes unit.
AfterExit event
property AfterExit : TNotifyEvent
AfterExit defines an event handler that is called after the component receives the focus.
Unlike the OnExit event, which is called during the focus change, AfterExit is not called until after the focus change is complete.
 TNotifyEvent is defined in the VCL’s Classes unit.
AttachedLabel property
AttachedLabel provides access to the TOvcAttachedLabel component.
 The TOvcAttachedLabel is normally accessed only at design time, but this property makes it possible to alter the attached label at run-time if necessary.
See“ TOvcAttachedLabel Component” on page762for more information.
!
!
!
!
LabelInfo provides access to the status of the attached label.
 TOvcLabelInfo (see page764) groups the Visible, OffsetX, and OffsetY properties that determine whether the attached label is visible and where it is positioned.
See also: AttachedLabel
Delta, XPos, YPos : Word) of object;
OnMouseWheel defines an event handler that is fired when the mouse wheel is moved.
!
!
13
11
10
12
1
9
3
2
8
4
5
7
6
15
14
17
16
 TOvcController Component  The TOvcController serves a crucial role for many of the Orpheus components by providing a central location for error reporting and key-to-command translation.
Many Orpheus components that require user input via the keyboard employ the key-to- command translation facilities provided by the EntryCommands property. The configurable key-to-command translation tables allow you to produce applications that can load and use different command tables instead of the ones compiled into the application.
In some situations it might be necessary to attach components from several forms to a common controller on a different form or data module. This can be done by selecting the File|Use Unit menu item in Delphi. In C++Builder, select the File| Include Unit Hdr menu item. The MDIEDIT demo program demonstrates how to assign the Controller at run time.
See“ TOvcCommandProcessor Class” on page50 for additional information.
Hierarchy  TComponent (VCL)
!  TOvcComponent (OvcBase) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
procedure DelayNotify (Sender : TObject; NotifyCode : Word);
DelayNotify starts the chain of events that will fire the OnDelayNotify event.
Sender is intended to be the object where the call takes place, but can be any data that you care to have passed to the OnDelayNotify event. NotifyCode is intended to provide a value to the OnDelayNotify event that will indicate the purpose of the notification. After calling DelayNotify, a message is posted using PostMessage (not sent using SendMessage or Perform) to the controller. (Posting allows other messages in the message queue to be processed.)
EntryCommands property
EntryCommands provides keystroke to command translation.
!
!
13
11
10
12
1
9
3
2
8
4
5
7
6
15
14
17
16
efoAutoAdvanceChar, efoAutoAdvanceLeftRight,
efoAutoAdvanceUpDown, efoAutoSelect,
efoBeepOnError, efoInsertPushes);
EntryOptions determines options for all entry fields that use this controller.
Each of these options is described in the following table:
Option Description
efoAutoAdvanceChar This option determines what happens if the
caret is at the end of the entry field and you
enter another character. If set, the focus is
advanced to the next component in the tab
order (the equivalent of pressing <Tab>).
Otherwise, the caret remains where it is.
efoAutoAdvanceLeftRight This option determines what happens if the
caret is at the beginning or end of the entry
field and a cursor movement command is issued.
The first case to consider is when the caret
is at the beginning of the field and a command
that would normally move the caret to the left
is issued. If AutoAdvanceLeftRight is True,
the focus is moved to the previous component
in the tab order (the equivalent of pressing
<Shift><Tab>). If AutoAdvanceLeftRight is
False, the caret remains where it is. The
second case to consider is when the caret is
at the end of a field and a command that would
normally move the caret to the right is
issued. If AutoAdvanceLeftRight is True, the
focus is advanced to the next component in the
tab order (the equivalent of pressing <Tab>).
If AutoAdvanceLeftRight is False, the caret
remains where it is.
change the focus. If AutoAdvanceUpDown is
True, the <Up> key is treated the same as
<ShiftTab>, which moves the focus to the
previous component on the form, and the <Down>
key is treated the same as <Tab>, which moves
the focus to the next component on the form.
When you set ArrowIncDec to True,
AutoAdvanceUpDown is automatically set to
False because the up and down arrow keys
cannot be used for both purposes at once.
Conversely, when you set AutoAdvanceUpDown to
True, ArrowIncDec is set to False.
efoAutoSelect This option determines whether the field is
selected when it receives the focus. If
AutoSelect is True, the contents of the field
are selected when the field receives the
focus. This does not apply if the field is
selected using the mouse.
sounded when an invalid character is entered.
If BeepOnError is True, MessageBeep is called
when an invalid character is entered (for
example, if <A> is entered in a numeric field)
or when a character is entered and the field
is full (and the InsertPushes property is set
to False).
characters are entered into a completely
filled entry field. If InsertPushes is True,
as it is by default, and a character is
entered into a full entry field (or subfield),
a character at the right-most position in the
field (or subfield) is “pushed” off the end.
If InsertPushes is False, characters entered
into a full entry field (or subfield) are
ignored.
13
11
10
12
1
9
3
2
8
4
5
7
6
15
14
17
16
Epoch specifies the starting year of a 100 year period.
ErrorPending run-time property
property ErrorPending : Boolean
ErrorPending indicates whether an entry field has generated an error.
 This property is set to True when an Orpheus entry field fails validation or False if the field validation detects no errors. Other components, such as the notebook and table, use this property to detect errors in components that they own.
ErrorText run-time property
property ErrorText : string
ErrorText allows the user to set an error message from a UserValidation routine.
 The ErrorText property provides a location that user error handlers can store error text for use by an OnError event handler. The string would be assigned in the user validation routine:
Controller.ErrorText := 'error message';
 This string is later passed to the OnError event handler.
 This property will always contain text from the last error unless explicitly cleared.
See also: OnError
InsertMode run-time property
property InsertMode : Boolean
InsertMode indicates insert or overwrite mode.
 This property is checked by the entry field and the editor components each time they receive the focus to determine the insert/overwrite state. It also allows the insert or overwrite state of all components using this controller to be changed when any one component changes its insert or overwrite state.
IsSpecialButton virtual method
function IsSpecialButton(H : hWnd) : Boolean;
IsSpecialButton determines whether the specified window handle is one of the button components for a special button.
IsSpecialButton returns True if the OnIsSpecialControl event handler returns True. Otherwise, it returns False.
Note: This method is used by the Orpheus entry fields to determine if validation should be performed.
MarkAsUninitialized method
MarkAsUninitialized flags all entry fields as uninitialized.
 This method cycles through all entry field components on the form, setting their Uninitialized property to the value contained in the Uninitialized parameter.
Note: This method sets the Uninitialized property for all fields on the form at the same time. If you don’t need to set the Uninitialized property for all fields at once, you can directly set the Uninitialized property for the necessary fields.
See also: TOvcBaseEntryField.Uninitialized
13
11
10
12
1
9
3
2
8
4
5
7
6
15
14
17
16
Sender : TObject; NotifyCode : Word) of object;
OnDelayNotify provides an event that is fired by calling the DelayNotify method.
OnError event
const ErrorMessage : string) of object;
OnError defines an event handler that is called when an error occurs.
 The method assigned to the OnError event is called by Orpheus entry fields when field validation (or user validation) detects an error. Sender is the component that generated the error. ErrorCode is one of the error codes defined in the OvcData unit or a user-defined error value. ErrorMessage is a string that describes the error.
 The following example displays an error reporting dialog that informs the user of an error generated by an entry field:
procedure
try
ErrorDlg.ShowModal;
finally
ErrorDlg.Free;
end;
end;
Sender : TObject; var Epoch : Integer) of object;
OnGetEpoch defines an event handler that allows you to provide the Epoch value used by other Orpheus controls.
 The Epoch value and its use is discussed in the“ The Epoch property” on page321.
OnIsSpecialControl event
var Special : Boolean) of object;
OnIsSpecialControl defines an event handler that allows you to specify that the passed Control should receive special treatment.
Setting the Special property to True informs the Sender not to perform validation on the field that is about to lose the focus.
Control is the control that is about to receive the focus. If you do not wish validation performed when the focus is moving to this control, set Special to True.
OnPostEdit event
Sender : TObject; GainingControl : TWinControl) of object;
OnPostEdit defines an event handler that is called when the focus changes.
 The method assigned to the OnPostEdit event is called to provide notification when an entry field loses the focus. Sender is the component that lost the focus. GainingControl is the component that received the focus, or nil if there is no gaining control.
Unlike the OnExit event, which is called during the focus change, the OnPostEdit event is called after the focus change is complete.
!
!
!
13
11
10
12
1
9
3
2
8
4
5
7
6
15
14
17
16
 The following example displays the name of the entry field that is losing the focus:
procedure
end;
Sender : TObject; LosingControl : TWinControl) of object;
OnPreEdit defines an event handler that is called when the focus changes.
 The method assigned to the OnPreEdit event is called to provide notification when an entry field component receives the focus. Sender is the component that received the focus. LosingControl is the component that lost the focus, or nil if there is no losing control.
Unlike the OnEnter event, which is called during the focus change, the OnPreEdit event is called after the control receives the focus.
Use the OnPreEdit event when you perform the same pre-focus processing actions for multiple entry fields. If you need to perform pre-focus processing for a single entry field component, use its AfterEnter event.
 The following example displays the name of the entry field that is gaining the focus:
procedure
property OnTimerTrigger : TTriggerEvent
OnTimerTrigger defines an event handler that is called when a timer pool trigger occurs.
 The method assigned to the OnPreEdit event is attached (internally) to the timer pool’s OnAllTriggers event and provides notification of all timer pool triggers.
See“ TOvcTimerPool Component” on page864 for information on how to use the timer pool class.
See also: TimerPool
 TimerPool run-time property
property TimerPool : TOvcTimerPool
 TimerPool allows access to the contained TOvcTimerPool object.
 This property allows other Orpheus components to access a common timer pool instance.
See“ TOvcTimerPool Component” on page864 for information on how to use the timer pool class.
See also: OnTimerTrigger
ValidateEntryFields asks each entry field to validate its contents.
 The ValidateEntryFields method cycles through all the components on the form looking for any Orpheus entry fields. When one is found, ValidateEntryFields asks the entry field to validate itself. If the result of the validation is an error, ValidateEntryFields stops cycling through the components and returns the entry field component that reported the error. If there are no entry fields on the form or if all entry fields are valid, ValidateEntryFields returns nil.
If an error is detected, it is reported via default error handling or by calling the OnError event handler. The focus is moved to the field that generated the error.
 This method is typically used to verify that all entry fields on the form contain valid data prior to actually closing the form and processing its data. Your code should exit and allow the user to correct the error if ValidateEntryFields returns a non-nil value.
See also: TOvcBaseEntryField.ValidateSelf, ValidateEntryFieldsEx
13
11
10
12
1
9
3
2
8
4
5
7
6
15
14
17
16
ValidateEntryFieldsEx asks each entry field to validate its contents and provides control over error reporting and focus.
ValidateEntryFieldsEx works just like ValidateEntryFields, but it also allows you to control whether an error is reported (set ReportError to True) and whether the focus is forced back to the field containing the error (set ChangeFocus to True).
See also: ValidateEntryFields
ValidateTheseEntryFields asks the specified entry fields to validate their contents.
!
!
13
11
10
12
1
9
3
2
8
4
7
6
15
14
17
16
 TOvcCollection Class  TOvcCollection implements Orpheus collections. A collection is a series of component instances of the same type that are automatically streamed as child components by the component, which owns the collection.
Hierarchy  TPersistent (VCL)
13
11
10
12
1
9
3
2
8
4
5
7
6
15
14
17
16
Item property
Item returns a particular item in the collection.
ItemClass property
ItemClass returns the type of the items in the collection.
OnChanged event
property OnChanged : TNotifyEvent
OnChanged is called whenever a published property for an item in the collection changes.
Owner property
property Owner : TComponent
!
!
!
!
!
13
11
10
12
1
9
3
2
8
4
7
6
15
14
17
16
 TOvcCollectible Class  TOvcCollectible is the base class for components that are items in Orpheus collections. Examples of this include field definitions in ReportViews, and sections in the button header.
Hierarchy  TComponent (VCL)
!  TOvcComponent (OvcBase) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
13
11
10
12
1
9
3
2
8
4
5
7
6
15
14
17
16
property Collection : TOvcCollection
Collection refers to the collection, which is the owner of the current item.
DisplayText run-time, read-only property
property DisplayText : string
DisplayText is used by the standard collection editor to retrieve an item display string.
Index property
property Index : Integer
Index determines the position of the collectible in the owner collection.
Index is not published but is stored implicitly by the collections as the sequence in which collectibles are streamed.
Name property
Name determines the name of the collectible.
!
!
!
!
Hierarchy  TComponent (VCL)
13
11
10
12
1
9
3
2
8
4
5
7
6
15
14
17
16
property Collection : TOvcCollection
Collection refers to the collection which is the owner of the current item.
DisplayText run-time, read-only property
property DisplayText : string
DisplayText is used by the standard collection editor to retrieve an item display string.
Index property
property Index : Integer
Index determines the position of the collectible in the owner collection.
Index is not published but is stored implicitly by the collections as the sequence in which collectibles are streamed.
Name property
Name determines the name of the collectible.
!
!
!
!
 TO32Collection Class  TO32Collection is a replacement for the TOvcCollection and TOvcCollectible classes.  TO32Collection is a direct descendant of the TCollection and TCollectionItem classes and as such implement standard VCL streaming. It serves as a replacement for the
 TOvcCollection class.
13
11
10
12
1
9
3
2
8
4
5
7
6
15
14
17
16
function Add : TO32CollectionItem;
Add creates a new item in the collection and returns a reference to it.
Count property
Item property
Item returns a particular item in the collection.
ItemByName method
function ItemByName(Name: String); TO32CollectionItem;
Returns a reference to the item specified by Name. If Name is an empty string then ItemByName returns nil.
ItemClass property
ItemClass returns the type of the items in the collection.
OnChanged event
property OnChanged : TNotifyEvent
OnChanged is called whenever a published property for an item in the collection changes.
Owner property
property Owner : TPersistent
!
!
!
!
!
!
!
function ParentForm: TForm;
Returns a reference to the parent form of the control which owns the collection.
ReadOnly property
property ReadOnly : Boolean
!
!
13
11
10
12
1
9
3
2
8
4
5
7
6
15
14
17
16
 TO32CollectionItemClass  TO32CollectionItem is a replacement for the TOvcCollection and TOvcCollectible classes. It is a direct descendants of the TCollection and TCollectionItem classes and as such implement standard VCL streaming. TO32CollectionItem is the base class for components that are items in Orpheus 4.0 collections. Examples of this include folder and items in the lookout bar component.
Hierarchy  TCollectionItem (VCL)
About shows the current version of Orpheus.
About is provided so you can identify your Orpheus version if you need technical support.  The Orpheus about box can be displayed by double-clicking this property or selecting the dialog button to the right of the property value.
DisplayText property
property DisplayText : string
Returns the text that will be displayed in relation to the item.
A common use of DisplayText is in the TO32LookoutBar Folders and Items. DisplayText is the value that is displayed on the folder buttons and adjacent to each item.
Name property
!
!
!
13
11
10
12
1
9
3
2
8
4
5
7
6
15
14
17
16
 TOvcCommandProcessor Class  The command processor allows your applications to provide a unique ability that is not found in other Windows programs. You can define and use alternate keystrokes for nearly all data entry and component navigation tasks. And with only a small programming effort, you can give your users the capability too. The TOvcCommandProcessor class provides key-to-command mapping.
 TOvcCommandProcessor is used by nearly all the Orpheus components that do not descend from one of the VCL components. Three built-in command tables provide key-to- command mapping for the Orpheus components. The Default Command Table is used by all the Orpheus components except TOvcTable. The WordStar Command Table provides command-key mappings for the common WordStar key sequences. The Grid Command
 Table is used by the TOvcTable component. These command tables can be modified (at design time or at run time), deleted, replaced, stored, and read from disk. You can add your own command tables and design your applications so that your users can configure the command tables.
 TOvcCommandProcessor translates Windows messages to commands for the Orpheus components. Message structures are passed to the command processor’s Translate method which then searches its active command tables for an entry that matches the key sequences stored in the message structure. If one is found, the corresponding command is returned to the calling component.
An instance of the TOvcCommandProcessor is created and owned by each TOvcController component. Other Orpheus components have access to the command processor through their Controller property.
Commands Each command table consists of one or more key-to-command mappings, where keys are assigned to the commands listed in the following table. The commands are Word constants that are defined in the OvcConst unit.
 TOvcCommandProcessor Class 51
13
11
10
12
1
9
3
2
8
4
7
6
15
14
17
16
Some commands apply only to specific components, as shown in Table 2.4 (e.g., the ccBotRightCell command is processed only by the table component). The components that use each command are listed by code in the“Used By” column. A description of the codes follows the table.
 Table 2.1:Com ponent specific comm and s
Command Value Used By Description
ccNone 0 No command or an unknown key
sequence.
left of the caret.
ccBotOfPage 2 ed, vw Move the caret to the bottom
of the window.
ccBotRightCell 3 tbl Move the focus to the cell at
the bottom-right of the
month, or year (depending on
the position of the caret) in
a date picture field or array
editor. Or, if the field is
selected, replace the
minute, or second (depending
array editor. Or, if the
field is selected, replace
the selection with the
clipboard.
control character.
ccDec 9 ae, ef Decrement the current value
by one ordinal amount.
13
11
10
12
1
9
3
2
8
4
5
7
6
15
14
17
16
delete the selection.
ccDelBol 11 pf,
the line.
position to the end of the
line.
of the caret.
vw), the next component (ef),
the next list item (ae, vlb),
the next week (cal), the next
tab (nbk), or the next row
(tbl).
field (pf, pfae, sf, sfae),
last day of the month (cal),
last item in the list (vlb),
last tab (nbk), last column
(tbl).
bottom of the page.
ccExtendDown 17 ed, tbl,
the next line (ed, vw), the
next list element (vlb), or
the next row (tbl).
ccExtendEnd 18 ae, ed,
end of the field (ae, ef),
the end of the current line
(ed, vw), the last list item
(vlb), or the last column
(tbl).
 Table 2.1:Com ponent specific comm and s ( conti nu ed)
Command Value Used By Description
 TOvcCommandProcessor Class 53
start of the field (ae, ef),
the start of the current line
(ed, vw), the first list item
(vlb), or the first column
(tbl).
character (ae, ed, ef, vw) or
left one column (tbl).
ccExtendPgDn 21 ed, tbl,
page.
page
vw) or right one column (tbl.
ccExtendUp 24 ed, tbl,
line (ed, vw), on