diff --git a/FoxBin2PRGVersionFile.txt b/FoxBin2PRGVersionFile.txt new file mode 100644 index 0000000..57e653d --- /dev/null +++ b/FoxBin2PRGVersionFile.txt @@ -0,0 +1,246 @@ +Lparameters toUpdateInfo + +Local lcNote +With toUpdateInfo + .VersionNumber = 'v1.19.23' + .VersionDate = Date(2014,06,07) + .SourceFileUrl = 'http://vfpxrepository.com/dl/thorupdate/Projects/FoxBin2Prg/FoxBin2Prg.Zip' + + .Link = 'http://vfpx.codeplex.com/wikipage?title=FoxBin2PRG' + .LinkPrompt = 'FoxBin2Prg Home Page' +EndWith + +Text to lcNote NoShow +2-way conversor for Visual FoxPro 9 binary files intended to be used with SCM tools (Diff and Merge operations) or just for backup + +Demo video using FoxBin2Prg with PlasticSCM: http://youtu.be/sE4wQ50Itqg + +Change History ------------------------------------------------------------- + +2014/06/07 v1.19.23 +- Timestamps and UniqueIds values are back on binaries, and they are just cleaned up on tx2 files if NoTimestamps and ClearUniqueID flags are set. This minimizes some differences on the binary side. +- Added sccdata default value when regenerating PJX binary (which is automatically completed on the PJX when opened anyway) +- Fixed timestamp evaluation for "OptimizeByFilestamp" optimization that evaluates just .??X files, and now .??T (memo) filestamps are evaluated too +- Fixed missing BordeCcolor property on props_optiongroup.txt file +- Fixed missing Stretch property on props_image.txt file (Kenny Vermassen) +- Fixed missing Enabled property on props_image.txt file + +2014/05/17 v1.19.22 +- Bug Fix vcx/scx: Picture property of a form class does not show the image. Does not happen with control pictures (Fidel Charny) +- Bug Fix scx/vcx: Incorrect detection of PROCEDURE/ENDPROC/TEXT/ENDTEXT that can cause lost of some methods in some circunstantes (Andres Mendoza) +- Bug Fix scx/vcx: Some options from the optiongroup control loose there width when subclassed from a class with autosize=.T. (Miguel Duran) +- Added evaluation and generation of properties by classtype, when applicable +- Added support of property evaluation from external file (props_*.txt) +- Added enhanced Unit Tests of bitmap comparisons of screen captures before/after (the original is compared with the regenerated of the regenerated binary, for more accuracy) +- A lot of garbage collect optimizations all over the code +- Added Unit Testing of configuration by defaults, by file and by parameters +- Added Unit Testing for checking the generation of classes, forms, reports and menus +- Added new switch OptimizeByFilestamp (active by default) for making possible deactivation of this regeneration optimization by file timestamp, in case someone wants to force regeneration allways + +2014/05/01 v1.19.21 +- Added support to convert to text or binary all files of a project from pjx or pj2 (Matt Slay) +- Added optimization on the search of the capitalization program when processing projects +- Added keyword AGAIN on table openings, for enhancing concurrence (Jim Nelson) +- Added optimization based on file timestamps for regenerating only newer binaries and tx2 files (Matt Slay) +- Added English translation in foxbin2prg_en.h for the LOG message of new timestamp optimization +- section simplification: Methods and arrays doesn't require preceding * and ^ symbols anymore. + +2014/04/17 v1.19.20 +- New: CDX filename in DB2 files have relative paths now. This help show less differences when regenerating DB2 files from different paths + +2014/04/02 v1.19.19 +- New: DBF Hook that let intercalate a personalized process between DBF creation and index creation when processing a DB2 file (example program in "tests\demo_hook_dbf.prg" included) + +2014/03/25 v1.19.18 +- Bug Fix vcx/scx: Image controls with stretched icons or images, get redimensioned to original size when regenerating binary (Arturo Ramos) +- Bug Fix vcx/scx: Library level comments are not kept (Ryan Harris) + +2014/03/16 v1.19.17 +- Bug Fix frx/lbx: Double-quoted expressiones make fx2/lb2 files corrupt (Ryan Harris) +- Bug Fix frx/lbx: Multiline Comments are lost (Ryan Harris) +- frx/lbx tag2 field enhance: when used for tooltips, real values are shown in regards of b64 normal encoding +- Bug Fix mnx: Multiline Comments on Bars/Pads makes MN2 file corrupt (Ryan Harris) +- Bug Fix mnx: Some procedures doesn't generate correctly (Ryan Harris) +- English translation file foxbin2prg_en.h syntax corrected (Ryan Harris) +- Bug Fix vcx/scx: Lowercase saved Dataenvironment property causes Reserved2 value to be not calculated +- Bug Fix frx: character on print condition on field makes fr2 file corrupt +- Bug Fix mnx: Using double-quotes on prompt option fields makes mn2 file invalid (Ryan Harris) + +2014/03/10 v1.19.16 +- Bug Fix vcx/scx: properties loose there hidden/protected visibility when no default value assigned (Ryan Harris) +- Bug Fix vcx/scx: character value with length >255 in addobject property regenerates with tag included (Ryan Harris) +- Bug Fix vcx/scx: When regenerating binari file with empty procedure makes FoxPro crash when trying to modify it on IDE +- Bug Fix scx/vcx: Binary can be corrupted if the class have a multiline comment (Tested on: Ffc\_frxcursor.vcx) +- Bug Fix: If _memberdata contains CR inside there values, they can be lost when regenerating tx2 text files +- Bug Fix: Property values with spaces at the right loose this spaces +- Bug Fix: When 2 or more methods share the same name (ej: met and met2) tx2 text file gets corrupted (Ryan Harris) + +2014/03/04 v1.19.15 +- Bug Fix: OLE information cleared when a legacy TX2 is processed +- Bug Fix: Default value of NoTimestamp = 0 ==> Now is 1, as should be +- Bug Fix: DBFs backlink info cleared when DBC is recreated (Ryan Harris) +- Feature: Lowercase capitalization in tx2 filename headers to minimize differences + +2014/03/01 v1.19.14 +- Load of configuration is optimized (foxbin2prg.cfg) to read cfg only once for a massive processing of multiple conversions +- .vbs scripts have been modified to respect the conversion support configuration defined in foxbin2prg.cfg configuration file +- 2 new functions where added to enhance and encapsulate the external use of the evaluation of the conversion support (requires previous call to EvaluarConfiguracion()). Used on .vbs scripts +- ExtraBackupLevels Regression: when no defined value, no backup is made +- New default value ClearUniqueID = 1 in foxbin2prg.cfg for minimizing differences in the SCM + +2014/02/26 v1.19.13 +- Bug Fix: If NoTimestamp setting of foxbin2prg.cfg is changed, opposite value is evaluated (Ryan Harris) +- Encapsulated foxbin2prg.cfg file for enhancing FoxUnit automated testing +- Internal change of property l_UseTimestamps by l_NoTimestamps +- With ExtraBackupLevels setting you can now deactivate backups if setting to 0 (Ryan Harris proposal) +- foxbin2prg.log file checking dropped, to activate the log file use foxbin2prg.cfg setting Debug=1 +- In TX2 header files show the file without path, because genereting it from different places makes unnecesary differences in Diff (Ryan Harris proposal) +- Created a lot of FoxUnit automated tests to check all settings of foxbin2prg.cfg configuration file + +2014/02/23 v1.19.12 +- Generation of VC2/SC2 with new header metadata for centralizing uniqueid, timestamp and ZOrder and big reduce of differences in a diff/merge (enhancement proposed by Ryan Harris) +- BINARY regeneration from the new metadata header (remains compatible with old VC2/SC2) +- FoxUnit test cases fixed for the new functionality +- Cleaning, Refactorization and optimization of Code +- Presentation enhancement of VC2/SC2 file headers + +2014/02/13 v1.19.11 +- WITH/ENDWITH optimizations with a conversion performance gain up to 16% more fast +- Bug Fix: Just one level of #IF was contemplated, throwing an error if more levels are nested +- Bug Fix: When regenerating the PJX, default home directory not always was correct +- New FoxUnit automated test added to check bug fix of nested #IF + +2014/02/09 v1.19.10 +- Added parametrization to enable configuration support for each kind of binary (0=None, 1=Only TX2, 2=TX2 and Binary) +- Fixed default NoTimestamps setting +- EXPERIMENTAL: Added new configuration parameter "ClearUniqueID" in foxbin2prg.cfg for Clearing UniqueID in binaries and text versions. Works well and apparently FoxProdoesn't make use of it, but more testing is required +- Adjusted some FoxUnit test cases + +2014/02/08 v1.19.9 +- New configuration items in foxbin2prg.cfg +- Localization Bug: When recompiling with localization file foxbin2prg_en.h renamed to foxbin2prg.h, syntax error occurs +- Debug information of .LOG files enhanced +- New parametrization for the number of backups, now just one .BAK by default (earlier was 10) +- Enabled configuration file foxbin2prg.cfg by default +- Change in default behavior: Now Timestamps are disabled by default. You can change this on foxbin2prg.cfg + +2014/02/03 v1.19.8 +- Bug fix: ActivePage error when executing a regenerated binary with a PageFrame / New FoxUnit test to test solution +- Added cNoTimestamps='1' to batch conversion vbs scripts + +2014/02/02 v1.19.7 +- Added Ole encapsulation in just 1 place +- Adjusted Blocksize of generated binaries +- New cNoTimestamps parameter. If '1' is given, then no timestamps are generated (useful for diff/merge) + +2014/01/31 v1.19.6 +- Added SourceSafe support (SCCAPI) for Diff and Merge +- SCX bug fix: Dataenvironment sometimes doesn't regenerates correctly +- Functionality change: Automatic recompilation enabled by default again because some methods doesn't show on form edit. Can be deactivated passing '0' to cRecompile param + +2014/01/26 v1.19.5 +- Added Multilanguage support and Localization file for English. To use it rename the new file foxbin2prg_en.h to foxbin2prg.h and recompile + +2014/01/24 v1.19.4 +- New "Recompile" parameter for recompiling from PJX directory (if provided) +- Functionality change: Now FoxBin2Prg does not recompile bins for default, because it do on bin dir and that can throw compilation errors. Use new parameter if needed or recompile by your own +- DBC: Added support for multiline "comment" property +- VBS Batch scripts: Added progress bar + +2014/01/18 v1.19.3 +- Change on TXT timestamps to preserve empty values that can save a lot of differences when diff/merging. Previously empty timestamps get converted to datetime +- Optimization on TXT generation of ZOrders + +2014/01/13 v1.19.2 +- Fix on PJX regeneration caused for something missing in the last change of "Autor" to "Author" + +2014/01/08 v1.19.1 +- Small change on TX2 headers to drop the "Generated" timestamp that causes innecesary differences / Updated the EXE version with the correct one + +2014/01/08 v1.19 +- Added new debug flag on .vbs scripts to show a "End process" message for batch processing +- Bug Fix scx/vcx: Improper order of Reserved3 props cause event access to not fire +- Bug Fix dbf: Improper index generated when the type is Candidate +- Added support for converting SourceSafe PJM to FoxBin PJ2 +- Added validation for Menus when converting from older versions, so user can convert it to VFP 9 format first +- Change in MN2 property: "Autor" was changed to "Author". You can add the missing letter to MN2 or regenerate + +2014/01/07 v1.18.1 +- Added a vbs script (Normalize_FileNames.vbs) for FileNames normalizing in batch mode, and updated FileName_Caps.exe and the call on FoxBin2prg + +2014/01/06 v1.18 +- mnx bug fix: Generation of DO Procedure or Command when no Procedure or Command available to call when empty option is created (Fidel Charny) +- Added support for DBFs earlier than VFP 9 for generating DB2 text, but DBF regeneration is in VFP 9 version! +- dbf bug fix: DBFs linked to a DBC that use long field names throw error when regenerating DBFs +- dbf bug fix: Some view info is lost when generating text from DBC + +2014/01/03 v1.17 +- mnx bug fix: Location value is lost and some menus doesn't render properly (Fidel Charny) +- Added 2 VB scripts (Convert_VFP9_BIN_2_PRG.vbs and Convert_VFP9_PRG_2_BIN.vbs) for batch converting of dirs and files if a shortcut is placed on "SendTo" user folder +- Added new Unit Testing cases for menus + +2014/01/02 v1.16 +- Added support for Menus (MNX) + +2013/12/18 v1.15 +- Added support for DBF, DBC and CDX binaries + +2013/12/15 v1.14 +- scx bug fix: autocenter property do nothing (Arturo Ramos) +- scx bug fix: Last COMMENT record is lost (Fidel Charny) + +2013/12/08 v1.13 +- frx/lbx bug fix: "Error 1924, TOREG is not an object" on some reports (Fidel Charny) + +2013/12/08 v1.12 +- Added support for Reports (FRX) and Labels (LBX) + +2013/12/08 v1.11 +- scx/vcx bug fix: _memberdata value corrupted when the value is a long one (Edgar Kummers) + +2013/12/07 v1.10 +- scx/vcx bug fix: when there are methods with the same name, there code is assigned to erroneous objects (Fidel Charny) + +2013/12/07 v1.9 +- scx/vcx bug fix: last fix keep loosing some properties (Fidel Charny) + +2013/12/06 v1.8 +- scx/vcx bug fix: last fix keep loosing some properties (Fidel Charny) +- sort function encapsulated and reused on BIN and TXT generation for safety + +2013/12/03 v1.7 +- vcx/scx bug fix: some properties get lost and picture clause is not displayed if "Name" is not the last property on memo (Fidel Charny) +- Added verification of readOnly files and report this to Log file in debug mode + +2013/12/02 v1.6 +- Complete refactoring of BIN and TXT generation +- Changes of various algorithms +- scx/vcx bug fix: Array properties didn't save (Fidel Charny) +- Unit testing cases with FoxUnit + +2013/11/27 v1.5 +- Bug fix: On some forms dataenvironment didn't regenerate appropiately (Luis Martínez) + +2013/11/27 v1.4 +- Added mask support +- Added support for extension configuration on file foxbin2prg.cfg, so one can use "vca" instead of "vc2", etc +- Added support for a new parameter for Log generation + +2013/11/24 v1.3 +- Bug fixes, code cleaning, refactoring + +2013/11/24 v1.2 +- Bug fixes, code cleaning, refactoring + +2013/11/22 v1.1 +- Bug fixes + +2013/11/22 v1.0 +- Initial creation of clases on prg and support of VCX/SCX/PJX files + +EndText + +AddProperty(toUpdateInfo, 'Notes', lcNote) + +Execscript (_Screen.cThorDispatcher, 'Result=', toUpdateInfo) +Return toUpdateInfo diff --git a/TESTS/DATOS_READONLY/bmps/vfpxlogo.bmp b/TESTS/DATOS_READONLY/bmps/vfpxlogo.bmp new file mode 100644 index 0000000..e92fa9e Binary files /dev/null and b/TESTS/DATOS_READONLY/bmps/vfpxlogo.bmp differ diff --git a/TESTS/DATOS_READONLY/f_form_aa.sc2 b/TESTS/DATOS_READONLY/f_form_aa.sc2 index 6cb0b02..3111f33 100644 --- a/TESTS/DATOS_READONLY/f_form_aa.sc2 +++ b/TESTS/DATOS_READONLY/f_form_aa.sc2 @@ -19,6 +19,7 @@ DEFINE CLASS f_form_aa AS f_base OF "lib_controles.vcx" *< CLASSDATA: Baseclass="form" Timestamp="" Scale="" Uniqueid="" /> *-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder + *< OBJECTDATA: ObjPath="Cl_image1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Cl_grid1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Cl_grid1.Column6.Header1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Cl_grid1.Column6.Text1" UniqueID="" Timestamp="" /> @@ -41,8 +42,9 @@ DEFINE CLASS f_form_aa AS f_base OF "lib_controles.vcx" *< OBJECTDATA: ObjPath="pgf.Page1.spinner" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="pgf.Page1.textbox" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="pgf.Page1.timer" UniqueID="" Timestamp="" /> - *< OBJECTDATA: ObjPath="pgf.Page1.Pageframe1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="pgf.Page1.Cl_optiongroup1" UniqueID="" Timestamp="" /> + *< OBJECTDATA: ObjPath="pgf.Page1.Pageframe1" UniqueID="" Timestamp="" /> + *< OBJECTDATA: ObjPath="Image1" UniqueID="" Timestamp="" /> * *m: add_control @@ -99,7 +101,7 @@ DEFINE CLASS f_form_aa AS f_base OF "lib_controles.vcx" FontUnderline = .F. ForeColor = 0,0,0 HalfHeightCaption = .F. - Height = (424) + Height = (460) HelpContextID = 0 HScrollSmallChange = 10 Icon = bmps\container.ico @@ -146,7 +148,7 @@ DEFINE CLASS f_form_aa AS f_base OF "lib_controles.vcx" WhatsThisButton = .F. WhatsThisHelp = .F. WhatsThisHelpID = -1 - Width = (980) + Width = (998) WindowState = 0 WindowType = 0 ZoomBox = .F. @@ -156,7 +158,7 @@ DEFINE CLASS f_form_aa AS f_base OF "lib_controles.vcx" cmdCapturar.RightToLeft = .F. cmdCapturar.Top = 392 cmdCapturar.Width = 212 - Edit1.Height = 356 + Edit1.Height = 144 Edit1.Left = 764 Edit1.Name = "Edit1" Edit1.RightToLeft = .F. @@ -217,7 +219,7 @@ DEFINE CLASS f_form_aa AS f_base OF "lib_controles.vcx" GridLines = 3, ; GridLineWidth = 1, ; HeaderHeight = 18, ; - Height = 384, ; + Height = 424, ; HelpContextID = 0, ; Highlight = .T., ; HighlightBackColor = 51,153,255, ; @@ -687,6 +689,53 @@ DEFINE CLASS f_form_aa AS f_base OF "lib_controles.vcx" Visible = .T. *< END OBJECT: BaseClass="textbox" /> + ADD OBJECT 'Cl_image1' AS cl_image WITH ; + Anchor = 0, ; + BackStyle = 1, ; + BorderColor = 255,0,0, ; + BorderStyle = 1, ; + ColorSource = 4, ; + Comment = "", ; + DragIcon = ..\..\, ; + DragMode = 0, ; + Enabled = .T., ; + Height = 104, ; + HelpContextID = 0, ; + Left = 764, ; + MouseIcon = ..\..\, ; + MousePointer = 0, ; + Name = "Cl_image1", ; + OLEDragMode = 0, ; + OLEDragPicture = ..\..\, ; + OLEDropEffects = 3, ; + OLEDropMode = 0, ; + Picture = bmps\vfpxlogo.bmp, ; + RotateFlip = 0, ; + StatusBarText = "", ; + Stretch = 0, ; + Tag = "", ; + test_aa = .F., ; + Themes = .T., ; + ToolTipText = "", ; + Top = 284, ; + Visible = .T., ; + WhatsThisHelpID = -1, ; + Width = 212, ; + ZOrderSet = 0 + *< END OBJECT: ClassLib="lib_controles.vcx" BaseClass="image" /> + + ADD OBJECT 'Image1' AS image WITH ; + BorderColor = 255,0,0, ; + BorderStyle = 1, ; + Enabled = .T., ; + Height = 104, ; + Left = 764, ; + Name = "Image1", ; + Picture = bmps\vfpxlogo.bmp, ; + Top = 180, ; + Width = 212 + *< END OBJECT: BaseClass="image" /> + ADD OBJECT 'pgf' AS cl_pageframe WITH ; ActivePage = 2, ; Anchor = 0, ; @@ -827,7 +876,8 @@ DEFINE CLASS f_form_aa AS f_base OF "lib_controles.vcx" Visible = .T., ; WhatsThisHelpID = -1, ; Width = (199), ; - WordWrap = .F. + WordWrap = .F., ; + ZOrderSet = 1 *< END OBJECT: ClassLib="lib_controles.vcx" BaseClass="checkbox" /> ADD OBJECT 'pgf.Page1.Cl_optiongroup1' AS cl_optiongroup WITH ; @@ -869,6 +919,7 @@ DEFINE CLASS f_form_aa AS f_base OF "lib_controles.vcx" Visible = .T., ; WhatsThisHelpID = -1, ; Width = (112), ; + ZOrderSet = 20, ; Option1.Alignment = 0, ; Option1.Anchor = 0, ; Option1.AutoSize = .F., ; @@ -1037,7 +1088,8 @@ DEFINE CLASS f_form_aa AS f_base OF "lib_controles.vcx" Value = , ; Visible = .T., ; WhatsThisHelpID = -1, ; - Width = (196) + Width = (196), ; + ZOrderSet = 3 *< END OBJECT: ClassLib="lib_controles.vcx" BaseClass="combobox" /> ADD OBJECT 'pgf.Page1.commandbutton' AS cl_commandbutton WITH ; @@ -1060,7 +1112,8 @@ DEFINE CLASS f_form_aa AS f_base OF "lib_controles.vcx" Visible = .T., ; WhatsThisHelpID = -1, ; Width = (80), ; - WordWrap = .F. + WordWrap = .F., ; + ZOrderSet = 5 *< END OBJECT: ClassLib="lib_controles.vcx" BaseClass="commandbutton" /> ADD OBJECT 'pgf.Page1.commandgroup' AS cl_commandgroup WITH ; @@ -1104,6 +1157,7 @@ DEFINE CLASS f_form_aa AS f_base OF "lib_controles.vcx" Visible = .T., ; WhatsThisHelpID = -1, ; Width = (93), ; + ZOrderSet = 4, ; Command1.Alignment = 2, ; Command1.Anchor = 0, ; Command1.AutoSize = .F., ; @@ -1213,7 +1267,8 @@ DEFINE CLASS f_form_aa AS f_base OF "lib_controles.vcx" Top = (127), ; Visible = .T., ; WhatsThisHelpID = -1, ; - Width = (20) + Width = (20), ; + ZOrderSet = 6 *< END OBJECT: ClassLib="lib_controles.vcx" BaseClass="container" /> ADD OBJECT 'pgf.Page1.control' AS cl_control WITH ; @@ -1254,7 +1309,8 @@ DEFINE CLASS f_form_aa AS f_base OF "lib_controles.vcx" Top = (127), ; Visible = .T., ; WhatsThisHelpID = -1, ; - Width = (20) + Width = (20), ; + ZOrderSet = 7 *< END OBJECT: ClassLib="lib_controles.vcx" BaseClass="control" /> ADD OBJECT 'pgf.Page1.editbox' AS cl_editbox WITH ; @@ -1330,7 +1386,8 @@ DEFINE CLASS f_form_aa AS f_base OF "lib_controles.vcx" Value = , ; Visible = .T., ; WhatsThisHelpID = -1, ; - Width = (68) + Width = (68), ; + ZOrderSet = 8 *< END OBJECT: ClassLib="lib_controles.vcx" BaseClass="editbox" /> ADD OBJECT 'pgf.Page1.hyperlink' AS cl_hyperlink WITH ; @@ -1373,7 +1430,8 @@ DEFINE CLASS f_form_aa AS f_base OF "lib_controles.vcx" Top = 107, ; Visible = .T., ; WhatsThisHelpID = -1, ; - Width = 16 + Width = 16, ; + ZOrderSet = 10 *< END OBJECT: ClassLib="lib_controles.vcx" BaseClass="image" /> ADD OBJECT 'pgf.Page1.label' AS cl_label WITH ; @@ -1419,7 +1477,8 @@ DEFINE CLASS f_form_aa AS f_base OF "lib_controles.vcx" Visible = .T., ; WhatsThisHelpID = -1, ; Width = (104), ; - WordWrap = .F. + WordWrap = .F., ; + ZOrderSet = 11 *< END OBJECT: ClassLib="lib_controles.vcx" BaseClass="label" /> ADD OBJECT 'pgf.Page1.line' AS cl_line WITH ; @@ -1457,7 +1516,8 @@ DEFINE CLASS f_form_aa AS f_base OF "lib_controles.vcx" Top = (136), ; Visible = .T., ; WhatsThisHelpID = -1, ; - Width = (50) + Width = (50), ; + ZOrderSet = 12 *< END OBJECT: ClassLib="lib_controles.vcx" BaseClass="line" /> ADD OBJECT 'pgf.Page1.listbox' AS cl_listbox WITH ; @@ -1534,7 +1594,8 @@ DEFINE CLASS f_form_aa AS f_base OF "lib_controles.vcx" Value = , ; Visible = .T., ; WhatsThisHelpID = -1, ; - Width = (224) + Width = (224), ; + ZOrderSet = 13 *< END OBJECT: ClassLib="lib_controles.vcx" BaseClass="listbox" /> ADD OBJECT 'pgf.Page1.option' AS cl_option WITH ; @@ -1547,7 +1608,8 @@ DEFINE CLASS f_form_aa AS f_base OF "lib_controles.vcx" Left = 11, ; Name = "option", ; Top = 283, ; - Width = (110) + Width = (110), ; + ZOrderSet = 15 *< END OBJECT: ClassLib="lib_controles.vcx" BaseClass="optionbutton" /> ADD OBJECT 'pgf.Page1.optiongroup' AS cl_optiongroup WITH ; @@ -1591,6 +1653,7 @@ DEFINE CLASS f_form_aa AS f_base OF "lib_controles.vcx" Visible = .T., ; WhatsThisHelpID = -1, ; Width = (112), ; + ZOrderSet = 14, ; Option1.Alignment = 0, ; Option1.Anchor = 0, ; Option1.AutoSize = .F., ; @@ -1680,6 +1743,7 @@ DEFINE CLASS f_form_aa AS f_base OF "lib_controles.vcx" Themes = .F., ; Top = (284), ; Width = (117), ; + ZOrderSet = 19, ; Cl_page1.Caption = "Pg1", ; Cl_page1.Name = "Cl_page1", ; Cl_page2.BackColor = 255,193,132, ; @@ -1755,7 +1819,8 @@ DEFINE CLASS f_form_aa AS f_base OF "lib_controles.vcx" Value = 0, ; Visible = .T., ; WhatsThisHelpID = -1, ; - Width = (108) + Width = (108), ; + ZOrderSet = 16 *< END OBJECT: ClassLib="lib_controles.vcx" BaseClass="spinner" /> ADD OBJECT 'pgf.Page1.textbox' AS cl_textbox WITH ; @@ -1838,7 +1903,8 @@ DEFINE CLASS f_form_aa AS f_base OF "lib_controles.vcx" Value = , ; Visible = .T., ; WhatsThisHelpID = -1, ; - Width = (108) + Width = (108), ; + ZOrderSet = 17 *< END OBJECT: ClassLib="lib_controles.vcx" BaseClass="textbox" /> ADD OBJECT 'pgf.Page1.timer' AS cl_timer WITH ; @@ -1978,6 +2044,14 @@ DEFINE CLASS f_form_aa AS f_base OF "lib_controles.vcx" ENDIF loCtl.ControlSource = '' + CASE loCtl.Baseclass == 'Optionbutton' + .valor = 2 + loCtl.ControlSource = 'THISFORM.valor' + IF loCtl.Value = .valor + REPLACE c_Value WITH "S" + ENDIF + loCtl.ControlSource = '' + CASE loCtl.Baseclass == 'Spinner' .valor = 123 loCtl.ControlSource = 'THISFORM.valor' diff --git a/TESTS/DATOS_READONLY/f_form_aa.sct b/TESTS/DATOS_READONLY/f_form_aa.sct index 00d851f..ecdaea5 100644 Binary files a/TESTS/DATOS_READONLY/f_form_aa.sct and b/TESTS/DATOS_READONLY/f_form_aa.sct differ diff --git a/TESTS/DATOS_READONLY/f_form_aa.scx b/TESTS/DATOS_READONLY/f_form_aa.scx index e6cd563..53710c5 100644 Binary files a/TESTS/DATOS_READONLY/f_form_aa.scx and b/TESTS/DATOS_READONLY/f_form_aa.scx differ diff --git a/TESTS/DATOS_READONLY/f_form_aa2.sc2 b/TESTS/DATOS_READONLY/f_form_aa2.sc2 index 481ecb1..c0d8745 100644 --- a/TESTS/DATOS_READONLY/f_form_aa2.sc2 +++ b/TESTS/DATOS_READONLY/f_form_aa2.sc2 @@ -21,9 +21,11 @@ DEFINE CLASS f_form_aa1 AS f_form_aa OF "lib_controles.vcx" DefHeight = DefLeft = DefTop = - DefWidth = DoCreate = .T. + Height = (460) + Left = (2) Name = "F_form_aa1" + Top = (4) Cl_grid1.AllowAddNew = .F. Cl_grid1.AllowAutoColumnFit = 0 Cl_grid1.AllowCellSelection = .T. @@ -357,7 +359,6 @@ DEFINE CLASS f_form_aa1 AS f_form_aa OF "lib_controles.vcx" Cl_grid1.GridLines = 3 Cl_grid1.GridLineWidth = 1 Cl_grid1.HeaderHeight = 18 - Cl_grid1.Height = 384 Cl_grid1.HelpContextID = 0 Cl_grid1.Highlight = .T. Cl_grid1.HighlightBackColor = 51,153,255 @@ -401,9 +402,14 @@ DEFINE CLASS f_form_aa1 AS f_form_aa OF "lib_controles.vcx" Cl_grid1.View = 0 Cl_grid1.Visible = .T. Cl_grid1.WhatsThisHelpID = -1 - Cl_grid1.Width = 460 - Command2.Name = "Command2" + Cl_image1.Height = 104 + Cl_image1.Name = "Cl_image1" + Cl_image1.Width = 212 + cmdCapturar.Name = "cmdCapturar" Edit1.Name = "Edit1" + Image1.Height = 104 + Image1.Name = "Image1" + Image1.Width = 212 Label1.Name = "Label1" Label2.Name = "Label2" Label3.Name = "Label3" @@ -490,6 +496,15 @@ DEFINE CLASS f_form_aa1 AS f_form_aa OF "lib_controles.vcx" pgf.Page1.Checkbox.WhatsThisHelpID = -1 pgf.Page1.Checkbox.Width = (199) pgf.Page1.Checkbox.WordWrap = .F. + pgf.Page1.Cl_optiongroup1.DefHeight = + pgf.Page1.Cl_optiongroup1.DefWidth = + pgf.Page1.Cl_optiongroup1.Name = "Cl_optiongroup1" + pgf.Page1.Cl_optiongroup1.Option1.Left = 5 + pgf.Page1.Cl_optiongroup1.Option1.Name = "Option1" + pgf.Page1.Cl_optiongroup1.Option1.Top = 5 + pgf.Page1.Cl_optiongroup1.Option2.Left = 5 + pgf.Page1.Cl_optiongroup1.Option2.Name = "Option2" + pgf.Page1.Cl_optiongroup1.Option2.Top = 24 pgf.Page1.Collection.Comment = "" pgf.Page1.Collection.KeySort = 0 pgf.Page1.Collection.Name = "Collection" @@ -518,7 +533,7 @@ DEFINE CLASS f_form_aa1 AS f_form_aa OF "lib_controles.vcx" pgf.Page1.ComboBox.DisabledItemBackColor = 255,255,255 pgf.Page1.ComboBox.DisabledItemForeColor = 109,109,109 pgf.Page1.ComboBox.DisplayCount = 0 - pgf.Page1.ComboBox.DisplayValue = ComboBox + pgf.Page1.ComboBox.DisplayValue = pgf.Page1.ComboBox.DragIcon = ..\..\ pgf.Page1.ComboBox.DragMode = 0 pgf.Page1.ComboBox.Enabled = .T. @@ -1072,6 +1087,7 @@ DEFINE CLASS f_form_aa1 AS f_form_aa OF "lib_controles.vcx" pgf.Page1.OptionGroup.Option2.Left = 5 pgf.Page1.OptionGroup.Option2.Name = "Option2" pgf.Page1.OptionGroup.Option2.Top = 24 + pgf.Page1.OptionGroup.Option2.Value = 0 pgf.Page1.OptionGroup.Option2.Width = 103 pgf.Page1.OptionGroup.SpecialEffect = 0 pgf.Page1.OptionGroup.StatusBarText = "" @@ -1128,47 +1144,6 @@ DEFINE CLASS f_form_aa1 AS f_form_aa OF "lib_controles.vcx" pgf.Page1.Pageframe1.WhatsThisHelpID = -1 pgf.Page1.Pageframe1.Width = (117) pgf.Page1.PageOrder = 1 - pgf.Page1.Shape1.Anchor = 0 - pgf.Page1.Shape1.BackColor = 255,255,196 - pgf.Page1.Shape1.BackStyle = 1 - pgf.Page1.Shape1.BorderColor = 128,255,128 - pgf.Page1.Shape1.BorderStyle = 1 - pgf.Page1.Shape1.BorderWidth = 1 - pgf.Page1.Shape1.ColorScheme = 1 - pgf.Page1.Shape1.ColorSource = 4 - pgf.Page1.Shape1.Comment = "" - pgf.Page1.Shape1.Curvature = 16 - pgf.Page1.Shape1.DefHeight = - pgf.Page1.Shape1.DefLeft = - pgf.Page1.Shape1.DefTop = - pgf.Page1.Shape1.DefWidth = - pgf.Page1.Shape1.DragIcon = ..\..\ - pgf.Page1.Shape1.DragMode = 0 - pgf.Page1.Shape1.DrawMode = 13 - pgf.Page1.Shape1.Enabled = .T. - pgf.Page1.Shape1.FillColor = 0,0,0 - pgf.Page1.Shape1.FillStyle = 1 - pgf.Page1.Shape1.Height = (21) - pgf.Page1.Shape1.HelpContextID = 0 - pgf.Page1.Shape1.Left = (115) - pgf.Page1.Shape1.MouseIcon = ..\..\ - pgf.Page1.Shape1.MousePointer = 0 - pgf.Page1.Shape1.Name = "Shape1" - pgf.Page1.Shape1.OLEDragMode = 0 - pgf.Page1.Shape1.OLEDragPicture = ..\..\ - pgf.Page1.Shape1.OLEDropEffects = 3 - pgf.Page1.Shape1.OLEDropMode = 0 - pgf.Page1.Shape1.PolyPoints = "" - pgf.Page1.Shape1.Rotation = 0 - pgf.Page1.Shape1.SpecialEffect = 0 - pgf.Page1.Shape1.StatusBarText = "" - pgf.Page1.Shape1.Style = 0 - pgf.Page1.Shape1.Tag = "" - pgf.Page1.Shape1.ToolTipText = "" - pgf.Page1.Shape1.Top = (99) - pgf.Page1.Shape1.Visible = .T. - pgf.Page1.Shape1.WhatsThisHelpID = -1 - pgf.Page1.Shape1.Width = (57) pgf.Page1.Spinner.Alignment = 1 pgf.Page1.Spinner.Anchor = 0 pgf.Page1.Spinner.BackColor = 255,255,255 diff --git a/TESTS/DATOS_READONLY/f_form_aa2.sct b/TESTS/DATOS_READONLY/f_form_aa2.sct index 8d95d98..4a35324 100644 Binary files a/TESTS/DATOS_READONLY/f_form_aa2.sct and b/TESTS/DATOS_READONLY/f_form_aa2.sct differ diff --git a/TESTS/DATOS_READONLY/f_form_aa2.scx b/TESTS/DATOS_READONLY/f_form_aa2.scx index 88eb688..495ec8e 100644 Binary files a/TESTS/DATOS_READONLY/f_form_aa2.scx and b/TESTS/DATOS_READONLY/f_form_aa2.scx differ diff --git a/TESTS/DATOS_READONLY/fb2p_test.pj2 b/TESTS/DATOS_READONLY/fb2p_test.pj2 index 7f4d5df..1343724 100644 --- a/TESTS/DATOS_READONLY/fb2p_test.pj2 +++ b/TESTS/DATOS_READONLY/fb2p_test.pj2 @@ -89,7 +89,6 @@ WITH loProject.FILES .ADD('..\ut__foxbin2prg__c_conversor_base__dobackup.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> .ADD('..\ut__foxbin2prg__c_conversor_base__get_separatedpropandvalue.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> .ADD('..\ut__foxbin2prg__c_conversor_base__gettimestamp.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> - .ADD('..\ut__foxbin2prg__c_conversor_base__identificarbloquesdecodigo.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> .ADD('..\ut__foxbin2prg__c_conversor_base__identificarbloquesdeexclusion.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> .ADD('..\ut__foxbin2prg__c_conversor_base__normalizarvalorpropiedad.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> .ADD('..\ut__foxbin2prg__c_conversor_base__rowtimestamp.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> diff --git a/TESTS/DATOS_READONLY/fb2p_test.pjt b/TESTS/DATOS_READONLY/fb2p_test.pjt index f88d1fa..765bccf 100644 Binary files a/TESTS/DATOS_READONLY/fb2p_test.pjt and b/TESTS/DATOS_READONLY/fb2p_test.pjt differ diff --git a/TESTS/DATOS_READONLY/fb2p_test.pjx b/TESTS/DATOS_READONLY/fb2p_test.pjx index 8ef0695..528207e 100644 Binary files a/TESTS/DATOS_READONLY/fb2p_test.pjx and b/TESTS/DATOS_READONLY/fb2p_test.pjx differ diff --git a/TESTS/DATOS_READONLY/lib_controles.vc2 b/TESTS/DATOS_READONLY/lib_controles.vc2 index 12c5f35..d4f4f4b 100644 --- a/TESTS/DATOS_READONLY/lib_controles.vc2 +++ b/TESTS/DATOS_READONLY/lib_controles.vc2 @@ -1466,6 +1466,7 @@ DEFINE CLASS f_base AS form *p: c_testname * + AlwaysOnTop = .T. BackColor = 192,192,192 Caption = "OptionGroup_Test" c_testname = OptionGroup_Test @@ -1539,8 +1540,12 @@ DEFINE CLASS f_base AS form LOCAL retVal tcFilename = EVL(tcFilename, 'optiongroup') + IF NOT '\' $ tcFilename + tcFilename = SYS(5) + ADDBS(CURDIR()) + "TESTS\DATOS_TEST\" + tcFilename + '.bmp' + ENDIF + Declare Integer formtobmp IN "TESTS\PCT_DLL.dll" integer hwnd,String bmpFileName - retVal = formtobmp( THISFORM.HWnd, SYS(5) + ADDBS(CURDIR()) + "TESTS\DATOS_TEST\" + tcFilename + '.bmp' ) + retVal = formtobmp( THISFORM.HWnd, tcFilename ) *Declare Integer formtobmpA IN "TESTS\PCT_DLL.dll" string bmpfilename,integer nX,integer nY,integer nX2,integer nY2 @@ -4890,6 +4895,7 @@ DEFINE CLASS f_form_aa AS f_base OF "lib_controles.vcx" *< CLASSDATA: Baseclass="form" Timestamp="" Scale="Pixels" Uniqueid="" /> *-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder + *< OBJECTDATA: ObjPath="Cl_image1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Cl_grid1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Cl_grid1.Column6.Header1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Cl_grid1.Column6.Text1" UniqueID="" Timestamp="" /> @@ -4914,6 +4920,7 @@ DEFINE CLASS f_form_aa AS f_base OF "lib_controles.vcx" *< OBJECTDATA: ObjPath="pgf.Page1.timer" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="pgf.Page1.Pageframe1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="pgf.Page1.Cl_optiongroup1" UniqueID="" Timestamp="" /> + *< OBJECTDATA: ObjPath="Image1" UniqueID="" Timestamp="" /> * *m: add_control @@ -4947,7 +4954,6 @@ DEFINE CLASS f_form_aa AS f_base OF "lib_controles.vcx" DefLeft = DefOleLCID = 0 DefTop = - DefWidth = Desktop = .F. Dockable = 0 DoCreate = .T. @@ -4970,7 +4976,7 @@ DEFINE CLASS f_form_aa AS f_base OF "lib_controles.vcx" FontUnderline = .F. ForeColor = 0,0,0 HalfHeightCaption = .F. - Height = (424) + Height = (460) HelpContextID = 0 HScrollSmallChange = 10 Icon = bmps\container.ico @@ -5017,7 +5023,7 @@ DEFINE CLASS f_form_aa AS f_base OF "lib_controles.vcx" WhatsThisButton = .F. WhatsThisHelp = .F. WhatsThisHelpID = -1 - Width = (980) + Width = 998 WindowState = 0 WindowType = 0 ZoomBox = .F. @@ -5027,7 +5033,7 @@ DEFINE CLASS f_form_aa AS f_base OF "lib_controles.vcx" cmdCapturar.RightToLeft = .F. cmdCapturar.Top = 392 cmdCapturar.Width = 212 - Edit1.Height = 356 + Edit1.Height = 144 Edit1.Left = 764 Edit1.Name = "Edit1" Edit1.RightToLeft = .F. @@ -5088,7 +5094,7 @@ DEFINE CLASS f_form_aa AS f_base OF "lib_controles.vcx" GridLines = 3, ; GridLineWidth = 1, ; HeaderHeight = 18, ; - Height = 384, ; + Height = 420, ; HelpContextID = 0, ; Highlight = .T., ; HighlightBackColor = 51,153,255, ; @@ -5558,6 +5564,52 @@ DEFINE CLASS f_form_aa AS f_base OF "lib_controles.vcx" Visible = .T. *< END OBJECT: BaseClass="textbox" /> + ADD OBJECT 'Cl_image1' AS cl_image WITH ; + Anchor = 0, ; + BackStyle = 1, ; + BorderColor = 255,0,0, ; + BorderStyle = 1, ; + ColorSource = 4, ; + Comment = "", ; + DragIcon = ..\..\, ; + DragMode = 0, ; + Enabled = .T., ; + Height = 104, ; + HelpContextID = 0, ; + Left = 764, ; + MouseIcon = ..\..\, ; + MousePointer = 0, ; + Name = "Cl_image1", ; + OLEDragMode = 0, ; + OLEDragPicture = ..\..\, ; + OLEDropEffects = 3, ; + OLEDropMode = 0, ; + Picture = bmps\vfpxlogo.bmp, ; + RotateFlip = 0, ; + StatusBarText = "", ; + Stretch = 0, ; + Tag = "", ; + test_aa = .F., ; + Themes = .T., ; + ToolTipText = "", ; + Top = 284, ; + Visible = .T., ; + WhatsThisHelpID = -1, ; + Width = 212, ; + ZOrderSet = 0 + *< END OBJECT: ClassLib="lib_controles.vcx" BaseClass="image" /> + + ADD OBJECT 'Image1' AS image WITH ; + BorderColor = 255,0,0, ; + BorderStyle = 1, ; + Height = 104, ; + Left = 764, ; + Name = "Image1", ; + Picture = bmps\vfpxlogo.bmp, ; + Top = 180, ; + Width = 212 + *< END OBJECT: BaseClass="image" /> + ADD OBJECT 'pgf' AS cl_pageframe WITH ; ActivePage = 2, ; Anchor = 0, ; diff --git a/TESTS/DATOS_READONLY/lib_controles.vct b/TESTS/DATOS_READONLY/lib_controles.vct index eca42c2..607a7ca 100644 Binary files a/TESTS/DATOS_READONLY/lib_controles.vct and b/TESTS/DATOS_READONLY/lib_controles.vct differ diff --git a/TESTS/DATOS_READONLY/lib_controles.vcx b/TESTS/DATOS_READONLY/lib_controles.vcx index 713e6c8..1200696 100644 Binary files a/TESTS/DATOS_READONLY/lib_controles.vcx and b/TESTS/DATOS_READONLY/lib_controles.vcx differ diff --git a/TESTS/DATOS_READONLY/menu1.mn2 b/TESTS/DATOS_READONLY/menu1.mn2 index a2a52f7..14c9144 100644 --- a/TESTS/DATOS_READONLY/menu1.mn2 +++ b/TESTS/DATOS_READONLY/menu1.mn2 @@ -14,13 +14,13 @@ * DEFINE MENU _MSYSMENU BAR -DEFINE PAD _42I10MLX9 OF _MSYSMENU PROMPT "Opción A con submenú" COLOR SCHEME 3 ; +DEFINE PAD _43302YWGE OF _MSYSMENU PROMPT "Opción A con submenú" COLOR SCHEME 3 ; NEGOTIATE NONE, LEFT ; KEY DEL, "Pulsar " ; SKIP FOR SKIP_FOR() ; MESSAGE "Mensaje para Opción A con submenú" && Comentario -ON PAD _42I10MLX9 OF _MSYSMENU ACTIVATE POPUP OpciónA_CS +ON PAD _43302YWGE OF _MSYSMENU ACTIVATE POPUP OpciónA_CS *---------------------------------- DEFINE POPUP OpciónA_CS MARGIN RELATIVE SHADOW COLOR SCHEME 4 diff --git a/TESTS/DATOS_READONLY/menu2.mn2 b/TESTS/DATOS_READONLY/menu2.mn2 index ae238e6..566c4db 100644 --- a/TESTS/DATOS_READONLY/menu2.mn2 +++ b/TESTS/DATOS_READONLY/menu2.mn2 @@ -84,9 +84,9 @@ DEFINE PAD opc_b OF _MSYSMENU PROMPT "Opci ON SELECTION PAD opc_b OF _MSYSMENU WAIT WINDOW "Opción B" -DEFINE PAD _42I10FCOZ OF _MSYSMENU PROMPT "\ DEFINE MENU _MSYSMENU BAR -DEFINE PAD _42I10MLZH OF _MSYSMENU PROMPT "ejemplo" COLOR SCHEME 3 +DEFINE PAD _43302YWIM OF _MSYSMENU PROMPT "ejemplo" COLOR SCHEME 3 -ON SELECTION PAD _42I10MLZH OF _MSYSMENU do test +ON SELECTION PAD _43302YWIM OF _MSYSMENU do test -DEFINE PAD _42I10MLZI OF _MSYSMENU PROMPT "ejemplo2" COLOR SCHEME 3 +DEFINE PAD _43302YWIN OF _MSYSMENU PROMPT "ejemplo2" COLOR SCHEME 3 -ON SELECTION PAD _42I10MLZI OF _MSYSMENU DO TEST +ON SELECTION PAD _43302YWIN OF _MSYSMENU DO TEST * diff --git a/TESTS/FoxPro9_Order_for_Control_Properties.xlsx b/TESTS/FoxPro9_Order_for_Control_Properties.xlsx index 2f28b9b..5297f74 100644 Binary files a/TESTS/FoxPro9_Order_for_Control_Properties.xlsx and b/TESTS/FoxPro9_Order_for_Control_Properties.xlsx differ diff --git a/TESTS/foxunit_path.txt b/TESTS/foxunit_path.txt new file mode 100644 index 0000000..d92585c --- /dev/null +++ b/TESTS/foxunit_path.txt @@ -0,0 +1 @@ +c:\desa\foxunit \ No newline at end of file diff --git a/TESTS/fxu_lib_objetos_y_funciones_de_soporte.prg b/TESTS/fxu_lib_objetos_y_funciones_de_soporte.prg index 858db86..bde0bd7 100644 --- a/TESTS/fxu_lib_objetos_y_funciones_de_soporte.prg +++ b/TESTS/fxu_lib_objetos_y_funciones_de_soporte.prg @@ -63,7 +63,8 @@ DEFINE CLASS CL_FXU_CONFIG AS CUSTOM cOldPath = '' - cPath = 'FOXUNIT;TESTS;TESTS\DATOS_TEST' + cPath = 'TESTS;TESTS\DATOS_TEST' + cPathDatosReadOnly = 'TESTS\DATOS_READONLY' cPathDatosTest = 'TESTS\DATOS_TEST' cSetDate = '' @@ -80,6 +81,13 @@ DEFINE CLASS CL_FXU_CONFIG AS CUSTOM SET TALK OFF THIS.cOldPath = SET("Path") + + IF FILE("FOXUNIT_PATH.TXT") + THIS.cPath = THIS.cPath + ';' + FILETOSTR("FOXUNIT_PATH.TXT") + ELSE + THIS.cPath = THIS.cPath + ';FOXUNIT' + ENDIF + SET PATH TO (THIS.cPath) ENDPROC @@ -93,7 +101,21 @@ DEFINE CLASS CL_FXU_CONFIG AS CUSTOM *---------------------------------------------------------------------------------------- PROCEDURE SETUP_COMUN - ERASE (FORCEPATH( '*.*', THIS.cPathDatosTest ) ) + IF DIRECTORY( THIS.cPathDatosTest ) + ERASE ( FORCEPATH( '*.*', THIS.cPathDatosTest ) ) + ELSE + TRY + MKDIR ( THIS.cPathDatosTest ) + CATCH + ENDTRY + ENDIF + + IF NOT DIRECTORY( ADDBS(THIS.cPathDatosTest) + 'bmps' ) + TRY + MKDIR ( ADDBS(THIS.cPathDatosTest) + 'bmps' ) + CATCH + ENDTRY + ENDIF ENDPROC @@ -107,7 +129,15 @@ DEFINE CLASS CL_FXU_CONFIG AS CUSTOM PROCEDURE copiarArchivosParaTest LPARAMETERS tcFileSpec - COPY FILE (FORCEPATH( tcFileSpec, THIS.cPathDatosReadOnly )) TO (FORCEPATH( tcFileSpec, THIS.cPathDatosTest )) + TRY + LOCAL loEx AS Exception + COPY FILE (FORCEPATH( tcFileSpec, THIS.cPathDatosReadOnly )) TO (FORCEPATH( tcFileSpec, THIS.cPathDatosTest )) + + CATCH TO loEx + loEx.UserValue = 'cPathDatosReadOnly = "' + THIS.cPathDatosReadOnly + CHR(13) + CHR(10) ; + + 'cPathDatosTest = "' + THIS.cPathDatosTest + THROW + ENDTRY ENDPROC diff --git a/TESTS/ut__foxbin2prg.prg b/TESTS/ut__foxbin2prg.prg index b4a9d1a..f8675b2 100644 --- a/TESTS/ut__foxbin2prg.prg +++ b/TESTS/ut__foxbin2prg.prg @@ -54,8 +54,11 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg oFXU_LIB = NULL ENDIF RELEASE PROCEDURE 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG' - MOUSE AT (THIS.nMouseY), (THIS.nMouseX) PIXELS + RELEASE oFXU_LIB + CLOSE PROCEDURES + CLEAR RESOURCES SYS(1104) + MOUSE AT (THIS.nMouseY), (THIS.nMouseX) PIXELS ENDFUNC @@ -342,6 +345,8 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg FINALLY USE IN (SELECT("ARCHIVOBIN_IN")) + STORE NULL TO loModulo, loCnv + RELEASE loModulo, loCnv ENDTRY ENDFUNC @@ -421,6 +426,8 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg FINALLY USE IN (SELECT("ARCHIVOBIN_IN")) + STORE NULL TO loModulo, loCnv + RELEASE loModulo, loCnv ENDTRY ENDFUNC @@ -503,6 +510,8 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg FINALLY USE IN (SELECT("ARCHIVOBIN_IN")) USE IN (SELECT("TABLABIN")) + STORE NULL TO loModulo, loCnv + RELEASE loModulo, loCnv ENDTRY ENDFUNC @@ -586,6 +595,8 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg FINALLY USE IN (SELECT("TABLABIN")) + STORE NULL TO loModulo, loCnv + RELEASE loModulo, loCnv ENDTRY ENDFUNC @@ -676,6 +687,8 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg FINALLY USE IN (SELECT("TABLABIN")) + STORE NULL TO loModulo, loCnv + RELEASE loModulo, loCnv ENDTRY ENDFUNC @@ -760,6 +773,8 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg FINALLY USE IN (SELECT("ARCHIVOBIN_IN")) USE IN (SELECT("TABLABIN")) + STORE NULL TO loModulo, loCnv + RELEASE loModulo, loCnv ENDTRY ENDFUNC @@ -842,6 +857,8 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg FINALLY USE IN (SELECT("ARCHIVOBIN_IN")) USE IN (SELECT("TABLABIN")) + STORE NULL TO loModulo, loCnv + RELEASE loModulo, loCnv ENDTRY ENDFUNC @@ -925,6 +942,8 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg FINALLY USE IN (SELECT("ARCHIVOBIN_IN")) USE IN (SELECT("TABLABIN")) + STORE NULL TO loModulo, loCnv + RELEASE loModulo, loCnv ENDTRY ENDFUNC @@ -932,7 +951,8 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg ******************************************************************************************************************************************* FUNCTION Evaluate_Bitmap_Test - LPARAMETERS tcTestName, tcControlName, tcFormName + LPARAMETERS tcTestName, tcControlName, tcFormName, tnComparacionEsperada + *-- tnComparacionEsperada 0=False, [1]=True, 2=Don't report (special case) IF PCOUNT() = 0 THIS.messageout( "* Support method, not a valid test." ) @@ -940,16 +960,24 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg ENDIF LOCAL lnCodError, lnCodError_Esperado ; - , lc_File, lcFile2, lc_OutputFile, lcTipoBinario, lcLib, lcBMP0, lcBMP1 ; + , lc_File, lcFile2, lc_OutputFile, lcTipoBinario, lcLib, lcBMP0, lcBMP1, llEqual ; , lcParent, lcClass, lcObjName, loReg_Esperado ; , loCtl AS f_optiongroup OF "TESTS\DATOS_READONLY\LIB_CONTROLES.VCX" ; , loCnv AS c_foxbin2prg OF "FOXBIN2PRG.PRG" ; , loEx AS EXCEPTION + #IF .F. PUBLIC oFXU_LIB AS CL_FXU_CONFIG OF 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG' #ENDIF TRY + THIS.messageout( this.ICCURRENTTEST ) + THIS.messageout( '' ) + + IF VARTYPE(tnComparacionEsperada) = "L" + tnComparacionEsperada = 1 + ENDIF + loEx = NULL loCnv = NEWOBJECT("c_foxbin2prg", "FOXBIN2PRG.PRG") loCnv.EvaluarConfiguracion( '', '', '', '1', '1', '4' ) @@ -992,7 +1020,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg ELSE loCtl = CREATEOBJECT( tcControlName ) ENDIF - loCtl.c_testname = tcTestName + '_0' + loCtl.c_testname = FORCEPATH( THIS.ICCURRENTTEST + '_0.bmp', ADDBS(oFXU_LIB.cPathDatosTest) + 'bmps' ) IF loCtl.BaseClass = 'Formset' loCtl.Forms(1).ALWAYSONTOP= .T. loCtl.SHOW() @@ -1026,7 +1054,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg ELSE loCtl = CREATEOBJECT( tcControlName ) ENDIF - loCtl.c_testname = tcTestName + '_1' + loCtl.c_testname = FORCEPATH( THIS.ICCURRENTTEST + '_1.bmp', ADDBS(oFXU_LIB.cPathDatosTest) + 'bmps' ) IF loCtl.BaseClass = 'Formset' loCtl.Forms(1).ALWAYSONTOP= .T. loCtl.SHOW() @@ -1042,22 +1070,35 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg CLEAR CLASSLIB (lcLib) *-- Comparo resultados - lcBMP0 = FORCEPATH( tcTestName + '_0.bmp', oFXU_LIB.cPathDatosTest ) - lcBMP1 = FORCEPATH( tcTestName + '_1.bmp', oFXU_LIB.cPathDatosTest ) + lcBMP0 = FORCEPATH( THIS.ICCURRENTTEST + '_0.bmp', ADDBS(oFXU_LIB.cPathDatosTest) + 'bmps' ) + lcBMP1 = FORCEPATH( THIS.ICCURRENTTEST + '_1.bmp', ADDBS(oFXU_LIB.cPathDatosTest) + 'bmps' ) + + llEqual = ( FILETOSTR( lcBMP0 ) == FILETOSTR( lcBMP1 ) ) THIS.messageout( "Se comparan bitmaps de pantalla, para saber si hay cambios estéticos y detectar fallos al ensamblar el binario" ) THIS.messageout( "lcBMP0 = " + lcBMP0 ) THIS.messageout( "lcBMP1 = " + lcBMP1 ) - THIS.asserttrue( FILETOSTR( lcBMP0 ) == FILETOSTR( lcBMP1 ), "COMPARACIÓN DE BITMAPS" ) + THIS.messageout( "Comparación esperada = " + ICASE(tnComparacionEsperada = 0, "DISTINTOS", tnComparacionEsperada = 1, "IGUALES", "NO_COMPARAR") ) + THIS.messageout( "Comparación realizada = " + IIF(llEqual, "IGUALES", "DISTINTOS") ) + + DO CASE + CASE tnComparacionEsperada = 0 + THIS.asserttrue( NOT llEqual, "COMPARACIÓN DE BITMAPS" ) + + CASE tnComparacionEsperada = 1 + THIS.asserttrue( llEqual, "COMPARACIÓN DE BITMAPS" ) + + OTHERWISE + *- No se quiere reporte de respuesta para evitar un fallo (caso especial) + ENDCASE CATCH TO loEx THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_OutputFile, lcParent, lcClass, lcObjName, loReg_Esperado ) FINALLY - * USE IN (SELECT("ARCHIVOBIN_IN")) - * USE IN (SELECT("TABLABIN")) - STORE NULL TO loCnv, loCtl + STORE NULL TO loCtl, loCnv + RELEASE loCtl, loCnv ENDTRY ENDFUNC @@ -1074,7 +1115,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg ******************************************************************************************************************************************* FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaElForm__F_OptionGroup__YValidarLaVisualizacionDePantalla - THIS.evaluate_bitmap_test( 'OptionGroup_Test', 'f_OptionGroup', 'F_OPTIONGROUP.SCX' ) + THIS.evaluate_bitmap_test( 'OptionGroup_Test', 'f_OptionGroup', 'F_OPTIONGROUP.SCX', 2 ) ENDFUNC @@ -1162,6 +1203,11 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg ******************************************************************************************************************************************* FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaLaClase__LIB_CONTROLES__F_Form_Controles__YValidarLaVisualizacionDePantalla + IF NOT DIRECTORY( ADDBS(oFXU_LIB.cPathDatosTest) + 'bmps' ) + MKDIR ( ADDBS(oFXU_LIB.cPathDatosTest) + 'bmps' ) + ENDIF + COPY FILE ( ADDBS(oFXU_LIB.cPathDatosReadOnly) + 'bmps\*.*' ) TO ( ADDBS(oFXU_LIB.cPathDatosTest) + 'bmps\*.*' ) + THIS.evaluate_bitmap_test( 'Form_Controles_Test', 'f_Form_Controles', '' ) ENDFUNC @@ -1170,6 +1216,11 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg ******************************************************************************************************************************************* FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaElForm__F_Form_Controles__YValidarLaVisualizacionDePantalla + IF NOT DIRECTORY( ADDBS(oFXU_LIB.cPathDatosTest) + 'bmps' ) + MKDIR ( ADDBS(oFXU_LIB.cPathDatosTest) + 'bmps' ) + ENDIF + COPY FILE ( ADDBS(oFXU_LIB.cPathDatosReadOnly) + 'bmps\*.*' ) TO ( ADDBS(oFXU_LIB.cPathDatosTest) + 'bmps\*.*' ) + THIS.evaluate_bitmap_test( 'Form_Controles_Test', 'f_Form_Controles', 'F_Form_Controles.SCX' ) ENDFUNC @@ -1281,6 +1332,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg * USE IN (SELECT("ARCHIVOBIN_IN")) * USE IN (SELECT("TABLABIN")) STORE NULL TO loCnv, loCtl + RELEASE loCnv, loCtl ENDTRY ENDFUNC diff --git a/foxbin2prg.exe b/foxbin2prg.exe new file mode 100644 index 0000000..2d962cc Binary files /dev/null and b/foxbin2prg.exe differ diff --git a/foxbin2prg.pj2 b/foxbin2prg.pj2 index c6b0d04..5538968 100644 --- a/foxbin2prg.pj2 +++ b/foxbin2prg.pj2 @@ -23,12 +23,12 @@ _CompanyName = "Fernando D. Bozzo" _FileDescription = "Conversor bidireccional de binarios FoxPro 9 (scx,vcx,pjx) a texto para sustituir al scctext :-)" _LegalCopyright = "Creative Commons 4: Reconocimiento - CompartirIgual (by-sa): http://creativecommons.org/licenses/by/4.0/" _LegalTrademark = "Creative Commons 4: Reconocimiento - CompartirIgual (by-sa): http://creativecommons.org/licenses/by/4.0/" -_ProductName = " FOXBIN2PRG v1.19.22" +_ProductName = " FOXBIN2PRG v1.19.23" _MajorVer = "1" _MinorVer = "19" -_Revision = " 336" +_Revision = "23" _LanguageID = "1034" -_AutoIncrement = "1" +_AutoIncrement = "0" * @@ -91,6 +91,23 @@ WITH loProject.FILES .ADD('props_xmladapter.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> .ADD('props_xmlfield.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> .ADD('props_xmltable.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> + .ADD('tests\foxunit_path.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> + .ADD('tests\ft__foxbin2prg__c_conversor_prg_a_dbc.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" /> + .ADD('tests\ft__foxbin2prg__c_conversor_prg_a_dbf.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" /> + .ADD('tests\ft__foxbin2prg__c_conversor_prg_a_mnx.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" /> + .ADD('tests\fxu_lib_objetos_y_funciones_de_soporte.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" /> + .ADD('tests\ut__foxbin2prg.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" /> + .ADD('tests\ut__foxbin2prg__c_conversor_base__dobackup.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" /> + .ADD('tests\ut__foxbin2prg__c_conversor_base__get_separatedpropandvalue.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" /> + .ADD('tests\ut__foxbin2prg__c_conversor_base__gettimestamp.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" /> + .ADD('tests\ut__foxbin2prg__c_conversor_base__identificarbloquesdeexclusion.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" /> + .ADD('tests\ut__foxbin2prg__c_conversor_base__normalizarvalorpropiedad.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" /> + .ADD('tests\ut__foxbin2prg__c_conversor_base__rowtimestamp.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" /> + .ADD('tests\ut__foxbin2prg__c_conversor_bin_a_prg__get_propsandvaluesfrom_properties.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" /> + .ADD('tests\ut__foxbin2prg__c_conversor_bin_a_prg__indentarmemo.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" /> + .ADD('tests\ut__foxbin2prg__c_conversor_prg_a_bin__analizarasignacion_tag_indicado.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" /> + .ADD('tests\ut__foxbin2prg__c_conversor_prg_a_bin__insert_allobjects.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" /> + .ADD('tests\ut__foxbin2prg__c_foxbin2prg__evaluarconfiguracion.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" /> * .ITEM('__newproject.f2b').Remove() @@ -101,6 +118,23 @@ WITH loProject.FILES * * + .ITEM(lcCurdir + 'tests\foxunit_path.txt').Exclude = .T. + .ITEM(lcCurdir + 'tests\ft__foxbin2prg__c_conversor_prg_a_dbc.prg').Exclude = .T. + .ITEM(lcCurdir + 'tests\ft__foxbin2prg__c_conversor_prg_a_dbf.prg').Exclude = .T. + .ITEM(lcCurdir + 'tests\ft__foxbin2prg__c_conversor_prg_a_mnx.prg').Exclude = .T. + .ITEM(lcCurdir + 'tests\fxu_lib_objetos_y_funciones_de_soporte.prg').Exclude = .T. + .ITEM(lcCurdir + 'tests\ut__foxbin2prg.prg').Exclude = .T. + .ITEM(lcCurdir + 'tests\ut__foxbin2prg__c_conversor_base__dobackup.prg').Exclude = .T. + .ITEM(lcCurdir + 'tests\ut__foxbin2prg__c_conversor_base__get_separatedpropandvalue.prg').Exclude = .T. + .ITEM(lcCurdir + 'tests\ut__foxbin2prg__c_conversor_base__gettimestamp.prg').Exclude = .T. + .ITEM(lcCurdir + 'tests\ut__foxbin2prg__c_conversor_base__identificarbloquesdeexclusion.prg').Exclude = .T. + .ITEM(lcCurdir + 'tests\ut__foxbin2prg__c_conversor_base__normalizarvalorpropiedad.prg').Exclude = .T. + .ITEM(lcCurdir + 'tests\ut__foxbin2prg__c_conversor_base__rowtimestamp.prg').Exclude = .T. + .ITEM(lcCurdir + 'tests\ut__foxbin2prg__c_conversor_bin_a_prg__get_propsandvaluesfrom_properties.prg').Exclude = .T. + .ITEM(lcCurdir + 'tests\ut__foxbin2prg__c_conversor_bin_a_prg__indentarmemo.prg').Exclude = .T. + .ITEM(lcCurdir + 'tests\ut__foxbin2prg__c_conversor_prg_a_bin__analizarasignacion_tag_indicado.prg').Exclude = .T. + .ITEM(lcCurdir + 'tests\ut__foxbin2prg__c_conversor_prg_a_bin__insert_allobjects.prg').Exclude = .T. + .ITEM(lcCurdir + 'tests\ut__foxbin2prg__c_foxbin2prg__evaluarconfiguracion.prg').Exclude = .T. * * diff --git a/foxbin2prg.pjt b/foxbin2prg.pjt index 60668de..cf02bca 100644 Binary files a/foxbin2prg.pjt and b/foxbin2prg.pjt differ diff --git a/foxbin2prg.pjx b/foxbin2prg.pjx index 245c795..2916fb4 100644 Binary files a/foxbin2prg.pjx and b/foxbin2prg.pjx differ diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 26babfc..8630553 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -37,53 +37,54 @@ * *--------------------------------------------------------------------------------------------------- * -* 04/11/2013 FDBOZZO v1.0 Creación inicial de las clases y soporte de los archivos VCX/SCX/PJX -* 22/11/2013 FDBOZZO v1.1 Corrección de bugs -* 23/11/2013 FDBOZZO v1.2 Corrección de bugs, limpieza de código y refactorización -* 24/11/2013 FDBOZZO v1.3 Corrección de bugs, limpieza de código y refactorización -* 27/11/2013 FDBOZZO v1.4 Agregado soporte comodines *.VCX, configuración de extensiones (vca), parámetro p/log -* 27/11/2013 FDBOZZO v1.5 Arreglo bug que no generaba form completo -* 01/12/2013 FDBOZZO v1.6 Refactorización completa generación BIN y PRG, cambio de algoritmos, arreglo de bugs, Unit Testing con FoxUnit -* 02/12/2013 FDBOZZO v1.7 Arreglo bug "Name", barra de progreso, agregado mensaje de ayuda si se llama sin parámetros, verificación y logueo de archivos READONLY con debug activa -* 03/12/2013 FDBOZZO v1.8 Arreglo bug "Name" (otra vez), sort encapsulado y reutilizado para versiones TEXTO y BIN por seguridad -* 06/12/2013 FDBOZZO v1.9 Arreglo bug pérdida de propiedades causado por una mejora anterior -* 06/12/2013 FDBOZZO v1.10 Arreglo del bug de mezcla de métodos de una clase con la siguiente -* 07/12/2013 FDBOZZO v1.11 Arreglo del bug de _amembers detectado por Edgar K.con la clase BlowFish.vcx (http://www.tortugaproductiva.galeon.com/docs/blowfish/index.html) -* 07/12/2013 FDBOZZO v1.12 Agregado soporte preliminar de conversión de reportes y etiquetas (FRX/LBX) -* 08/12/2013 FDBOZZO v1.13 Arreglo bug "Error 1924, TOREG is not an object" -* 15/12/2013 FDBOZZO v1.14 Arreglo de bug AutoCenter y registro COMMENT en regeneración de forms -* 08/12/2013 FDBOZZO v1.15 Agregado soporte preliminar de conversión de tablas, índices y bases de datos (DBF,CDX,DBC) -* 18/12/2013 FDBOZZO v1.16 Agregado soporte para menús (MNX) -* 03/01/2014 FDBOZZO v1.17 Agregado Unit Testing de menús y arreglo de las incidencias del menu -* 05/01/2013 FDBOZZO v1.18 Agregado soporte para generar estructuras TEXTO de DBFs anteriores a VFP 9, pero los binarios a VFP 9 // Arreglado bug de datos faltantes en campos de vistas // Arreglado bug mnx -* 08/01/2014 FDBOZZO v1.19 Arreglo bug SCX-VCX: Orden incorrecto en Reserved3 ocaciona que no se disparen eventos ACCESS (y probablemente ASIGN) -* 08/01/2014 FDBOZZO v1.19 Arreglo bug DBF: Tipo de índice generado incorrecto en DB2 cuando es Candidate -* 08/01/2014 FDBOZZO v1.19 Agregado soporte para convertir PJM a PJ2 -* 08/01/2014 FDBOZZO v1.19 Agregada validación al convertir Menús con estructura anterior a VFP9 -* 08/01/2014 FDBOZZO v1.19 Cambiada la propiedad "Autor" por "Author" en los archivos MN2 -* 08/01/2014 FDBOZZO v1.19.1 Cambio en los headers de los archivos TX2 para quitar el timestamp "Generated" que causa diferencias innecesarias -* 08/01/2014 FDBOZZO v1.19.2 Arreglo de bug PJ2: Al regenerar da un error por buscar "Autor" en vez de "Author" -* 08/01/2014 FDBOZZO v1.19.3 Cambio en los timestamps de los TXT para mantener los valores vacíos que generaban muchísimas diferencias -* 22/01/2014 FDBOZZO v1.19.4 Nuevo parámetro Recompile para forzar la recompilación. Ahora por defecto el binario no se recompila para ganar velocidad y evitar errores. Debe recompilar manualmente. -* 22/01/2014 FDBOZZO v1.19.4 DBC: Agregado soporte para comentarios multilínea (propiedad Comment) -* 26/01/2014 FDBOZZO v1.19.5 Agregado soporte multiidioma y traducción al Inglés -* 01/02/2014 FDBOZZO v1.19.6 Agregada compatibilidad con SourceSafe para Diff y Merge -* 02/02/2014 FDBOZZO v1.19.7 Encapsulación de objetos OLE en el propio control o clase // Blocksize ajustado -* 03/02/2014 FDBOZZO v1.19.8 Arreglo bug pageframe (error activePage) -* 08/02/2014 FDBOZZO v1.19.9 Nuevos items de config.en foxbin2prg.cfg / Bug en Localización / Mejora log / Parametrización Nº backups / Timestamps desactivados por defecto -* 09/02/2014 FDBOZZO v1.19.10 Parametrización soporte de tipo de conversión por archivo / ClearUniqueID -* 13/02/2014 FDBOZZO v1.19.11 Optimizaciones WITH/ENDWITH (16%+velocidad) / Arreglo bug #IF anidados -* 21/02/2014 FDBOZZO v1.19.12 Centralizar ZOrder controles en metadata de cabecera de clase para minimizar diferencias / También mover UniqueIDs y Timestamps a metadata -* 26/02/2014 FDBOZZO v1.19.13 Arreglo bug TimeStamp en archivo cfg / ExtraBackupLevels se puede desactivar / Optimizaciones / Casos FoxUnit -* 01/03/2014 FDBOZZO v1.19.14 Arreglo bug regresion cuando no se define ExtraBackupLevels no hace backups / Optimización carga cfg en batch -* 04/03/2014 FDBOZZO v1.19.15 Arreglo bugs: OLE TX2 legacy / NoTimestamp=0 / DBFs backlink -* 07/03/2014 FDBOZZO v1.19.16 Arreglo bugs: Propiedades y métodos Hidden/Protected que no se generan /// Crash métodos vacíos -* 16/03/2014 FDBOZZO v1.19.17 Arreglo bugs frx/lbx: Expresiones con comillas // comment multilínea // Mejora tag2 para Tooltips // Arreglo bugs mnx -* 22/03/2014 FDBOZZO v1.19.18 Arreglo bug vcx/scx: Las imágenes no mantienen sus dimensiones programadas y asumen sus dimensiones reales // El comentario a nivel de librería se pierde -* 29/03/2014 FDBOZZO v1.19.19 Nueva característica: Hooks al regenerar DBF para poder realizar procesos intermedios, como la carga de datos del DBF regenerado desde una fuente externa -* 17/04/2014 FDBOZZO v1.19.20 Relativización de directorios de CDX dentro de los DB2 para minimizar diferencias -* 29/04/2014 FDBOZZO v1.19.21 Agregada posibilidad de convertir un proyecto entero a tx2 // Optimizaciones en generación según timestamps // AGAIN en aperturas // Simplificación sección PAM -* 08/05/2014 FDBOZZO v1.19.22 Arreglo bug vcx/scx: La propiedad Picture de una clase form se pierde y no muestra la imagen +* 04/11/2013 FDBOZZO v1.0 Creación inicial de las clases y soporte de los archivos VCX/SCX/PJX +* 22/11/2013 FDBOZZO v1.1 Corrección de bugs +* 23/11/2013 FDBOZZO v1.2 Corrección de bugs, limpieza de código y refactorización +* 24/11/2013 FDBOZZO v1.3 Corrección de bugs, limpieza de código y refactorización +* 27/11/2013 FDBOZZO v1.4 Agregado soporte comodines *.VCX, configuración de extensiones (vca), parámetro p/log +* 27/11/2013 FDBOZZO v1.5 Arreglo bug que no generaba form completo +* 01/12/2013 FDBOZZO v1.6 Refactorización completa generación BIN y PRG, cambio de algoritmos, arreglo de bugs, Unit Testing con FoxUnit +* 02/12/2013 FDBOZZO v1.7 Arreglo bug "Name", barra de progreso, agregado mensaje de ayuda si se llama sin parámetros, verificación y logueo de archivos READONLY con debug activa +* 03/12/2013 FDBOZZO v1.8 Arreglo bug "Name" (otra vez), sort encapsulado y reutilizado para versiones TEXTO y BIN por seguridad +* 06/12/2013 FDBOZZO v1.9 Arreglo bug pérdida de propiedades causado por una mejora anterior +* 06/12/2013 FDBOZZO v1.10 Arreglo del bug de mezcla de métodos de una clase con la siguiente +* 07/12/2013 FDBOZZO v1.11 Arreglo del bug de _amembers detectado por Edgar K.con la clase BlowFish.vcx (http://www.tortugaproductiva.galeon.com/docs/blowfish/index.html) +* 07/12/2013 FDBOZZO v1.12 Agregado soporte preliminar de conversión de reportes y etiquetas (FRX/LBX) +* 08/12/2013 FDBOZZO v1.13 Arreglo bug "Error 1924, TOREG is not an object" +* 15/12/2013 FDBOZZO v1.14 Arreglo de bug AutoCenter y registro COMMENT en regeneración de forms +* 08/12/2013 FDBOZZO v1.15 Agregado soporte preliminar de conversión de tablas, índices y bases de datos (DBF,CDX,DBC) +* 18/12/2013 FDBOZZO v1.16 Agregado soporte para menús (MNX) +* 03/01/2014 FDBOZZO v1.17 Agregado Unit Testing de menús y arreglo de las incidencias del menu +* 05/01/2013 FDBOZZO v1.18 Agregado soporte para generar estructuras TEXTO de DBFs anteriores a VFP 9, pero los binarios a VFP 9 // Arreglado bug de datos faltantes en campos de vistas // Arreglado bug mnx +* 08/01/2014 FDBOZZO v1.19 Arreglo bug SCX-VCX: Orden incorrecto en Reserved3 ocaciona que no se disparen eventos ACCESS (y probablemente ASIGN) +* 08/01/2014 FDBOZZO v1.19 Arreglo bug DBF: Tipo de índice generado incorrecto en DB2 cuando es Candidate +* 08/01/2014 FDBOZZO v1.19 Agregado soporte para convertir PJM a PJ2 +* 08/01/2014 FDBOZZO v1.19 Agregada validación al convertir Menús con estructura anterior a VFP9 +* 08/01/2014 FDBOZZO v1.19 Cambiada la propiedad "Autor" por "Author" en los archivos MN2 +* 08/01/2014 FDBOZZO v1.19.1 Cambio en los headers de los archivos TX2 para quitar el timestamp "Generated" que causa diferencias innecesarias +* 08/01/2014 FDBOZZO v1.19.2 Arreglo de bug PJ2: Al regenerar da un error por buscar "Autor" en vez de "Author" +* 08/01/2014 FDBOZZO v1.19.3 Cambio en los timestamps de los TXT para mantener los valores vacíos que generaban muchísimas diferencias +* 22/01/2014 FDBOZZO v1.19.4 Nuevo parámetro Recompile para forzar la recompilación. Ahora por defecto el binario no se recompila para ganar velocidad y evitar errores. Debe recompilar manualmente. +* 22/01/2014 FDBOZZO v1.19.4 DBC: Agregado soporte para comentarios multilínea (propiedad Comment) +* 26/01/2014 FDBOZZO v1.19.5 Agregado soporte multiidioma y traducción al Inglés +* 01/02/2014 FDBOZZO v1.19.6 Agregada compatibilidad con SourceSafe para Diff y Merge +* 02/02/2014 FDBOZZO v1.19.7 Encapsulación de objetos OLE en el propio control o clase // Blocksize ajustado +* 03/02/2014 FDBOZZO v1.19.8 Arreglo bug pageframe (error activePage) +* 08/02/2014 FDBOZZO v1.19.9 Nuevos items de config.en foxbin2prg.cfg / Bug en Localización / Mejora log / Parametrización Nº backups / Timestamps desactivados por defecto +* 09/02/2014 FDBOZZO v1.19.10 Parametrización soporte de tipo de conversión por archivo / ClearUniqueID +* 13/02/2014 FDBOZZO v1.19.11 Optimizaciones WITH/ENDWITH (16%+velocidad) / Arreglo bug #IF anidados +* 21/02/2014 FDBOZZO v1.19.12 Centralizar ZOrder controles en metadata de cabecera de clase para minimizar diferencias / También mover UniqueIDs y Timestamps a metadata +* 26/02/2014 FDBOZZO v1.19.13 Arreglo bug TimeStamp en archivo cfg / ExtraBackupLevels se puede desactivar / Optimizaciones / Casos FoxUnit +* 01/03/2014 FDBOZZO v1.19.14 Arreglo bug regresion cuando no se define ExtraBackupLevels no hace backups / Optimización carga cfg en batch +* 04/03/2014 FDBOZZO v1.19.15 Arreglo bugs: OLE TX2 legacy / NoTimestamp=0 / DBFs backlink +* 07/03/2014 FDBOZZO v1.19.16 Arreglo bugs: Propiedades y métodos Hidden/Protected que no se generan /// Crash métodos vacíos +* 16/03/2014 FDBOZZO v1.19.17 Arreglo bugs frx/lbx: Expresiones con comillas // comment multilínea // Mejora tag2 para Tooltips // Arreglo bugs mnx +* 22/03/2014 FDBOZZO v1.19.18 Arreglo bug vcx/scx: Las imágenes no mantienen sus dimensiones programadas y asumen sus dimensiones reales // El comentario a nivel de librería se pierde +* 29/03/2014 FDBOZZO v1.19.19 Nueva característica: Hooks al regenerar DBF para poder realizar procesos intermedios, como la carga de datos del DBF regenerado desde una fuente externa +* 17/04/2014 FDBOZZO v1.19.20 Relativización de directorios de CDX dentro de los DB2 para minimizar diferencias +* 29/04/2014 FDBOZZO v1.19.21 Agregada posibilidad de convertir un proyecto entero a tx2 // Optimizaciones en generación según timestamps // AGAIN en aperturas // Simplificación sección PAM +* 08/05/2014 FDBOZZO v1.19.22 Arreglo bug vcx/scx: La propiedad Picture de una clase form se pierde y no muestra la imagen +* 27/05/2014 FDBOZZO v1.19.23 Arreglo bugs vcx/scx: Redimensionamiento incorrecto de imagenes en ciertas situaciones (props_image.txt y props_optiongroup.txt actualizados) * * *--------------------------------------------------------------------------------------------------- @@ -113,6 +114,7 @@ * 07/05/2014 Fidel Charny REPORTE BUG vcx/scx v1.19.21: La propiedad Picture de una clase form se pierde y no muestra la imagen. No ocurre con la propiedad Picture de los controles (Arreglado en v1.19.22) * 09/05/2014 Miguel Durán REPORTE BUG vcx/scx v1.19.21: Algunas opciones del optiongroup pierden el width cuando se subclasan de una clase con autosize=.T. (Arreglado en v1.19.22) * 13/05/2014 Andrés Mendoza REPORTE BUG vcx/scx v1.19.21: Los métodos que contengan líneas o variables que comiencen con TEXT, provocan que los siguientes métodos queden mal indentados y se dupliquen vacíos (Arreglado en v1.19.22) +* 27/05/2014 Kenny Vermassen REPORTE DE BUG img v1.19.22: La propiedad Stretch no estaba incluida en la lista de propiedades props_image.txt, lo que provocaba un mal redimensionamiento de las imagenes en ciertas situaciones (Arreglado en v1.19.23) * * *--------------------------------------------------------------------------------------------------- @@ -478,7 +480,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM c_Type = '' t_InputFile_TimeStamp = {//::} t_OutputFile_TimeStamp = {//::} - lFileMode = .F. + lFileMode = .T. n_ExisteCapitalizacion = -1 l_ConfigEvaluated = .F. l_Debug = .F. @@ -1388,6 +1390,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM TRY LOCAL lnCodError, lcErrorInfo, laDirFile(1,5), lcExtension, lnFileCount, laFiles(1,1), I ; + , ltFilestamp, lcExtA, lcExtB ; , loFSO AS Scripting.FileSystemObject lnCodError = 0 @@ -1577,7 +1580,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM *-- Optimización: Comparación de los timestamps de InputFile y OutputFile para saber *-- si el OutputFile se debe regenerar o no. lnFileCount = ADIR( laFiles, FORCEEXT( .c_InputFile, '*' ), '', 1 ) - STORE {//::} TO .t_InputFile_TimeStamp, .t_OutputFile_TimeStamp + STORE {//::} TO .t_InputFile_TimeStamp, .t_OutputFile_TimeStamp, ltFilestamp IF lnFileCount >= 1 THEN I = ASCAN( laFiles, JUSTFNAME(.c_InputFile), 1, 0, 1, 1+2+4+8 ) @@ -1592,6 +1595,25 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM .t_OutputFile_TimeStamp = DATETIME( YEAR(laFiles(I,3)), MONTH(laFiles(I,3)), DAY(laFiles(I,3)) ; , VAL(LEFT(laFiles(I,4),2)), VAL(SUBSTR(laFiles(I,4),4,2)), VAL(RIGHT(laFiles(I,4),2)) ) ENDIF + + lcExtA = UPPER(JUSTEXT(.c_OutputFile)) + + DO CASE + CASE INLIST(lcExtA, 'SCX', 'VCX', 'MNX', 'FRX', 'LBX') + lcExtB = ICASE(lcExtA = 'SCX', 'SCT' ; + , lcExtA = 'VCX', 'VCT' ; + , lcExtA = 'MNX', 'MNT' ; + , lcExtA = 'FRX', 'FRT' ; + , lcExtA = 'LBX', 'LBT') + I = ASCAN( laFiles, JUSTFNAME( FORCEEXT(.c_OutputFile, lcExtB) ), 1, 0, 1, 1+2+4+8 ) + IF I > 0 THEN + ltFilestamp = DATETIME( YEAR(laFiles(I,3)), MONTH(laFiles(I,3)), DAY(laFiles(I,3)) ; + , VAL(LEFT(laFiles(I,4),2)), VAL(SUBSTR(laFiles(I,4),4,2)), VAL(RIGHT(laFiles(I,4),2)) ) + ENDIF + + ENDCASE + + .t_OutputFile_TimeStamp = MAX( .t_OutputFile_TimeStamp, ltFilestamp ) ENDIF ENDIF @@ -3475,6 +3497,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base , OBJECT ; , RESERVED1 ; , RESERVED2 ; + , SCCDATA ; , LOCAL ; , KEY ) ; VALUES ; @@ -3493,6 +3516,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base , toProject._HomeDir + CHR(0) ; , UPPER(THIS.c_OutputFile) ; , toProject._ServerHead.getRowServerInfo() ; + , toProject._SccData ; , .T. ; , UPPER( JUSTSTEM( THIS.c_OutputFile) ) ) @@ -4097,6 +4121,13 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base lcPropsMemo = .objectProps2Memo( toObjeto, toClase ) lcMethodsMemo = .objectMethods2Memo( toObjeto, toClase ) + IF EMPTY(toObjeto._TIMESTAMP) + toObjeto._TIMESTAMP = THIS.RowTimeStamp(DATETIME()) + ENDIF + IF EMPTY(toObjeto._UNIQUEID) + toObjeto._UNIQUEID = SYS(2015) + ENDIF + *-- Inserto el objeto INSERT INTO TABLABIN ; ( PLATFORM ; @@ -4123,8 +4154,8 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base , USER) ; VALUES ; ( 'WINDOWS' ; - , IIF( toFoxBin2Prg.l_ClearUniqueID, '', toObjeto._UniqueID ) ; - , IIF( toFoxBin2Prg.l_NoTimestamps, 0, toObjeto._TimeStamp ) ; + , toObjeto._UniqueID ; + , toObjeto._TimeStamp ; , toObjeto._Class ; , toObjeto._ClassLib ; , toObjeto._BaseClass ; @@ -4174,6 +4205,14 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base FOR X = 1 TO toClase._AddObject_Count loObjeto = toClase._AddObjects( X ) + + IF EMPTY(loObjeto._TIMESTAMP) + loObjeto._TIMESTAMP = THIS.RowTimeStamp(DATETIME()) + ENDIF + IF EMPTY(loObjeto._UNIQUEID) + loObjeto._UNIQUEID = SYS(2015) + ENDIF + laObjNames( X, 1 ) = loObjeto._Nombre laObjNames( X, 2 ) = loObjeto._ZOrder loObjeto = NULL @@ -5339,6 +5378,13 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin LOOP ENDIF + IF EMPTY(loClase._TIMESTAMP) + loClase._TIMESTAMP = THIS.RowTimeStamp(DATETIME()) + ENDIF + IF EMPTY(loClase._UNIQUEID) + loClase._UNIQUEID = SYS(2015) + ENDIF + *-- Inserto la clase INSERT INTO TABLABIN ; ( PLATFORM ; @@ -5365,8 +5411,8 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin , USER) ; VALUES ; ( 'WINDOWS' ; - , IIF( toFoxBin2Prg.l_ClearUniqueID, '', loClase._UniqueID ) ; - , IIF( toFoxBin2Prg.l_NoTimestamps, 0, loClase._TimeStamp ) ; + , loClase._UniqueID ; + , loClase._TimeStamp ; , loClase._Class ; , loClase._ClassLoc ; , loClase._BaseClass ; @@ -5635,6 +5681,13 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin LOOP ENDIF + IF EMPTY(loClase._TIMESTAMP) + loClase._TIMESTAMP = THIS.RowTimeStamp(DATETIME()) + ENDIF + IF EMPTY(loClase._UNIQUEID) + loClase._UNIQUEID = SYS(2015) + ENDIF + *-- Inserto la clase INSERT INTO TABLABIN ; ( PLATFORM ; @@ -5661,8 +5714,8 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin , USER) ; VALUES ; ( 'WINDOWS' ; - , IIF( toFoxBin2Prg.l_ClearUniqueID, '', loClase._UniqueID ) ; - , IIF( toFoxBin2Prg.l_NoTimestamps, 0, loClase._TimeStamp ) ; + , loClase._UniqueID ; + , loClase._TimeStamp ; , loClase._Class ; , loClase._ClassLoc ; , loClase._BaseClass ; @@ -5856,6 +5909,7 @@ DEFINE CLASS c_conversor_prg_a_pjx AS c_conversor_prg_a_bin WITH THIS AS c_conversor_prg_a_pjx OF 'FOXBIN2PRG.PRG' STORE NULL TO loFile, loServerHead toProject._HomeDir = CHRTRAN( toProject._HomeDir, ['], [] ) + toProject._SccData = CHR(3) + CHR(0) + CHR(1) + REPLICATE( CHR(0), 651 ) *-- Creo solo el registro de cabecera del proyecto .createProject_RecordHeader( toProject ) @@ -5866,6 +5920,13 @@ DEFINE CLASS c_conversor_prg_a_pjx AS c_conversor_prg_a_bin lcMainProg = LOWER( SYS(2014, toProject._MainProg, ADDBS(toProject._HomeDir) ) ) ENDIF + IF EMPTY(toProject._TIMESTAMP) + toProject._TIMESTAMP = THIS.RowTimeStamp(DATETIME()) + ENDIF + IF EMPTY(toProject._ID) + toProject._ID = INT(VAL(SYS(3))) + ENDIF + *-- Si hay ProjectHook de proyecto, lo inserto IF NOT EMPTY(toProject._ProjectHookLibrary) INSERT INTO TABLABIN ; @@ -5898,6 +5959,14 @@ DEFINE CLASS c_conversor_prg_a_pjx AS c_conversor_prg_a_bin *-- Agrego los ARCHIVOS FOR EACH loFile IN toProject FOXOBJECT + + IF EMPTY(loFile._TIMESTAMP) + loFile._TIMESTAMP = THIS.RowTimeStamp(DATETIME()) + ENDIF + IF EMPTY(loFile._ID) + loFile._ID = INT(VAL(SYS(3))) + ENDIF + INSERT INTO TABLABIN ; ( NAME ; , TYPE ; @@ -5918,8 +5987,8 @@ DEFINE CLASS c_conversor_prg_a_pjx AS c_conversor_prg_a_bin , loFile._Comments ; , .T. ; , loFile._CPID ; - , IIF( toFoxBin2Prg.l_ClearUniqueID, 0, loFile._ID ) ; - , IIF( toFoxBin2Prg.l_NoTimestamps, 0, loFile._TimeStamp ) ; + , loFile._ID ; + , loFile._TimeStamp ; , loFile._ObjRev ; , UPPER(JUSTSTEM(loFile._Name)) ) ENDFOR @@ -6627,11 +6696,17 @@ DEFINE CLASS c_conversor_prg_a_frx AS c_conversor_prg_a_bin *-- Agrego los registros FOR EACH loReg IN toReport FOXOBJECT - IF toFoxBin2Prg.l_NoTimestamps - loReg.TIMESTAMP = 0 + *IF toFoxBin2Prg.l_NoTimestamps + * loReg.TIMESTAMP = 0 + *ENDIF + *IF toFoxBin2Prg.l_ClearUniqueID + * loReg.UNIQUEID = '' + *ENDIF + IF EMPTY(loReg.TIMESTAMP) + loReg.TIMESTAMP = THIS.RowTimeStamp(DATETIME()) ENDIF - IF toFoxBin2Prg.l_ClearUniqueID - loReg.UNIQUEID = '' + IF EMPTY(loReg.UNIQUEID) OR ALLTRIM(loReg.UNIQUEID) = '0' + loReg.UNIQUEID = SYS(2015) ENDIF *-- Ajuste de los tipos de dato @@ -11448,6 +11523,7 @@ DEFINE CLASS CL_PROJECT AS CL_COL_BASE + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -11493,6 +11569,7 @@ DEFINE CLASS CL_PROJECT AS CL_COL_BASE _SourceFile = '' _TimeStamp = 0 _Version = '' + _SccData = '' *-- Dev.info _Author = '' diff --git a/props_image.txt b/props_image.txt index 76ab678..1be9c0d 100644 --- a/props_image.txt +++ b/props_image.txt @@ -12,8 +12,10 @@ DefLeft DefHeight DefWidth Picture +Stretch BackStyle BorderStyle +Enabled Height HelpContextID WhatsThisHelpID diff --git a/props_optiongroup.txt b/props_optiongroup.txt index 42333d4..9117ecf 100644 --- a/props_optiongroup.txt +++ b/props_optiongroup.txt @@ -62,6 +62,7 @@ ColorSource ColorScheme ForeColor BackColor +BorderColor DisabledForeColor DisabledBackColor RightToLeft