From 03e4452dba46d9f3babd9a3e7cf8e2c17e6e329a Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Tue, 13 May 2014 21:25:27 +0200 Subject: [PATCH 01/20] =?UTF-8?q?Changeset:=20237=20fdbozzo=20-=2007/05/20?= =?UTF-8?q?14=2020:47:21:=20-=20Agregado=20soporte=20de=20evaluaci=C3=B3n?= =?UTF-8?q?=20de=20propiedades=20desde=20archivo=20externo=20(props=5F*.tx?= =?UTF-8?q?t)=20-=20Agregado=20soporte=20de=20evaluaci=C3=B3n=20de=20propi?= =?UTF-8?q?edades=20por=20clase=20-=20La=20propiedad=20Picture=20de=20una?= =?UTF-8?q?=20clase=20form=20se=20pierde=20y=20no=20muestra=20la=20imagen.?= =?UTF-8?q?=20No=20ocurre=20con=20la=20propiedad=20Picture=20de=20los=20co?= =?UTF-8?q?ntroles=20(Fidel=20Charny)=20-=20Algunas=20opciones=20del=20opt?= =?UTF-8?q?iongroup=20pierden=20el=20width=20cuando=20se=20subclasan=20de?= =?UTF-8?q?=20una=20clase=20con=20autosize=3D.T.=20(Miguel=20Duran)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TESTS/DATOS_READONLY/cplgd2sg.frt | Bin 0 -> 33024 bytes TESTS/DATOS_READONLY/cplgd2sg.frx | Bin 0 -> 13231 bytes TESTS/DATOS_READONLY/f_checkbox.sct | Bin 0 -> 15835 bytes TESTS/DATOS_READONLY/f_checkbox.scx | Bin 0 -> 2995 bytes TESTS/DATOS_READONLY/f_combobox.sct | Bin 0 -> 32654 bytes TESTS/DATOS_READONLY/f_combobox.scx | Bin 0 -> 2995 bytes TESTS/DATOS_READONLY/f_commandgroup.sct | Bin 0 -> 41661 bytes TESTS/DATOS_READONLY/f_commandgroup.scx | Bin 0 -> 2559 bytes TESTS/DATOS_READONLY/f_containers.sct | Bin 0 -> 6778 bytes TESTS/DATOS_READONLY/f_containers.scx | Bin 0 -> 2232 bytes TESTS/DATOS_READONLY/f_form_aa.sct | Bin 0 -> 69301 bytes TESTS/DATOS_READONLY/f_form_aa.scx | Bin 0 -> 3976 bytes TESTS/DATOS_READONLY/f_form_aa2.sct | Bin 0 -> 49136 bytes TESTS/DATOS_READONLY/f_form_aa2.scx | Bin 0 -> 1469 bytes TESTS/DATOS_READONLY/f_form_controles.sct | Bin 0 -> 57112 bytes TESTS/DATOS_READONLY/f_form_controles.scx | Bin 0 -> 10080 bytes TESTS/DATOS_READONLY/f_formset.sct | Bin 0 -> 24260 bytes TESTS/DATOS_READONLY/f_formset.scx | Bin 0 -> 4412 bytes TESTS/DATOS_READONLY/f_listbox.sct | Bin 0 -> 15563 bytes TESTS/DATOS_READONLY/f_listbox.scx | Bin 0 -> 2341 bytes TESTS/DATOS_READONLY/f_optiongroup.sct | Bin 0 -> 38140 bytes TESTS/DATOS_READONLY/f_optiongroup.scx | Bin 0 -> 2559 bytes TESTS/DATOS_READONLY/f_optiongroup2.sct | Bin 0 -> 8638 bytes TESTS/DATOS_READONLY/f_optiongroup2.scx | Bin 0 -> 1469 bytes TESTS/DATOS_READONLY/f_test.sct | Bin 0 -> 13782 bytes TESTS/DATOS_READONLY/f_test.scx | Bin 0 -> 1469 bytes TESTS/DATOS_READONLY/f_textbox.sct | Bin 0 -> 27919 bytes TESTS/DATOS_READONLY/f_textbox.scx | Bin 0 -> 3649 bytes TESTS/DATOS_READONLY/fb2p_dbc.prg | 224 ++ TESTS/DATOS_READONLY/fb2p_frm_1.sc2 | 120 +- TESTS/DATOS_READONLY/fb2p_frm_1.sct | Bin 14890 -> 14967 bytes TESTS/DATOS_READONLY/fb2p_frm_1.scx | Bin 4194 -> 4303 bytes TESTS/DATOS_READONLY/fb2p_frm_2.sc2 | 30 +- TESTS/DATOS_READONLY/fb2p_frm_2.sct | Bin 5002 -> 5002 bytes TESTS/DATOS_READONLY/fb2p_frm_2.scx | Bin 1796 -> 1796 bytes TESTS/DATOS_READONLY/fb2p_test.pjt | Bin 5676 -> 7656 bytes TESTS/DATOS_READONLY/fb2p_test.pjx | Bin 2753 -> 6913 bytes TESTS/DATOS_READONLY/fb2p_test.vc2 | 18 +- TESTS/DATOS_READONLY/fb2p_test.vct | Bin 16290 -> 83582 bytes TESTS/DATOS_READONLY/fb2p_test.vcx | Bin 4412 -> 6373 bytes TESTS/DATOS_READONLY/fcl_optiongroup.sct | Bin 0 -> 4728 bytes TESTS/DATOS_READONLY/fcl_optiongroup.scx | Bin 0 -> 1469 bytes TESTS/DATOS_READONLY/lib_controles.vct | Bin 0 -> 320800 bytes TESTS/DATOS_READONLY/lib_controles.vcx | Bin 0 -> 31880 bytes TESTS/DATOS_READONLY/lib_controles2.vct | Bin 0 -> 3007 bytes TESTS/DATOS_READONLY/lib_controles2.vcx | Bin 0 -> 1359 bytes .../FoxPro9_Order_for_Control_Properties.xlsx | Bin 0 -> 58426 bytes TESTS/PCT_DLL.dll | Bin 0 -> 155648 bytes ...fxu_lib_objetos_y_funciones_de_soporte.prg | 46 +- TESTS/pct_dll.txt | 22 + TESTS/readme.txt | 201 ++ TESTS/ut__foxbin2prg.prg | 377 ++- ...rg__c_foxbin2prg__EvaluarConfiguracion.prg | 2169 +++++++++++++++++ change_file_type.bat | 4 + clean_copied_memo.prg | 23 + foxbin2prg.pj2 | 4 +- foxbin2prg.pjt | Bin 368729 -> 371268 bytes foxbin2prg.pjx | Bin 1583 -> 1713 bytes foxbin2prg.prg | 76 +- getrevisions.prg | 21 + preparar_SpecialProps_desde_Lista.prg | 12 + props_all.txt | 401 +++ props_checkbox.txt | 64 + props_collection.txt | 8 + props_combobox.txt | 89 + props_commandbutton.txt | 62 + props_commandgroup.txt | 70 + props_container.txt | 36 + props_control.txt | 36 + props_cursor.txt | 17 + props_cursoradapter.txt | 67 + props_dataenvironment.txt | 13 + props_editbox.txt | 72 + props_form.txt | 91 + props_formset.txt | 14 + props_grid.txt | 111 + props_grid_column.txt | 50 + props_grid_header.txt | 24 + props_hyperlink.txt | 7 + props_image.txt | 31 + props_label.txt | 51 + props_line.txt | 33 + props_listbox.txt | 74 + props_olebound.txt | 30 + props_optiongroup.txt | 71 + props_optiongroup_option.txt | 61 + props_pageframe.txt | 39 + props_pageframe_page.txt | 33 + props_pre_v1_19_22.txt | 132 + props_projecthook.txt | 7 + props_relation.txt | 10 + props_reportlistener.txt | 18 + props_separator.txt | 10 + props_shape.txt | 40 + props_spinner.txt | 69 + props_textbox.txt | 82 + props_timer.txt | 13 + props_toolbar.txt | 31 + props_xmladapter.txt | 29 + props_xmlfield.txt | 25 + props_xmltable.txt | 16 + 101 files changed, 5359 insertions(+), 125 deletions(-) create mode 100644 TESTS/DATOS_READONLY/cplgd2sg.frt create mode 100644 TESTS/DATOS_READONLY/cplgd2sg.frx create mode 100644 TESTS/DATOS_READONLY/f_checkbox.sct create mode 100644 TESTS/DATOS_READONLY/f_checkbox.scx create mode 100644 TESTS/DATOS_READONLY/f_combobox.sct create mode 100644 TESTS/DATOS_READONLY/f_combobox.scx create mode 100644 TESTS/DATOS_READONLY/f_commandgroup.sct create mode 100644 TESTS/DATOS_READONLY/f_commandgroup.scx create mode 100644 TESTS/DATOS_READONLY/f_containers.sct create mode 100644 TESTS/DATOS_READONLY/f_containers.scx create mode 100644 TESTS/DATOS_READONLY/f_form_aa.sct create mode 100644 TESTS/DATOS_READONLY/f_form_aa.scx create mode 100644 TESTS/DATOS_READONLY/f_form_aa2.sct create mode 100644 TESTS/DATOS_READONLY/f_form_aa2.scx create mode 100644 TESTS/DATOS_READONLY/f_form_controles.sct create mode 100644 TESTS/DATOS_READONLY/f_form_controles.scx create mode 100644 TESTS/DATOS_READONLY/f_formset.sct create mode 100644 TESTS/DATOS_READONLY/f_formset.scx create mode 100644 TESTS/DATOS_READONLY/f_listbox.sct create mode 100644 TESTS/DATOS_READONLY/f_listbox.scx create mode 100644 TESTS/DATOS_READONLY/f_optiongroup.sct create mode 100644 TESTS/DATOS_READONLY/f_optiongroup.scx create mode 100644 TESTS/DATOS_READONLY/f_optiongroup2.sct create mode 100644 TESTS/DATOS_READONLY/f_optiongroup2.scx create mode 100644 TESTS/DATOS_READONLY/f_test.sct create mode 100644 TESTS/DATOS_READONLY/f_test.scx create mode 100644 TESTS/DATOS_READONLY/f_textbox.sct create mode 100644 TESTS/DATOS_READONLY/f_textbox.scx create mode 100644 TESTS/DATOS_READONLY/fb2p_dbc.prg create mode 100644 TESTS/DATOS_READONLY/fcl_optiongroup.sct create mode 100644 TESTS/DATOS_READONLY/fcl_optiongroup.scx create mode 100644 TESTS/DATOS_READONLY/lib_controles.vct create mode 100644 TESTS/DATOS_READONLY/lib_controles.vcx create mode 100644 TESTS/DATOS_READONLY/lib_controles2.vct create mode 100644 TESTS/DATOS_READONLY/lib_controles2.vcx create mode 100644 TESTS/FoxPro9_Order_for_Control_Properties.xlsx create mode 100644 TESTS/PCT_DLL.dll create mode 100644 TESTS/pct_dll.txt create mode 100644 TESTS/readme.txt create mode 100644 TESTS/ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion.prg create mode 100644 change_file_type.bat create mode 100644 clean_copied_memo.prg create mode 100644 getrevisions.prg create mode 100644 preparar_SpecialProps_desde_Lista.prg create mode 100644 props_all.txt create mode 100644 props_checkbox.txt create mode 100644 props_collection.txt create mode 100644 props_combobox.txt create mode 100644 props_commandbutton.txt create mode 100644 props_commandgroup.txt create mode 100644 props_container.txt create mode 100644 props_control.txt create mode 100644 props_cursor.txt create mode 100644 props_cursoradapter.txt create mode 100644 props_dataenvironment.txt create mode 100644 props_editbox.txt create mode 100644 props_form.txt create mode 100644 props_formset.txt create mode 100644 props_grid.txt create mode 100644 props_grid_column.txt create mode 100644 props_grid_header.txt create mode 100644 props_hyperlink.txt create mode 100644 props_image.txt create mode 100644 props_label.txt create mode 100644 props_line.txt create mode 100644 props_listbox.txt create mode 100644 props_olebound.txt create mode 100644 props_optiongroup.txt create mode 100644 props_optiongroup_option.txt create mode 100644 props_pageframe.txt create mode 100644 props_pageframe_page.txt create mode 100644 props_pre_v1_19_22.txt create mode 100644 props_projecthook.txt create mode 100644 props_relation.txt create mode 100644 props_reportlistener.txt create mode 100644 props_separator.txt create mode 100644 props_shape.txt create mode 100644 props_spinner.txt create mode 100644 props_textbox.txt create mode 100644 props_timer.txt create mode 100644 props_toolbar.txt create mode 100644 props_xmladapter.txt create mode 100644 props_xmlfield.txt create mode 100644 props_xmltable.txt diff --git a/TESTS/DATOS_READONLY/cplgd2sg.frt b/TESTS/DATOS_READONLY/cplgd2sg.frt new file mode 100644 index 0000000000000000000000000000000000000000..e08dace909f874b34dd799e580e7520cc2e70cf2 GIT binary patch literal 33024 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
  • oNPV{49k_GA_&=S2VoRbiybA__5Kt9VtFAx;k zR!xw0MT{qeOzk9g{0z)k9t`%3iLa0{N7eIe&`S6zsc@8}z_ouBTR?c;`|LvOeWtMs z6CdDvf&DC&ntXTsJF!2Fy+5WQ=l!vNl+R~l|301?`=i*qp^`t7B~(jevDoEUEJmpX z_7~$RKb@lC`aT5Or|2IEN)terkk}r>RTiXY@Q)RQ{XP=EL1p;=W2E0X$C!*nr0Ytw zP@Tw!Ac*4cdm-FW{QY7)ioZX+Xp#Ix@%KOiAtH*uKRn|^HHTw>_$c^9@%I5H)bjz2 zzkjJ0zpkS2aRYJqugUBV#qXcs=x@X>$Bn<&MuUGyDE{bh2Q3Kxu)kFI;E1?k@?{yvJokK*r-Eu)AC&`7g8!oU`~F|Ph~n=L&y6R+e^LDX;qg6Klkgwo_&Va}Bu)_x~J06o20hL673^qxkzM{(e8x znC#yu{{DFJ@5kN$I&S+Y{=OSyK6u^pp^HsELYPJr6ynD>Bu5Vlp`ar5%MF89h#xx6 z$wg7^QB=G76^bB+J&J1Y1w!uHOu!Fl?-?R`P@riz6z!n8dyg_0IUNdnBxv#4{VfoB zkD}V?mrtUocH#x~iK5yM|BDv^&gdCMwRf>GsAPhI0bNAdGAk&jXHU5f_7c{Q$wA91 z9Itx>bC*UQFnRwUMYTsilGWp?hxtdcq91}A{2{pEyHMDF`W40BKMawrQJ{PjD1T4= z@<0?Q-}_yO2Qg6o;rkVi6Z-*@-BI*GDE{uq`=3ZP9}3d{13%#258|Jfzm!7p_q`bT zlZmN)&Kc?`173ud7UH2%`6kh)`r2h~vX`~nM{|?d=e_upe KRydjX`~L®}L2 literal 0 HcmV?d00001 diff --git a/TESTS/DATOS_READONLY/cplgd2sg.frx b/TESTS/DATOS_READONLY/cplgd2sg.frx new file mode 100644 index 0000000000000000000000000000000000000000..b5e30fbd88b221ddf5f1b58d4cf3c39a616b98c9 GIT binary patch literal 13231 zcmeHNNslB)6;1|_Y|B0YLPA1>IIz=X7BUMOIJBY6fKVG$gmJ7jc$qdS#hU$AsUGF^Gq=7b1Da8tORt)p?~K z&0f@lpU%sL#?{N9+}`QnxP|+Dcs@NkuDJ#E+8+FDImQa^N5>hDV02FpKA9GUE-<>c2d}duJY|{PhpgK_aL?fPGrnG8o~tS!a|!is zWY5%vO$Pj^%5x&19_YspizUBb^u=9-Ccw21s?PxLxPOB;15}^y!Do7M0#c9k z;MKA){;3`X-t`~Gi>b;Nj`~UuepGR60pb*oZNbU!A?k4?-S|QE&HVdX4?ZbM{d%3^ z3El!Y6SIv z(1Rc4DzCBvh@*apr0ai+c{Z9VjuGldJ@~j>9_j#E{22I#{m!!aah_3-EPk>DpOj@y z_)mNA{3IXMhdGu&r})`6JezR+pZDNcKc^f$!T%RM_+mMmWz{(lr}$+Lo{h&@G0kX= zDt^_2my-z$2mtTz*GRhW5B`Vtk7x|)H$6D~&*H!B!RxZlipB%g?|^sxgYCUt zsVPgj;N*XlWZU*28PixvHaPMFHXv!Yh$SbUJ3Ts+N~B@v#jfv$GREK=iXbW7KpsR9 zoM@Tb5qw(1xVV!BMlQTa5dY|Yi#SgzGVJ}5RXw0)I7t0UrFP&iA>;Qs{~60 zaY`uRIYJ7F@x+e1HlRsOq2@Q-)rY&2>EC3z?|v2+{aX1tVBOLzl9;$V^T~>_R=7YQ(j$|jZOsR=$0}P8i6$;YwMf| zw~}%NxGTK}{d99q?&z*{oq2|25?PY3MxS;nde)MLr0+)oo0P~H5u{*zl#$R-2a|ja zSJ)HD(<`aeBm>`Db64L)S7Axo=!%8KZU&eUjgb@(ql^UVy6IM)%G!U zbZZ~`n3UT#=r^0>$v#O|XQ8hx>BExkIhmL{j+G_NW?;Y3mG^>hiOsz$9vU%)n%~#m zpevBXQH$M`NSZl`uRl&AH_wxLPI|a1;L9Eqvm!`CpOleM_dFDvtncy&w?g;zv^C$0 zyPlqu`V~;wrh>vRab33*e&`!s|_5C-LD1Brgzn>h0&ra(uR++d94(h*p-Yi6j;d zy-u1X#F8}UX%w>}NQ3n#BY`^HlJxy7i*B=xzZq0^*-{!c}S-ALZUbur?hB>AQf?{NUhsatpmJamH| zMJp4L^mCK;Hk zEz6L`_%0skZthC|@KM<6~KZ<54;rRQegy%!+)zP*yn zt~PTLpR{oOVWR8%iKN-YZIbk3eV#@!E8+pDySnQKxbD6znV+6CmJB^_Me>8_Gc-*4 zNa9YGuC^>g8smp}pu4&2gIsq{B(II+6+;rYb;gn(MxU|yn6=uVo9G&uP=sPu#7Cg+ zYRQjs-F=Wu+|%UbGA@^CGZ5lHX-R&J`V91WGKjU^>}{Qg&y#%p@sOp6@}FIi{2Z&D zd)Mwy(GvP!Kwk8~Q#Ko=o+YGpgKpLtvrg9Z5tc^t1!~EB)oS%%RXFV0whSLU5Mc>U zw1SOJ^F$81k_@OWH$cjD|gkMs=8}9)m?jV KV?R11pZ9O9Ac|@L literal 0 HcmV?d00001 diff --git a/TESTS/DATOS_READONLY/f_checkbox.sct b/TESTS/DATOS_READONLY/f_checkbox.sct new file mode 100644 index 0000000000000000000000000000000000000000..29f7075ddccf613edb12850c2e3d7b2fd51b9529 GIT binary patch literal 15835 zcmeHOU2oeq6m@~3TfG_kc^6oC!(EihaM1%(KJkEj%4Wb9kt%cry_t+FV-Yw)ibQr~VSKc5R$G1n+ z8;zwIJ8;;HyAY^!~b#m&18xWp7>#ulppV()^3>^{-tPM4b6F zEWdMaWySL$;}d!R-Jxiry83s)pj*u5ltf}|J#ApJB@C!N@FJ_M1}sWo?T|k8tBE-- zg57452?++3q(&K38>?)SY2>j0r*9v%?LV8{zlx{b^OHtr?xP+j`n8n3vaqdl(X=}a zr_t&Y{NVc6?wGnaeWoI|G?d?G9DlUuZB z;#a+2NfNYLgNG)0Y3&#CDqpSoULk)7snlft0J}JZJizjCM10THEh?%F?hzm6hhE)T zdbfokZC$$-7r8#>-c^f-u{I1%@5Xf)TMaL0^8&oJRD#s^oN;93>aYRn=g$0Evi!{1`>g9TPEBz>O_?$$JXZzOOeexMC6 zpK_Xvu1VY*C;H&y1T0t{TJFm%EQYhb>yr>d1`)j^{tSI#>@am)-3fMJLbU@i44e+G z)+6dq(T(0l$E~>4)tE$KZ|sFwCyc+tb5GbTq-V^-!Nq>Ul1Un8N?mxdai+y?PDG+v z*d)9M&j1q+Ld^%p*du)>5>P0{(__rTh$O?QcLV{otE5Nv0!28E=- zj6Mmm#9nfhwt+mOzxbLh&lw`@6Pa}NX4h7mgrnC_AE4Y31xb(@Ht z!K80Y&PQUWq0y?eu-di}DFms7L@K=#1-fN+qH6=JttC=sH@ec@==^{~?Xg7aVPM)Y zBBcRSib$n#$q*?+q#k)L!eG)$F$sy3hDI-^WJHG?4$vuuENjT0DUT%z*{3##lXU2% z4q@QE&1T}@7OePKL93uRCaFtWL4(s%iGpU~H@!+in?D)g6AP*1Zo-gM=xtDO!`jpd zH(^LBbazcKTotdZ%V@q*0v$eGgxM;KamV!=Ez`lmo4*!w!p)p;3#mEbmifx`e?Q@d z=Mo=0;Z_G&lYo7**XH8zsnI$`SzCA;-Qm)RaaetUcmbj>BZy~mQO&xNNABUL&)>7*)+ zPKH#i6P?V_HV(hHdICRax(At%RB4#h6u%lQ!EdmN2c=@YRJ8D_l!{fnz@C55;Xl*P BoNE98 literal 0 HcmV?d00001 diff --git a/TESTS/DATOS_READONLY/f_checkbox.scx b/TESTS/DATOS_READONLY/f_checkbox.scx new file mode 100644 index 0000000000000000000000000000000000000000..59e84b1834fe4a21bea1962d465bfe352d14089b GIT binary patch literal 2995 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 NUVSK<{kyq6KL8SE)ldKc literal 0 HcmV?d00001 diff --git a/TESTS/DATOS_READONLY/f_containers.sct b/TESTS/DATOS_READONLY/f_containers.sct new file mode 100644 index 0000000000000000000000000000000000000000..d78ebfd9f5f5a96f145d351cfa44506e804a1508 GIT binary patch literal 6778 zcmeHLUvJws5KoGs#oQY0UiaknDFZygl9RM~=z}9WhylkAVkgCh00Ax2woq9#C^<{J zud|P`FVfe2irrBpCF;-W2E(>)X<>xCJD#ZH?|ygG&d#?Vc6N4l;rHg0$&il)HO>Sq`&JP~XZ>A)oQv6NePj5UH#+(H- zvTnUQsrYKn_)3nSoQNgL)$d*Aa!O*ckx6D3(hQ#7oB6SAsojYgNC#v}gSHkYQ;@rC zwIbon(HbRCYi!FU>)2-@zNKi#J?s&$_m(YpG!CoF!ZL=5y-B5v+#Cn!a$>2RwleTnI0n&|5N|JWA~GeSi;v z9d_wF!M_;F3=m@td@)lQQLlBp*uPa#bO2`|nFe%*Ps5NV-u9f=t?zY4?K%4}Q7-nJ zgF~2V|9iIm3g%~Q1Bb)>Fs5>+LXvwE*gd{<@+ge9NM13$@*^L1qO>jx7}wdlU$0$Y zB2SonN9zPOdrE_~3zaJpotX2#h!ypM$xM*>T8!ajTD6c6Z$+XBqDz7oH zrIjYg3~}y^wC)5#d&~lX4Gg!T=*J}RJv^;~N=2!|eG+5?gbqiWIPgPp%!P&HC7H3G zOMQ<054h%aZWoZQ{yQ2k`KEN$WjLd}@^Jv284aWIz4Y#48kWDhyCi%}Wl_;V$?)s> z$Auq~2J)v?|H+BwQcy1`fw$I`<6Nr|pd$`14`D$fOCg%eDy=yt-aC=q82q(T>aVNGpr1VXCU2sUW7T(?}b&N*)B(A!+GY+0X$0X?f0N zW=%U={-n!x>auOP1U{E8(=x3DutrwDXI^q5*@{@%NEB*kT{;x2%d6$1UkcUoi!XLt zl`g1Ux^T5ySP^712xTi%wQL(^MfClLYnFi-KqA5+Z7{`5O4BY9rI-l#*USPGXoX50 zVFpsw;$c@zfb4md0Qy#GQGw#QSyR(eTBx9ZV+;2AO_%Jd+SoYB1_oLzqp8}*9xH9C z4pE!djOl6}UC*Iju?6=d3#RoNGWIyut>7_3zE@}m(jTv>2L(832aweZ&0enM+BzMw zZCgo^s;Eu*hOVTZR2HG+4&;g3dM&qQs_i1Y?CHXCInx4a`I6z#d?k^hc0_BIo{6SY|PlBJ(+XTbRN{ zb%p?g4-Jw~E5t8Grgb?OcRyBv(Yz~^TuATDfVN}YE0N?hwDu109;sjlmri8F97W|? zWpNo!uaMb$vYP}--yoAKox0ouU2Mm8olVT--9ub-V2t-=pi^;a-J1PQSrjYkfn!Ct zSCmiBXee$jc=bk^XmOJ7LO|D_$7uOOPto%fcufIFBBzqpDj@X?$W6JZfYYz{hEqa7 zfDMy@G%^lerMM7u^ni-3KUHMUEk#5P5MfeDB_N)dc2B{fl$7J((N9%4_#%5Y`^ae8 z#4N*6j=^AuHcZpzir(+Um!&3rg=ic#8wbsXjX$T^XyXs$wLbtQ#IsER literal 0 HcmV?d00001 diff --git a/TESTS/DATOS_READONLY/f_containers.scx b/TESTS/DATOS_READONLY/f_containers.scx new file mode 100644 index 0000000000000000000000000000000000000000..356d46c18d97a04ea0086f528a57ec950cc87a2a GIT binary patch literal 2232 zcmeH|Pixdb7{*`Q6@W~&INoJ$FXJ2^U*`43aJb5R{L|r-DZWGZ`>ppTh z78Z#D*NnIPkU^|NNK54*H1eF`NH})FmywQCcs#pNGZMaOMj~H>&q}zzdDAmlB&+fT2@lLrcyWS>FUff52O^9e5fN*09t$fL*Z?*p zoJD-Yx6=xFAmO+^%eS-ZyPERy4)|`$K!{D*d{^iRM5I-gXA^}Y65+P6aqaA2&@_%k zIJwEwco%%wzkOdcqum}z?!{yth6JD%;2Bjrv{w>4eecDtHp=<1+r^t-3>1umoA%75=PEV`ew zcT>jH&3cKMrfNM^|A0xKp>NP4j=LmIG63C@OohM)Vwd4ZVdvK?l&h sQ85#$!9``yP7=L@_M!LC7w9WAZ~Q(%etmNOJVIoP4m+~mf9vb~1aqLKFaQ7m literal 0 HcmV?d00001 diff --git a/TESTS/DATOS_READONLY/f_form_aa.sct b/TESTS/DATOS_READONLY/f_form_aa.sct new file mode 100644 index 0000000000000000000000000000000000000000..c7184f0febf42a7b424934d5cc2bbaa9548e54f1 GIT binary patch literal 69301 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 qlEbqUg=#|r&)+GntLI2ziqy)5FwPR?(ZO=c?#j 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 b{)OLv{sG`&D&ZuQFu#AW2n9AJD8T;$`QtW+ literal 0 HcmV?d00001 diff --git a/TESTS/DATOS_READONLY/f_form_aa2.scx b/TESTS/DATOS_READONLY/f_form_aa2.scx new file mode 100644 index 0000000000000000000000000000000000000000..88eb688266f9e1cef63bf5306c7df47eb68eb62c GIT binary patch literal 1469 zcmeH{y-ve05P%I7sUXV2f{>8Hz`%fLLIZSQaFdHj$;D~xv@lc%K?epHcr;c97G8nZ z-~pI8rvaME4L>s{`5fJMcfPyGZmupiYK*aZ?Ur;|<`)=CBCZ0FA`x$nRK4uNvN-Hz z5c--gky@VODnyWqW5QUxX5e1Lr5wlLChfYGNy&L6JhI^yscGKf5{ewSZQ!EQjX8o& zi8}_K@DyUDF~eOGPelT$3PCco&0K+}fChlBfg`9B;pZJ<+rX(lPx#~dj&ok_P((Q+ z!jPNdBXBe%$-68^GnRscv=2Vjjv+bC;*DNU%qHP<#(7l0FpdafZ+2VbJWSJU;z8?3sdIXuZ;UD-x{Gv-el| U9OK8mo1CL5>GhMz`ZL?cI}Rmc>Hq)$ literal 0 HcmV?d00001 diff --git a/TESTS/DATOS_READONLY/f_form_controles.sct b/TESTS/DATOS_READONLY/f_form_controles.sct new file mode 100644 index 0000000000000000000000000000000000000000..bc106b102026a85de92daa9caa9d65c936686511 GIT binary patch literal 57112 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

    xgAItiC))iY^i4K23ta{`Ip4M2UIj>$Om`2JR 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,'...]',']') ; + + ' ObjCode=' + TRANSFORM(toReg_Esperado.ObjCode) + ' Expr=[' + LEFT(toReg_Esperado.EXPR,20) ; + + IIF(LEN(toReg_Esperado.EXPR)>20,'...]',']') ; + ' vpos=' + TRANSFORM(toReg_Esperado.VPOS) + ' hpos=' + TRANSFORM(toReg_Esperado.HPOS) ; + ' height=' + TRANSFORM(toReg_Esperado.HEIGHT) + ' width=' + TRANSFORM(toReg_Esperado.WIDTH) ) @@ -306,7 +309,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg STORE 0 TO lnCodError_Esperado lnRecno = RECNO() SCATTER MEMO NAME loReg_Esperado - lcUniqueID = loReg_Esperado.UNIQUEID + lcUniqueID = loReg_Esperado.UniqueID *-- TEST IF FILE(lc_OutputFile) @@ -316,7 +319,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg ERROR 'No se encontró el archivo "' + lc_OutputFile + '"' ENDIF - LOCATE FOR UNIQUEID==lcUniqueID + LOCATE FOR UniqueID==lcUniqueID IF NOT FOUND() ERROR 'No se encontró el registro #' + TRANSFORM(RECNO('ARCHIVOBIN_IN')) + ' con UniqueID "' + lcUniqueID + '" en el archivo "' + lc_OutputFile + '"' @@ -382,7 +385,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg STORE 0 TO lnCodError_Esperado lnRecno = RECNO() SCATTER MEMO NAME loReg_Esperado - lcUniqueID = loReg_Esperado.UNIQUEID + lcUniqueID = loReg_Esperado.UniqueID *-- TEST IF FILE(lc_OutputFile) @@ -392,7 +395,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg ERROR 'No se encontró el archivo "' + lc_OutputFile + '"' ENDIF - LOCATE FOR UNIQUEID==lcUniqueID + LOCATE FOR UniqueID==lcUniqueID IF NOT FOUND() ERROR 'No se encontró el registro #' + TRANSFORM(RECNO('ARCHIVOBIN_IN')) + ' con UniqueID "' + lcUniqueID + '" en el archivo "' + lc_OutputFile + '"' @@ -451,7 +454,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg SELECT 0 USE (lc_InputFile) SHARED AGAIN NOUPDATE ALIAS ARCHIVOBIN_IN - SCAN ALL FOR NOT DELETED() AND ( UNIQUEID==PADR('Form',10) OR PLATFORM==PADR("WINDOWS",8) ) + SCAN ALL FOR NOT DELETED() AND ( UniqueID==PADR('Form',10) OR PLATFORM==PADR("WINDOWS",8) ) *-- DATOS ESPERADOS STORE 0 TO lnCodError_Esperado SCATTER MEMO NAME loReg_Esperado @@ -468,9 +471,9 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg ENDIF IF EMPTY(lcParent) AND EMPTY(lcClass) AND EMPTY(lcObjName) - LOCATE FOR PLATFORM==PADR("COMMENT",8) AND UNIQUEID==PADR("Screen",10) + LOCATE FOR PLATFORM==PADR("COMMENT",8) AND UniqueID==PADR("Screen",10) IF NOT FOUND() - ERROR 'No se encontró el registro de cabecera "' + UNIQUEID + '"' + ERROR 'No se encontró el registro de cabecera "' + UniqueID + '"' ENDIF ELSE LOCATE FOR LOWER(CLASS)==lcClass AND LOWER(PARENT)==lcParent AND LOWER(objName)==lcObjName @@ -532,13 +535,13 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg SELECT 0 USE (lc_OutputFile) SHARED AGAIN NOUPDATE ALIAS TABLABIN - LOCATE FOR ObjName = 'Pageframe1' AND NOT DELETED() AND PLATFORM==PADR("WINDOWS",8) - - this.assertequals( .T., FOUND(), 'No se ha encontrado el objeto "Pageframe1" que se iba a testear' ) + LOCATE FOR objName = 'Pageframe1' AND NOT DELETED() AND PLATFORM==PADR("WINDOWS",8) + + THIS.assertequals( .T., FOUND(), 'No se ha encontrado el objeto "Pageframe1" que se iba a testear' ) *-- DATOS ESPERADOS STORE 0 TO lnCodError_Esperado - SCATTER FIELDS Properties MEMO NAME loReg + SCATTER FIELDS PROPERTIES MEMO NAME loReg DIMENSION laProps_Esperado(8) laProps_Esperado( 1) = 'ErasePage' laProps_Esperado( 2) = 'PageCount' @@ -548,27 +551,27 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg laProps_Esperado( 6) = 'Height' laProps_Esperado( 7) = 'Width' laProps_Esperado( 8) = 'Name' - + *-- TEST - =ALINES(laProps, loReg.Properties) - - this.messageout( 'Línea : Valor esperado => Valor actual' ) - this.messageout( REPLICATE('-',50) ) + =ALINES(laProps, loReg.PROPERTIES) + + THIS.messageout( 'Línea : Valor esperado => Valor actual' ) + THIS.messageout( REPLICATE('-',50) ) FOR I = 1 TO ALEN(laProps_Esperado) lcProp = GETWORDNUM(laProps(I),1) - this.messageout( 'Línea ' + TRANSFORM(I) + ': ' + laProps_Esperado(I) + ' => ' + lcProp ) + THIS.messageout( 'Línea ' + TRANSFORM(I) + ': ' + laProps_Esperado(I) + ' => ' + lcProp ) ENDFOR FOR I = 1 TO ALEN(laProps_Esperado) lcProp = GETWORDNUM(laProps(I),1) - this.assertequals( laProps_Esperado(I), lcProp, 'Elemento (' + TRANSFORM(I) + ') del Memo Properties' ) + THIS.assertequals( laProps_Esperado(I), lcProp, 'Elemento (' + TRANSFORM(I) + ') del Memo Properties' ) ENDFOR *USE IN (SELECT("TABLABIN")) *THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_OutputFile, lcParent, lcClass, lcObjName ; - , loReg_Esperado, loReg, lcTipoBinario ) + , loReg_Esperado, loReg, lcTipoBinario ) CATCH TO loEx THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_OutputFile, lcParent, lcClass, lcObjName, loReg_Esperado ) @@ -615,42 +618,49 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg SELECT 0 USE (lc_OutputFile) SHARED AGAIN NOUPDATE ALIAS TABLABIN - LOCATE FOR ObjName = 'Optiongroup1' AND NOT DELETED() AND PLATFORM==PADR("WINDOWS",8) - - this.assertequals( .T., FOUND(), 'No se ha encontrado el objeto "Optiongroup1" que se iba a testear' ) + LOCATE FOR objName = 'Optiongroup1' AND NOT DELETED() AND PLATFORM==PADR("WINDOWS",8) + + THIS.assertequals( .T., FOUND(), 'No se ha encontrado el objeto "Optiongroup1" que se iba a testear' ) *-- DATOS ESPERADOS STORE 0 TO lnCodError_Esperado - SCATTER FIELDS Properties MEMO NAME loReg + SCATTER FIELDS PROPERTIES MEMO NAME loReg DIMENSION laProps_Esperado(7) laProps_Esperado( 1) = 'ButtonCount' - laProps_Esperado( 2) = 'Value' - laProps_Esperado( 3) = 'Top' - laProps_Esperado( 4) = 'Left' - laProps_Esperado( 5) = 'Height' - laProps_Esperado( 6) = 'Width' + *laProps_Esperado( 2) = 'Value' + *laProps_Esperado( 3) = 'Top' + *laProps_Esperado( 4) = 'Left' + *laProps_Esperado( 5) = 'Height' + *laProps_Esperado( 6) = 'Width' + *laProps_Esperado( 7) = 'Name' + *-- 13/05/2014. v1.19.22 - Reordenamiento de todas propiedades + laProps_Esperado( 2) = 'Top' + laProps_Esperado( 3) = 'Left' + laProps_Esperado( 4) = 'Height' + laProps_Esperado( 5) = 'Width' + laProps_Esperado( 6) = 'Value' laProps_Esperado( 7) = 'Name' - + *-- TEST - =ALINES(laProps, loReg.Properties) - - this.messageout( 'Línea : Valor esperado => Valor actual' ) - this.messageout( REPLICATE('-',50) ) + =ALINES(laProps, loReg.PROPERTIES) + + THIS.messageout( 'Línea : Valor esperado => Valor actual' ) + THIS.messageout( REPLICATE('-',50) ) FOR I = 1 TO ALEN(laProps_Esperado) lcProp = GETWORDNUM(laProps(I),1) - this.messageout( 'Línea ' + TRANSFORM(I) + ': ' + laProps_Esperado(I) + ' => ' + lcProp ) + THIS.messageout( 'Línea ' + TRANSFORM(I) + ': ' + laProps_Esperado(I) + ' => ' + lcProp ) ENDFOR FOR I = 1 TO ALEN(laProps_Esperado) lcProp = GETWORDNUM(laProps(I),1) - this.assertequals( laProps_Esperado(I), lcProp, 'Elemento (' + TRANSFORM(I) + ') del Memo Properties' ) + THIS.assertequals( laProps_Esperado(I), lcProp, 'Elemento (' + TRANSFORM(I) + ') del Memo Properties' ) ENDFOR *USE IN (SELECT("TABLABIN")) *THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_OutputFile, lcParent, lcClass, lcObjName ; - , loReg_Esperado, loReg, lcTipoBinario ) + , loReg_Esperado, loReg, lcTipoBinario ) CATCH TO loEx THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_OutputFile, lcParent, lcClass, lcObjName, loReg_Esperado ) @@ -700,7 +710,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg SELECT 0 USE (lc_InputFile) SHARED AGAIN NOUPDATE ALIAS ARCHIVOBIN_IN - SCAN ALL FOR NOT DELETED() AND ( UNIQUEID==PADR('Class',10) OR PLATFORM==PADR("WINDOWS",8) ) + SCAN ALL FOR NOT DELETED() AND ( UniqueID==PADR('Class',10) OR PLATFORM==PADR("WINDOWS",8) ) *-- DATOS ESPERADOS STORE 0 TO lnCodError_Esperado SCATTER MEMO NAME loReg_Esperado @@ -717,9 +727,9 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg ENDIF IF EMPTY(lcParent) AND EMPTY(lcClass) AND EMPTY(lcObjName) - LOCATE FOR PLATFORM==PADR("COMMENT",8) AND UNIQUEID==PADR("Class",10) + LOCATE FOR PLATFORM==PADR("COMMENT",8) AND UniqueID==PADR("Class",10) IF NOT FOUND() - ERROR 'No se encontró el registro de cabecera "' + UNIQUEID + '"' + ERROR 'No se encontró el registro de cabecera "' + UniqueID + '"' ENDIF ELSE LOCATE FOR LOWER(CLASS)==lcClass AND LOWER(PARENT)==lcParent AND LOWER(objName)==lcObjName @@ -782,7 +792,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg SELECT 0 USE (lc_InputFile) SHARED AGAIN NOUPDATE ALIAS ARCHIVOBIN_IN - SCAN ALL FOR NOT DELETED() AND ( UNIQUEID==PADR('Class',10) OR PLATFORM==PADR("WINDOWS",8) ) + SCAN ALL FOR NOT DELETED() AND ( UniqueID==PADR('Class',10) OR PLATFORM==PADR("WINDOWS",8) ) *-- DATOS ESPERADOS STORE 0 TO lnCodError_Esperado SCATTER MEMO NAME loReg_Esperado @@ -799,9 +809,9 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg ENDIF IF EMPTY(lcParent) AND EMPTY(lcClass) AND EMPTY(lcObjName) - LOCATE FOR PLATFORM==PADR("COMMENT",8) AND UNIQUEID==PADR("Class",10) + LOCATE FOR PLATFORM==PADR("COMMENT",8) AND UniqueID==PADR("Class",10) IF NOT FOUND() - ERROR 'No se encontró el registro de cabecera "' + UNIQUEID + '"' + ERROR 'No se encontró el registro de cabecera "' + UniqueID + '"' ENDIF ELSE LOCATE FOR LOWER(CLASS)==lcClass AND LOWER(PARENT)==lcParent AND LOWER(objName)==lcObjName @@ -864,7 +874,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg SELECT 0 USE (lc_InputFile) SHARED AGAIN NOUPDATE ALIAS ARCHIVOBIN_IN - SCAN ALL FOR NOT DELETED() AND ( UNIQUEID==PADR('Class',10) OR PLATFORM==PADR("WINDOWS",8) ) + SCAN ALL FOR NOT DELETED() AND ( UniqueID==PADR('Class',10) OR PLATFORM==PADR("WINDOWS",8) ) *-- DATOS ESPERADOS STORE 0 TO lnCodError_Esperado SCATTER MEMO NAME loReg_Esperado @@ -881,9 +891,9 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg ENDIF IF EMPTY(lcParent) AND EMPTY(lcClass) AND EMPTY(lcObjName) - LOCATE FOR PLATFORM==PADR("COMMENT",8) AND UNIQUEID==PADR("Class",10) + LOCATE FOR PLATFORM==PADR("COMMENT",8) AND UniqueID==PADR("Class",10) IF NOT FOUND() - ERROR 'No se encontró el registro de cabecera "' + UNIQUEID + '"' + ERROR 'No se encontró el registro de cabecera "' + UniqueID + '"' ENDIF ELSE LOCATE FOR LOWER(CLASS)==lcClass AND LOWER(PARENT)==lcParent AND LOWER(objName)==lcObjName @@ -911,4 +921,277 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg ENDFUNC + ******************************************************************************************************************************************* + FUNCTION Evaluate_Bitmap_Test + LPARAMETERS tcTestName, tcControlName, tcFormName + + IF PCOUNT() = 0 + THIS.messageout( "* Support method, not a valid test." ) + RETURN .T. + ENDIF + + LOCAL lnCodError, lnCodError_Esperado ; + , lc_File, lcFile2, lc_OutputFile, lcTipoBinario, lcLib, lcBMP0, lcBMP1 ; + , 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 + loEx = NULL + loCnv = NEWOBJECT("c_foxbin2prg", "FOXBIN2PRG.PRG") + *loCnv.l_Debug = .F. + *loCnv.l_ShowErrors = .F. + *loCnv.l_Test = .T. + *loCnv.l_PropSort_Enabled = .F. && Para buscar diferencias + *loCnv.l_MethodSort_Enabled = .F. && Para buscar diferencias + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError, lnCodError_Esperado + + lcTipoBinario = EVL( UPPER(JUSTEXT(EVL(tcFormName,''))), 'VCX' ) + + *-- Copio la librería en DATOS_TEST + lcLib = FORCEPATH( "LIB_CONTROLES.VCX", oFXU_LIB.cPathDatosTest ) + lc_File2 = 'LIB_CONTROLES.VCX' + lc_OutputFile = FORCEPATH( lc_File2, oFXU_LIB.cPathDatosTest ) + + IF lcTipoBinario = 'SCX' + lc_File = UPPER(tcFormName) + lc_OutputFile = FORCEPATH( lc_File, oFXU_LIB.cPathDatosTest ) + ENDIF + + loCnv.l_NoTimestamps = .F. + loCnv.l_ClearUniqueID = .F. + + IF lcTipoBinario = 'SCX' + oFXU_LIB.copiarArchivosParaTest( FORCEEXT( lc_File, LEFT( JUSTEXT(lc_File),2 ) + 'X' ) ) + oFXU_LIB.copiarArchivosParaTest( FORCEEXT( lc_File, LEFT( JUSTEXT(lc_File),2 ) + 'T' ) ) + ENDIF + + oFXU_LIB.copiarArchivosParaTest( FORCEEXT( lc_File2, LEFT( JUSTEXT(lc_File2),2 ) + 'X' ) ) + oFXU_LIB.copiarArchivosParaTest( FORCEEXT( lc_File2, LEFT( JUSTEXT(lc_File2),2 ) + 'T' ) ) + + *-- Genero TX2 + loCnv.Ejecutar( lc_OutputFile, .F., .F., .F., '1', '0', '1', '', '', .T., '', SYS(5)+CURDIR(), '1', '0' ) + + *-- Genero BMP con libreria original + SET CLASSLIB TO (lcLib) ADDITIVE + IF lcTipoBinario = 'SCX' + DO FORM (lc_OutputFile) NAME loCtl LINKED NOSHOW + ELSE + loCtl = CREATEOBJECT( tcControlName ) + ENDIF + loCtl.c_testname = tcTestName + '_0' + IF loCtl.BaseClass = 'Formset' + loCtl.Forms(1).ALWAYSONTOP= .T. + loCtl.SHOW() + loCtl.REFRESH() + ELSE + loCtl.ALWAYSONTOP= .T. + loCtl.SHOW() + ENDIF + loCtl.HIDE() + loCtl.RELEASE() + loCtl = NULL + RELEASE CLASSLIB (lcLib) + CLEAR CLASSLIB (lcLib) + + *-- Genero BIN + loCnv.Ejecutar( FORCEEXT(lc_OutputFile, LEFT( JUSTEXT(lc_OutputFile),2 ) + '2' ), .F., .F., .F., '1', '0', '1', '', '', .T., '', SYS(5)+CURDIR(), '1', '0' ) + + *-- Genero BMP con libreria regenerada + SET CLASSLIB TO (lcLib) ADDITIVE + IF lcTipoBinario = 'SCX' + DO FORM (lc_OutputFile) NAME loCtl LINKED NOSHOW + ELSE + loCtl = CREATEOBJECT( tcControlName ) + ENDIF + loCtl.c_testname = tcTestName + '_1' + IF loCtl.BaseClass = 'Formset' + loCtl.Forms(1).ALWAYSONTOP= .T. + loCtl.SHOW() + loCtl.REFRESH() + ELSE + loCtl.ALWAYSONTOP= .T. + loCtl.SHOW() + ENDIF + loCtl.HIDE() + loCtl.RELEASE() + loCtl = NULL + RELEASE CLASSLIB (lcLib) + CLEAR CLASSLIB (lcLib) + + *-- Comparo resultados + lcBMP0 = FORCEPATH( tcTestName + '_0.bmp', oFXU_LIB.cPathDatosTest ) + lcBMP1 = FORCEPATH( tcTestName + '_1.bmp', oFXU_LIB.cPathDatosTest ) + + 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" ) + + + 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 + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaLaClase__LIB_CONTROLES__F_OptionGroup__YValidarLaVisualizacionDePantalla + + THIS.evaluate_bitmap_test( 'OptionGroup_Test', 'f_OptionGroup', '' ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaElForm__F_OptionGroup__YValidarLaVisualizacionDePantalla + + THIS.evaluate_bitmap_test( 'OptionGroup_Test', 'f_OptionGroup', 'F_OPTIONGROUP.SCX' ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaLaClase__LIB_CONTROLES__F_Checkbox__YValidarLaVisualizacionDePantalla + + THIS.evaluate_bitmap_test( 'Checkbox_Test', 'f_Checkbox', '' ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaElForm__F_Checkbox__YValidarLaVisualizacionDePantalla + + THIS.evaluate_bitmap_test( 'Checkbox_Test', 'f_Checkbox', 'F_CHECKBOX.SCX' ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaLaClase__LIB_CONTROLES__F_Textbox__YValidarLaVisualizacionDePantalla + + THIS.evaluate_bitmap_test( 'Textbox_Test', 'f_Textbox', '' ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaElForm__F_Textbox__YValidarLaVisualizacionDePantalla + + THIS.evaluate_bitmap_test( 'Textbox_Test', 'f_Textbox', 'F_TEXTBOX.SCX' ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaLaClase__LIB_CONTROLES__F_Combobox__YValidarLaVisualizacionDePantalla + + THIS.evaluate_bitmap_test( 'Combobox_Test', 'f_Combobox', '' ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaElForm__F_Combobox__YValidarLaVisualizacionDePantalla + + THIS.evaluate_bitmap_test( 'Combobox_Test', 'f_Combobox', 'F_Combobox.SCX' ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaLaClase__LIB_CONTROLES__F_CommandGroup__YValidarLaVisualizacionDePantalla + + THIS.evaluate_bitmap_test( 'CommandGroup_Test', 'f_CommandGroup', '' ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaElForm__F_CommandGroup__YValidarLaVisualizacionDePantalla + + THIS.evaluate_bitmap_test( 'CommandGroup_Test', 'f_CommandGroup', 'F_CommandGroup.SCX' ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaLaClase__LIB_CONTROLES__F_ListBox__YValidarLaVisualizacionDePantalla + + THIS.evaluate_bitmap_test( 'ListBox_Test', 'f_ListBox', '' ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaElForm__F_ListBox__YValidarLaVisualizacionDePantalla + + THIS.evaluate_bitmap_test( 'ListBox_Test', 'f_ListBox', 'F_ListBox.SCX' ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaLaClase__LIB_CONTROLES__F_Form_Controles__YValidarLaVisualizacionDePantalla + + THIS.evaluate_bitmap_test( 'Form_Controles_Test', 'f_Form_Controles', '' ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaElForm__F_Form_Controles__YValidarLaVisualizacionDePantalla + + THIS.evaluate_bitmap_test( 'Form_Controles_Test', 'f_Form_Controles', 'F_Form_Controles.SCX' ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaElForm__F_Formset__YValidarLaVisualizacionDePantalla + #IF .F. + PUBLIC oFXU_LIB AS CL_FXU_CONFIG OF 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG' + #ENDIF + + oFXU_LIB.copiarArchivosParaTest( 'encuestas.*' ) + THIS.evaluate_bitmap_test( 'Formset_Test', 'f_Formset', 'F_Formset.SCX' ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaElForm__F_Form_AA__YValidarLaVisualizacionDePantalla + #IF .F. + PUBLIC oFXU_LIB AS CL_FXU_CONFIG OF 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG' + #ENDIF + + THIS.evaluate_bitmap_test( 'Form_Test_Eventos_y_Controles', 'f_Form_AA', 'F_Form_AA.SCX' ) + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaElForm__F_Form_AA2__YValidarLaVisualizacionDePantalla + #IF .F. + PUBLIC oFXU_LIB AS CL_FXU_CONFIG OF 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG' + #ENDIF + + THIS.evaluate_bitmap_test( 'Form_Test_Eventos_y_Controles2', 'f_Form_AA2', 'F_Form_AA2.SCX' ) + + ENDFUNC + + ENDDEFINE diff --git a/TESTS/ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion.prg b/TESTS/ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion.prg new file mode 100644 index 0000000..d8de2b0 --- /dev/null +++ b/TESTS/ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion.prg @@ -0,0 +1,2169 @@ +DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase OF FxuTestCase.prg + + #IF .F. + LOCAL THIS AS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion OF ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion.PRG + #ENDIF + + #DEFINE CR_LF CHR(13) + CHR(10) + #DEFINE C_CR CHR(13) + #DEFINE C_LF CHR(10) + #DEFINE C_TAB CHR(9) + ioFB2P = NULL + + + ******************************************************************************************************************************************* + FUNCTION SETUP + PUBLIC oFXU_LIB AS CL_FXU_CONFIG OF 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG' + *LOCAL loFB2P AS c_conversor_base OF "FOXBIN2PRG.PRG" + SET PROCEDURE TO 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG', 'FOXBIN2PRG.PRG' + oFXU_LIB = CREATEOBJECT('CL_FXU_CONFIG') + oFXU_LIB.setup_comun() + + THIS.ioFB2P = NEWOBJECT("c_foxbin2prg", "FOXBIN2PRG.PRG") + *loFB2P = THIS.ioFB2P + *loFB2P.l_Test = .F. + + ERASE ('TESTS\DATOS_TEST\foxbin2prg.cfg') + ERASE ('TESTS\DATOS_TEST\foxbin2prg.cfg.bak') + ERASE ('TESTS\DATOS_TEST\foxbin2prg.cfg.1.bak') + ERASE ('TESTS\DATOS_TEST\foxbin2prg.cfg.2.bak') + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION TearDown + #IF .F. + PUBLIC oFXU_LIB AS CL_FXU_CONFIG OF 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG' + #ENDIF + THIS.ioFB2P = NULL + + IF VARTYPE(oFXU_LIB) = "O" + oFXU_LIB.teardown_comun() + oFXU_LIB = NULL + ENDIF + RELEASE PROCEDURE 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG', 'FOXBIN2PRG.PRG' + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Evaluate_results + LPARAMETERS toEx AS EXCEPTION, tnCodError_Esperado, tcSeteo, teValorEsperado, teValor + + #IF .F. + PUBLIC oFXU_LIB AS CL_FXU_CONFIG OF 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG' + #ENDIF + + IF PCOUNT() = 0 + THIS.messageout( "* Support method, not a valid test." ) + RETURN .T. + ENDIF + + + IF ISNULL(toEx) + *-- Visualización de valores + LOCAL loFB2P AS c_foxbin2prg OF "FOXBIN2PRG.PRG" + loFB2P = THIS.ioFB2P + THIS.messageout( LOWER(PROGRAM(PROGRAM(-1)-1)) ) + THIS.messageout( '.' ) + THIS.messageout( 'Archivo ' + loFB2P.c_Foxbin2prg_ConfigFile + IIF(FILE(loFB2P.c_Foxbin2prg_ConfigFile),': EXISTE', ': NO EXISTE') ) + THIS.messageout( TRANSFORM(tcSeteo) ) + THIS.messageout( 'Valor esperado: ' + TRANSFORM(teValorEsperado) ) + THIS.messageout( 'Valor: ' + TRANSFORM(teValor) ) + + *-- Formateo + * '[' + oFXU_LIB.mejorarPresentacionCaracteresEspeciales( TRANSFORM( EVALUATE('toReg_Esperado.'+laProps(I)) ) ) + ']' ) + + *-- COMPARO + THIS.assertequals( TRANSFORM(teValorEsperado), TRANSFORM(teValor), tcSeteo ) + + + ELSE + *-- Evaluación de errores + THIS.messageout( "Error " + TRANSFORM(toEx.ERRORNO) + ', ' + TRANSFORM(toEx.MESSAGE) ) + THIS.messageout( toEx.PROCEDURE + ', ' + TRANSFORM(toEx.LINENO) ) + IF NOT INLIST( toEx.ERRORNO, 1098, 2071 ) && Error del usuario (ERROR y THROW) + THIS.messageout( TRANSFORM(toEx.LINECONTENTS) ) + ENDIF + + THIS.assertequals( tnCodError_Esperado, toEx.ERRORNO, 'Error' ) + ENDIF + + THIS.messageout( '' ) + THIS.messageout( REPLICATE('*',80) ) + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_GenerarExtension_BAK_Cuando_ExtraBackupLevels_EsteComentado_UseElValorPorDefecto_YNoExistaBAK + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.l_ShowErrors = .F. + STRTOFILE('', 'TESTS\DATOS_TEST\foxbin2prg.cfg') + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'Extensión de Backup' + leValorEsperado = '.BAK' + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.getNext_BAK('TESTS\DATOS_TEST\foxbin2prg.cfg') + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_GenerarExtension_BAK_Cuando_ExtraBackupLevels_EsteComentado_UseElValorPorDefecto_YExistaBAK + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.l_ShowErrors = .F. + STRTOFILE('', 'TESTS\DATOS_TEST\foxbin2prg.cfg') + STRTOFILE('', 'TESTS\DATOS_TEST\foxbin2prg.cfg.BAK') + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'Extensión de Backup' + leValorEsperado = '.BAK' + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.getNext_BAK('TESTS\DATOS_TEST\foxbin2prg.cfg') + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_GenerarExtension_BAK_Cuando_ExtraBackupLevels_Sea_0_YNoExistaBAK + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.l_ShowErrors = .F. + STRTOFILE('ExtraBackupLevels:0', 'TESTS\DATOS_TEST\foxbin2prg.cfg') + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'Extensión de Backup' + leValorEsperado = '.BAK' + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.getNext_BAK('TESTS\DATOS_TEST\foxbin2prg.cfg') + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_GenerarExtension_BAK_Cuando_ExtraBackupLevels_Sea_0_YExistaBAK + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.l_ShowErrors = .F. + STRTOFILE('ExtraBackupLevels:0', 'TESTS\DATOS_TEST\foxbin2prg.cfg') + STRTOFILE('ExtraBackupLevels:0', 'TESTS\DATOS_TEST\foxbin2prg.cfg.bak') + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'Extensión de Backup' + leValorEsperado = '.BAK' + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.getNext_BAK('TESTS\DATOS_TEST\foxbin2prg.cfg') + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_GenerarExtension_BAK_Cuando_ExtraBackupLevels_Sea_1_YNoExistaBAK + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.l_ShowErrors = .F. + STRTOFILE('ExtraBackupLevels:1', 'TESTS\DATOS_TEST\foxbin2prg.cfg') + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'Extensión de Backup' + leValorEsperado = '.BAK' + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.getNext_BAK('TESTS\DATOS_TEST\foxbin2prg.cfg') + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_GenerarExtension_1_BAK_Cuando_ExtraBackupLevels_Sea_1_YExistaBAK + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.l_ShowErrors = .F. + STRTOFILE('ExtraBackupLevels:1', 'TESTS\DATOS_TEST\foxbin2prg.cfg') + STRTOFILE('ExtraBackupLevels:1', 'TESTS\DATOS_TEST\foxbin2prg.cfg.bak') + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'Extensión de Backup' + leValorEsperado = '.BAK' + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.getNext_BAK('TESTS\DATOS_TEST\foxbin2prg.cfg') + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_GenerarExtension_BAK_Cuando_ExtraBackupLevels_Sea_2_YExista_1_BAK + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.l_ShowErrors = .F. + STRTOFILE('ExtraBackupLevels:2', 'TESTS\DATOS_TEST\foxbin2prg.cfg') + STRTOFILE('ExtraBackupLevels:2', 'TESTS\DATOS_TEST\foxbin2prg.cfg.bak') + STRTOFILE('ExtraBackupLevels:2', 'TESTS\DATOS_TEST\foxbin2prg.cfg.1.bak') + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'Extensión de Backup' + leValorEsperado = '.BAK' + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.getNext_BAK('TESTS\DATOS_TEST\foxbin2prg.cfg') + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_GenerarExtension_BAK_Cuando_ExtraBackupLevels_Sea_2_YExista_2_BAK + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.l_ShowErrors = .F. + STRTOFILE('ExtraBackupLevels:2', 'TESTS\DATOS_TEST\foxbin2prg.cfg') + STRTOFILE('ExtraBackupLevels:2', 'TESTS\DATOS_TEST\foxbin2prg.cfg.bak') + STRTOFILE('ExtraBackupLevels:2', 'TESTS\DATOS_TEST\foxbin2prg.cfg.1.bak') + STRTOFILE('ExtraBackupLevels:2', 'TESTS\DATOS_TEST\foxbin2prg.cfg.2.bak') + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'Extensión de Backup' + leValorEsperado = '.BAK' + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.getNext_BAK('TESTS\DATOS_TEST\foxbin2prg.cfg') + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ******************************************************************************************************************************************* + FUNCTION Deberia_Setear_Debug_False_CuandoNoExistaElArhivo_foxbin2prg_cfg + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.l_ShowErrors = .F. + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'l_Debug' + leValorEsperado = .F. + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.l_Debug + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Setear_Debug_False_CuandoElArhivo_foxbin2prg_cfg_Tenga_Debug_0 + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.l_ShowErrors = .F. + STRTOFILE('Debug:0', 'TESTS\DATOS_TEST\foxbin2prg.cfg') + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'l_Debug' + leValorEsperado = .F. + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.l_Debug + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Setear_Debug_True_CuandoElArhivo_foxbin2prg_cfg_Tenga_Debug_1 + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.l_ShowErrors = .F. + STRTOFILE('Debug:1', 'TESTS\DATOS_TEST\foxbin2prg.cfg') + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'l_Debug' + leValorEsperado = .T. + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.l_Debug + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Setear_NoTimestamps_True_CuandoNoExistaElArhivo_foxbin2prg_cfg + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.l_ShowErrors = .F. + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'l_NoTimestamps' + leValorEsperado = .T. + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.l_NoTimestamps + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Setear_NoTimestamps_False_CuandoElArhivo_foxbin2prg_cfg_Tenga_NoTimestamps_0 + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.l_ShowErrors = .F. + STRTOFILE('NoTimestamps:0', 'TESTS\DATOS_TEST\foxbin2prg.cfg') + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'l_NoTimestamps' + leValorEsperado = .F. + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.l_NoTimestamps + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Setear_NoTimestamps_True_CuandoElArhivo_foxbin2prg_cfg_Tenga_NoTimestamps_1 + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.l_ShowErrors = .F. + STRTOFILE('NoTimestamps:1', 'TESTS\DATOS_TEST\foxbin2prg.cfg') + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'l_NoTimestamps' + leValorEsperado = .T. + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.l_NoTimestamps + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Setear_ClearUniqueID_False_CuandoNoExistaElArhivo_foxbin2prg_cfg + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.l_ShowErrors = .F. + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'l_ClearUniqueID' + leValorEsperado = .F. + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.l_ClearUniqueID + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Setear_ClearUniqueID_False_CuandoElArhivo_foxbin2prg_cfg_Tenga_ClearUniqueID_0 + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.l_ShowErrors = .F. + STRTOFILE('ClearUniqueID:0', 'TESTS\DATOS_TEST\foxbin2prg.cfg') + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'l_ClearUniqueID' + leValorEsperado = .F. + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.l_ClearUniqueID + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Setear_ClearUniqueID_True_CuandoElArhivo_foxbin2prg_cfg_Tenga_ClearUniqueID_1 + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.l_ShowErrors = .F. + STRTOFILE('ClearUniqueID:1', 'TESTS\DATOS_TEST\foxbin2prg.cfg') + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'l_ClearUniqueID' + leValorEsperado = .T. + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.l_ClearUniqueID + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Setear_ShowProgress_True_CuandoNoExistaElArhivo_foxbin2prg_cfg + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.l_ShowErrors = .F. + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'l_ShowProgress' + leValorEsperado = .T. + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.l_ShowProgress + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Setear_ShowProgress_True_CuandoElArhivo_foxbin2prg_cfg_Tenga_DontShowProgress_0 + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.l_ShowErrors = .F. + STRTOFILE('DontShowProgress:0', 'TESTS\DATOS_TEST\foxbin2prg.cfg') + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'l_ShowProgress' + leValorEsperado = .T. + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.l_ShowProgress + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Setear_ShowProgress_False_CuandoElArhivo_foxbin2prg_cfg_Tenga_DontShowProgress_1 + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.l_ShowErrors = .F. + STRTOFILE('DontShowProgress:1', 'TESTS\DATOS_TEST\foxbin2prg.cfg') + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'l_ShowProgress' + leValorEsperado = .F. + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.l_ShowProgress + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Setear_ShowErrors_True_CuandoNoExistaElArhivo_foxbin2prg_cfg + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'l_ShowErrors' + leValorEsperado = .T. + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.l_ShowErrors + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Setear_ShowErrors_True_CuandoElArhivo_foxbin2prg_cfg_Tenga_DontShowErrors_0 + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + STRTOFILE('DontShowErrors:0', 'TESTS\DATOS_TEST\foxbin2prg.cfg') + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'l_ShowErrors' + leValorEsperado = .T. + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.l_ShowErrors + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_Setear_ShowErrors_False_CuandoElArhivo_foxbin2prg_cfg_Tenga_DontShowErrors_1 + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + STRTOFILE('DontShowErrors:1', 'TESTS\DATOS_TEST\foxbin2prg.cfg') + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'l_ShowErrors' + leValorEsperado = .F. + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.l_ShowErrors + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_SetearLaExtension_DB2_Como_DB2_CuandoNoExistaElArhivo_foxbin2prg_cfg + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.l_ShowErrors = .F. + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'DB2 Extension:' + leValorEsperado = 'DB2' + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.c_DB2 + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_SetearLaExtension_DB2_Como_DBA_CuandoElArhivo_foxbin2prg_cfg_TengaExtension_DB2_igual_DBA + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.l_ShowErrors = .F. + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + STRTOFILE('Extension:db2=dba', 'TESTS\DATOS_TEST\foxbin2prg.cfg') + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'DB2 Extension:' + leValorEsperado = 'DBA' + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.c_DB2 + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_SetearLaExtension_DC2_Como_DC2_CuandoNoExistaElArhivo_foxbin2prg_cfg + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.l_ShowErrors = .F. + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'DC2 Extension:' + leValorEsperado = 'DC2' + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.c_DC2 + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_SetearLaExtension_DC2_Como_DCA_CuandoElArhivo_foxbin2prg_cfg_TengaExtension_DC2_igual_DCA + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.l_ShowErrors = .F. + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + STRTOFILE('Extension:dc2=dca', 'TESTS\DATOS_TEST\foxbin2prg.cfg') + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'DC2 Extension:' + leValorEsperado = 'DCA' + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.c_DC2 + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_SetearLaExtension_FR2_Como_FR2_CuandoNoExistaElArhivo_foxbin2prg_cfg + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.l_ShowErrors = .F. + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'FR2 Extension:' + leValorEsperado = 'FR2' + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.c_FR2 + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_SetearLaExtension_FR2_Como_FRA_CuandoElArhivo_foxbin2prg_cfg_TengaExtension_FR2_igual_FRA + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.l_ShowErrors = .F. + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + STRTOFILE('Extension:fr2=fra', 'TESTS\DATOS_TEST\foxbin2prg.cfg') + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'FR2 Extension:' + leValorEsperado = 'FRA' + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.c_FR2 + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_SetearLaExtension_LB2_Como_LB2_CuandoNoExistaElArhivo_foxbin2prg_cfg + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.l_ShowErrors = .F. + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'LB2 Extension:' + leValorEsperado = 'LB2' + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.c_LB2 + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_SetearLaExtension_LB2_Como_LBA_CuandoElArhivo_foxbin2prg_cfg_TengaExtension_LB2_igual_LBA + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.l_ShowErrors = .F. + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + STRTOFILE('Extension:lb2=lba', 'TESTS\DATOS_TEST\foxbin2prg.cfg') + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'LB2 Extension:' + leValorEsperado = 'LBA' + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.c_LB2 + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_SetearLaExtension_MN2_Como_MN2_CuandoNoExistaElArhivo_foxbin2prg_cfg + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.l_ShowErrors = .F. + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'MN2 Extension:' + leValorEsperado = 'MN2' + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.c_MN2 + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_SetearLaExtension_MN2_Como_MNA_CuandoElArhivo_foxbin2prg_cfg_TengaExtension_MN2_igual_MNA + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.l_ShowErrors = .F. + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + STRTOFILE('Extension:mn2=mna', 'TESTS\DATOS_TEST\foxbin2prg.cfg') + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'MN2 Extension:' + leValorEsperado = 'MNA' + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.c_MN2 + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_SetearLaExtension_PJ2_Como_PJ2_CuandoNoExistaElArhivo_foxbin2prg_cfg + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.l_ShowErrors = .F. + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'PJ2 Extension:' + leValorEsperado = 'PJ2' + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.c_PJ2 + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_SetearLaExtension_PJ2_Como_PJA_CuandoElArhivo_foxbin2prg_cfg_TengaExtension_PJ2_igual_PJA + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.l_ShowErrors = .F. + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + STRTOFILE('Extension:pj2=pja', 'TESTS\DATOS_TEST\foxbin2prg.cfg') + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'PJ2 Extension:' + leValorEsperado = 'PJA' + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.c_PJ2 + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_SetearLaExtension_SC2_Como_SC2_CuandoNoExistaElArhivo_foxbin2prg_cfg + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.l_ShowErrors = .F. + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'SC2 Extension:' + leValorEsperado = 'SC2' + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.c_SC2 + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_SetearLaExtension_SC2_Como_SCA_CuandoElArhivo_foxbin2prg_cfg_TengaExtension_SC2_igual_SCA + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.l_ShowErrors = .F. + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + STRTOFILE('Extension:sc2=sca', 'TESTS\DATOS_TEST\foxbin2prg.cfg') + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'SC2 Extension:' + leValorEsperado = 'SCA' + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.c_SC2 + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_SetearLaExtension_VC2_Como_VC2_CuandoNoExistaElArhivo_foxbin2prg_cfg + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.l_ShowErrors = .F. + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'VC2 Extension:' + leValorEsperado = 'VC2' + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.c_VC2 + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_SetearLaExtension_VC2_Como_VCA_CuandoElArhivo_foxbin2prg_cfg_TengaExtension_VC2_igual_VCA + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.l_ShowErrors = .F. + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + STRTOFILE('Extension:vc2=vca', 'TESTS\DATOS_TEST\foxbin2prg.cfg') + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'VC2 Extension:' + leValorEsperado = 'VCA' + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.c_VC2 + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_SetearElSoporte_DBF_Como_1_CuandoNoExistaElArhivo_foxbin2prg_cfg + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.l_ShowErrors = .F. + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'DBF_Conversion_Support:' + leValorEsperado = 1 + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.DBF_Conversion_Support + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_SetearElSoporte_DBF_Como_0_CuandoElArhivo_foxbin2prg_cfg_Y_DBF_Conversion_Support_Sea_0 + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.l_ShowErrors = .F. + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + STRTOFILE('DBF_Conversion_Support:0', 'TESTS\DATOS_TEST\foxbin2prg.cfg') + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'DBF_Conversion_Support:' + leValorEsperado = 0 + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.DBF_Conversion_Support + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_SetearElSoporte_DBC_Como_2_CuandoNoExistaElArhivo_foxbin2prg_cfg + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.l_ShowErrors = .F. + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'DBC_Conversion_Support:' + leValorEsperado = 2 + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.DBC_Conversion_Support + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_SetearElSoporte_DBC_Como_0_CuandoElArhivo_foxbin2prg_cfg_Y_DBC_Conversion_Support_Sea_0 + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.l_ShowErrors = .F. + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + STRTOFILE('DBC_Conversion_Support:0', 'TESTS\DATOS_TEST\foxbin2prg.cfg') + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'DBC_Conversion_Support:' + leValorEsperado = 0 + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.DBC_Conversion_Support + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_SetearElSoporte_PJX_Como_2_CuandoNoExistaElArhivo_foxbin2prg_cfg + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.l_ShowErrors = .F. + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'PJX_Conversion_Support:' + leValorEsperado = 2 + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.PJX_Conversion_Support + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_SetearElSoporte_PJX_Como_0_CuandoElArhivo_foxbin2prg_cfg_Y_PJX_Conversion_Support_Sea_0 + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.l_ShowErrors = .F. + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + STRTOFILE('PJX_Conversion_Support:0', 'TESTS\DATOS_TEST\foxbin2prg.cfg') + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'PJX_Conversion_Support:' + leValorEsperado = 0 + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.PJX_Conversion_Support + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_SetearElSoporte_SCX_Como_2_CuandoNoExistaElArhivo_foxbin2prg_cfg + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.l_ShowErrors = .F. + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'SCX_Conversion_Support:' + leValorEsperado = 2 + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.SCX_Conversion_Support + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_SetearElSoporte_SCX_Como_0_CuandoElArhivo_foxbin2prg_cfg_Y_SCX_Conversion_Support_Sea_0 + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.l_ShowErrors = .F. + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + STRTOFILE('SCX_Conversion_Support:0', 'TESTS\DATOS_TEST\foxbin2prg.cfg') + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'SCX_Conversion_Support:' + leValorEsperado = 0 + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.SCX_Conversion_Support + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_SetearElSoporte_VCX_Como_2_CuandoNoExistaElArhivo_foxbin2prg_cfg + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.l_ShowErrors = .F. + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'VCX_Conversion_Support:' + leValorEsperado = 2 + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.VCX_Conversion_Support + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_SetearElSoporte_VCX_Como_0_CuandoElArhivo_foxbin2prg_cfg_Y_VCX_Conversion_Support_Sea_0 + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.l_ShowErrors = .F. + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + STRTOFILE('VCX_Conversion_Support:0', 'TESTS\DATOS_TEST\foxbin2prg.cfg') + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'VCX_Conversion_Support:' + leValorEsperado = 0 + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.VCX_Conversion_Support + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_SetearElSoporte_MNX_Como_2_CuandoNoExistaElArhivo_foxbin2prg_cfg + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.l_ShowErrors = .F. + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'MNX_Conversion_Support:' + leValorEsperado = 2 + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.MNX_Conversion_Support + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_SetearElSoporte_MNX_Como_0_CuandoElArhivo_foxbin2prg_cfg_Y_MNX_Conversion_Support_Sea_0 + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.l_ShowErrors = .F. + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + STRTOFILE('MNX_Conversion_Support:0', 'TESTS\DATOS_TEST\foxbin2prg.cfg') + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'MNX_Conversion_Support:' + leValorEsperado = 0 + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.MNX_Conversion_Support + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_SetearElSoporte_FRX_Como_2_CuandoNoExistaElArhivo_foxbin2prg_cfg + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.l_ShowErrors = .F. + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'FRX_Conversion_Support:' + leValorEsperado = 2 + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.FRX_Conversion_Support + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_SetearElSoporte_FRX_Como_0_CuandoElArhivo_foxbin2prg_cfg_Y_FRX_Conversion_Support_Sea_0 + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.l_ShowErrors = .F. + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + STRTOFILE('FRX_Conversion_Support:0', 'TESTS\DATOS_TEST\foxbin2prg.cfg') + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'FRX_Conversion_Support:' + leValorEsperado = 0 + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.FRX_Conversion_Support + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_SetearElSoporte_LBX_Como_2_CuandoNoExistaElArhivo_foxbin2prg_cfg + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.l_ShowErrors = .F. + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'LBX_Conversion_Support:' + leValorEsperado = 2 + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.LBX_Conversion_Support + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_SetearElSoporte_LBX_Como_0_CuandoElArhivo_foxbin2prg_cfg_Y_LBX_Conversion_Support_Sea_0 + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; + , loFB2P 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 + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.l_ShowErrors = .F. + loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + STRTOFILE('LBX_Conversion_Support:0', 'TESTS\DATOS_TEST\foxbin2prg.cfg') + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'LBX_Conversion_Support:' + leValorEsperado = 0 + + + *-- TEST + loFB2P.EvaluarConfiguracion() + leValor = loFB2P.LBX_Conversion_Support + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + ENDTRY + + ENDFUNC + + +ENDDEFINE diff --git a/change_file_type.bat b/change_file_type.bat new file mode 100644 index 0000000..559ff47 --- /dev/null +++ b/change_file_type.bat @@ -0,0 +1,4 @@ +FOR /F "tokens=*" %%i IN ('dir /S /B *.prg') DO cm chgrevtype %%i -type=txt +FOR /F "tokens=*" %%i IN ('dir /S /B *.??2') DO cm chgrevtype %%i -type=txt +FOR /F "tokens=*" %%i IN ('dir /S /B *.??a') DO cm chgrevtype %%i -type=txt +FOR /F "tokens=*" %%i IN ('dir /S /B *.cfg*') DO cm chgrevtype %%i -type=txt diff --git a/clean_copied_memo.prg b/clean_copied_memo.prg new file mode 100644 index 0000000..659160f --- /dev/null +++ b/clean_copied_memo.prg @@ -0,0 +1,23 @@ +LOCAL I, lcStrIn, lcStrOut, laStr(1), lcLeftDelim, lcRightDelim, lcStr, lnLines, lnPosDlr +ON KEY LABEL CTRL+R DO clean_copied_memo.prg +lcStrOut = '' +lcStrIn = _CLIPTEXT +lnLines = ALINES(laStr, lcStrIn) +lnPosDlr = AT('.',laStr(1)) + +*-- +lcLeftDelim = IIF(lnPosDlr > 0 AND lnPosDlr < AT('=', laStr(1)), LEFT(laStr(1), lnPosDlr), '') +lcRightDelim = ' =' +*-- +MESSAGEBOX( "LeftDelim = " + lcLeftDelim) + +FOR I = 1 TO lnLines + lcStr = STREXTRACT( laStr(I), lcLeftDelim, lcRightDelim ) + *IF EMPTY(lcStr) + * lcStr = STREXTRACT( laStr(I), '', lcRightDelim ) + *ENDIF + laStr(I) = lcStr + lcStrOut = lcStrOut + CHR(13) + laStr(I) +ENDFOR + +_CLIPTEXT = SUBSTR( lcStrOut, 2 ) diff --git a/foxbin2prg.pj2 b/foxbin2prg.pj2 index 04756a4..f1ac3f1 100644 --- a/foxbin2prg.pj2 +++ b/foxbin2prg.pj2 @@ -23,10 +23,10 @@ _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.20" +_ProductName = " FOXBIN2PRG v1.19.22" _MajorVer = "1" _MinorVer = "19" -_Revision = " 319" +_Revision = " 321" _LanguageID = "1034" _AutoIncrement = "1" * diff --git a/foxbin2prg.pjt b/foxbin2prg.pjt index ba70a3bf0effef885186e125ac1e8e931eb7687e..a53c6748cec0fe1937f2ebebca88c39dca550441 100644 GIT binary patch delta 16337 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 diff --git a/foxbin2prg.pjx b/foxbin2prg.pjx index 2a8633d403a26c3d8ffae6d01a6fb8254b4372ee..32c19e6a6b9569950538f5375a38df55638acb57 100644 GIT binary patch delta 189 zcmZ3_vyqq8fRB}zWh3hn7KuN63=AF$aA0U?YGh<+W@0q?Ad3Uj4bI8zZ0eJ>Sf}a& zMUBmkEEu4`Ekr@V4W!G|!~`THGL@A * *--------------------------------------------------------------------------------------------------- @@ -109,6 +110,7 @@ * 24/03/2014 Ryan Harris REPORTE BUG vcx/scx v1.19.17: El comentario a nivel de librería se pierde (Solucionado en v1.19.18) * 29/04/2014 Matt Slay MEJORA v1.19.20: Posibilidad de convertir un proyecto entero a tx2 // Optimización de generación según timestamps (Agregado en v1.19.21) * 30/04/2014 Jim Nelson MEJORA v1.19.20: Agregado de AGAIN en apertura de tablas (Agregado en v1.19.21) +* 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) * * *--------------------------------------------------------------------------------------------------- @@ -503,6 +505,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM PROCEDURE INIT + LOCAL lcSys16, lnPosProg SET DELETED ON SET DATE YMD SET HOURS TO 24 @@ -511,7 +514,15 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM SET TABLEPROMPT OFF SET POINT TO '.' SET SEPARATOR TO ',' - THIS.c_Foxbin2prg_FullPath = SUBSTR( SYS(16), AT( 'C_FOXBIN2PRG.INIT', SYS(16) ) + LEN('C_FOXBIN2PRG.INIT') + 1 ) + + lcSys16 = SYS(16) + IF LEFT(lcSys16,10) == 'PROCEDURE ' + lnPosProg = AT(" ", lcSys16, 2) + 1 + ELSE + lnPosProg = 1 + ENDIF + + THIS.c_Foxbin2prg_FullPath = SUBSTR( lcSys16, lnPosProg ) THIS.c_Foxbin2prg_ConfigFile = FORCEEXT( THIS.c_Foxbin2prg_FullPath, 'CFG' ) THIS.c_CurDir = SYS(5) + CURDIR() THIS.o_FSO = NEWOBJECT("Scripting.FileSystemObject") @@ -1806,6 +1817,7 @@ DEFINE CLASS c_conversor_base AS SESSION + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -1824,7 +1836,7 @@ DEFINE CLASS c_conversor_base AS SESSION + [] - DIMENSION a_SpecialProps(1) + DIMENSION a_SpecialProps(1), a_SpecialProps_Form(1) l_Debug = .F. l_Test = .F. c_InputFile = '' @@ -1841,11 +1853,13 @@ DEFINE CLASS c_conversor_base AS SESSION l_PropSort_Enabled = .T. l_ReportSort_Enabled = .T. c_OriginalFileName = '' + c_ClaseActual = '' oFSO = NULL ******************************************************************************************************************* PROCEDURE INIT + LOCAL lcSys16, lnPosProg SET DELETED ON SET DATE YMD SET HOURS TO 24 @@ -1858,7 +1872,15 @@ DEFINE CLASS c_conversor_base AS SESSION C_FB2PRG_CODE = '' && Contendrá todo el código generado THIS.c_CurDir = SYS(5) + CURDIR() THIS.oFSO = CREATEOBJECT( "Scripting.FileSystemObject") + lcSys16 = SYS(16) + IF LEFT(lcSys16,10) == 'PROCEDURE ' + lnPosProg = AT(" ", lcSys16, 2) + 1 + ELSE + lnPosProg = 1 + ENDIF + + THIS.c_Foxbin2prg_FullPath = SUBSTR( lcSys16, lnPosProg ) THIS.SortSpecialProps() ENDPROC @@ -2514,7 +2536,12 @@ DEFINE CLASS c_conversor_base AS SESSION lcPropName = 'A999' + lcPropName OTHERWISE - lnPos = ASCAN( THIS.a_SpecialProps, lcPropName, 1, 0, 1, 1+2+4 ) + *-- Soporte de evaluación de propiedades por clase evaluada + *IF THIS.c_ClaseActual == 'form' + * lnPos = ASCAN( THIS.a_SpecialProps_Form, lcPropName, 1, 0, 1, 1+2+4 ) + *ELSE + lnPos = ASCAN( THIS.a_SpecialProps, lcPropName, 1, 0, 1, 1+2+4 ) + *ENDIF lcPropName = 'A' + PADL( EVL(lnPos,998), 3, '0' ) + lcPropName ENDCASE @@ -2668,11 +2695,34 @@ DEFINE CLASS c_conversor_base AS SESSION + PROTECTED PROCEDURE SortSpecialProps_Form_Add + LPARAMETERS tcPropName, I + I = I + 1 + DIMENSION THIS.a_SpecialProps_Form(I) + THIS.a_SpecialProps_Form(I) = tcPropName + ENDPROC + + + PROCEDURE SortSpecialProps - LOCAL I - I = 0 + TRY + LOCAL I, loEx as Exception, lcPropsFile + lcPropsFile = '' WITH THIS AS conversor_base OF "FOXBIN2PRG.PRG" + *-- (TODAS) => Antes era solo FORM + I = 0 + + lcPropsFile = FORCEPATH( "props_all.txt", JUSTPATH( .c_Foxbin2prg_FullPath ) ) + + I = ALINES( THIS.a_SpecialProps, FILETOSTR( lcPropsFile ), 1+4 ) + + + + + *-- DEMÁS CLASES + IF .F. + I = 0 .SortSpecialProps_Add( 'FRXDataSession', @I ) && En un VCX lo ví primero de todo y también luego de Height ¿? .SortSpecialProps_Add( 'ErasePage', @I ) && PageFrame: Debe estar antes que PageCount .SortSpecialProps_Add( 'PageCount', @I ) && PageFrame: Debe estar antes que ActivePage @@ -2806,7 +2856,21 @@ DEFINE CLASS c_conversor_base AS SESSION .SortSpecialProps_Add( '_memberdata', @I ) .SortSpecialProps_Add( 'Themes', @I ) *.SortSpecialProps_Add( 'Name', @I ) && System "Name" property + ENDIF ENDWITH + + CATCH TO loEx + loEx.UserValue = 'lcPropsFile = ' + lcPropsFile + + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN ENDPROC @@ -3536,6 +3600,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base lcMemo = '' IF toClase._Prop_Count > 0 + THIS.c_ClaseActual = LOWER(toClase._BaseClass) DIMENSION laPropsAndValues( toClase._Prop_Count, 3 ) ACOPY( toClase._Props, laPropsAndValues ) lnPropsAndValues_Count = toClase._Prop_Count @@ -3578,6 +3643,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base lcMemo = '' IF toObjeto._Prop_Count > 0 + THIS.c_ClaseActual = LOWER(toObjeto._BaseClass) DIMENSION laPropsAndValues( toObjeto._Prop_Count, 2 ) ACOPY( toObjeto._Props, laPropsAndValues ) diff --git a/getrevisions.prg b/getrevisions.prg new file mode 100644 index 0000000..2edd527 --- /dev/null +++ b/getrevisions.prg @@ -0,0 +1,21 @@ +*-- Para Fidel +#DEFINE HISTORIAL_I '* ' +#DEFINE HISTORIAL_F '* ' + +LOCAL lcHistorial, laLinea(1), laHistorial(1,4) +lcHistorial = STREXTRACT( FILETOSTR('FOXBIN2PRG.PRG'), HISTORIAL_I, HISTORIAL_F ) +SET MEMOWIDTH TO 220 && Solo para prueba. Quitar en la función +CLEAR && Solo para prueba. Quitar en la función +*-- Formato a leer: +*-- [* 04/11/2013 FDBOZZO v1.0 Creación inicial de las clases y soporte de los archivos VCX/SCX/PJX] +FOR I = 1 TO ALINES(laLinea, lcHistorial, 1+4+8) + DIMENSION laHistorial(I,4) + laHistorial(I,1) = GETWORDNUM( laLinea(I), 2 ) + laHistorial(I,2) = GETWORDNUM( laLinea(I), 3 ) + laHistorial(I,3) = GETWORDNUM( laLinea(I), 4 ) + laHistorial(I,4) = SUBSTR( laLinea(I), AT(laHistorial(I,3), laLinea(I)) + LEN(laHistorial(I,3)) + 1 ) + *-- Este '?' es solo de prueba + ? '['+laHistorial(I,1)+']', '['+laHistorial(I,2)+']', '['+laHistorial(I,3)+']', '['+laHistorial(I,4)+']' +ENDFOR + +*-- En este punto tenés el array laHistorial con 1 columna para cada dato. \ No newline at end of file diff --git a/preparar_SpecialProps_desde_Lista.prg b/preparar_SpecialProps_desde_Lista.prg new file mode 100644 index 0000000..69ab508 --- /dev/null +++ b/preparar_SpecialProps_desde_Lista.prg @@ -0,0 +1,12 @@ +LOCAL I, lcStrIn, lcStrOut, laStr(1), lcLeftDelim, lcRightDelim, lcStr, lnLines, lnPosDlr +ON KEY LABEL CTRL+R DO preparar_specialprops_desde_lista.prg +lcStrOut = '' +lcStrIn = _CLIPTEXT +lnLines = ALINES(laStr, lcStrIn) +lnPosDlr = AT('.',laStr(1)) + +FOR I = 1 TO lnLines + lcStrOut = lcStrOut + CHR(13) + ".SortSpecialProps_Form_Add( '" + laStr(I) + "', @I )" +ENDFOR + +_CLIPTEXT = SUBSTR( lcStrOut, 2 ) diff --git a/props_all.txt b/props_all.txt new file mode 100644 index 0000000..82585a2 --- /dev/null +++ b/props_all.txt @@ -0,0 +1,401 @@ +DEClassLibrary +DEClass +DataSession +ScaleMode +ErasePage +AutoSize +MemberClassLibrary +MemberClass +PageCount +ColumnCount +ButtonCount +TabStretch +DefTop +DefLeft +DefHeight +DefWidth +Desktop +ShowWindow +ScrollBars +ShowInTaskBar +DoCreate +Comment +Tag +OLEDragMode +OLEDragPicture +OLEDropMode +OLEDropEffects +DragMode +DragIcon +TabStyle +ShowTips +BufferMode +AutoCenter +Picture +ControlBox +Closable +ActivePage +Top +Left +Height +Width +FontBold +FontItalic +FontName +FontOutline +FontShadow +FontSize +FontStrikethru +FontUnderline +FontCondense +FontExtend +FontCharSet +DateFormat +DateMark +Century +Hours +Seconds +StrictDateEntry +Anchor +HalfHeightCaption +MaxButton +MinButton +Tabs +Movable +MaxHeight +MaxWidth +MinHeight +MinWidth +MaxTop +MaxLeft +MaxLength +WordWrap +Stretch +DownPicture +DisabledPicture +PicturePosition +PictureMargin +PictureSpacing +MDIForm +AddLineFeeds +ClipControls +HeaderClassLibrary +HeaderClass +Alignment +AllowTabs +Centered +BackStyle +BorderStyle +BorderWidth +BoundColumn +Curvature +PictureSelectionDisplay +Caption +Bound +ColumnOrder +DrawMode +DrawStyle +DrawWidth +ColumnCount +ColumnWidths +RowSourceType +RowSource +DisplayValue +Value +ControlSource +CurrentControl +AllowAddNew +AllowHeaderSizing +AllowRowSizing +ChildOrder +DeleteMark +Cancel +Default +Enabled +KeySort +FillStyle +Icon +KeyPreview +TitleBar +WindowType +WindowState +LockScreen +AlwaysOnTop +AlwaysOnBottom +SizeBox +ZoomBox +Resizable +GridLines +GridLineWidth +HeaderHeight +FirstElement +Format +HelpContextID +WhatsThisHelpID +WhatsThisHelp +WhatsThisButton +RightToLeft +DefOleLCID +MacDesktop +Highlight +HighlightRow +HighlightRowLineWidth +HideSelection +ColumnLines +IncrementalSearch +Increment +InputMask +KeyboardHighValue +KeyboardLowValue +HostName +AutoVerbMenu +AutoActivate +LinkMaster +Margin +MaxLength +MousePointer +MouseIcon +Panel +PanelLink +ReadOnly +RecordMark +RecordSource +RecordSourceType +RelationalExpr +RowHeight +Sparse +SelectOnEntry +DynamicBackColor +DynamicForeColor +DynamicFontBold +DynamicFontItalic +DynamicFontName +DynamicFontOutline +DynamicFontSize +DynamicFontShadow +DynamicFontStrikethru +DynamicFontUnderline +DynamicAlignment +DynamicCurrentControl +DynamicInputMask +MoverBars +MultiSelect +NumberOfElements +SelectOnEntry +Sorted +SpecialEffect +PageOrder +TabOrientation +SpinnerHighValue +SpinnerLowValue +StatusBarText +Style +TabIndex +TabStop +TerminateRead +ToolTipText +WordWrap +Sizable +Interval +BufferMode +AutoRelease +Visible +MemoWindow +OpenWindow +PasswordChar +EnableHyperlinks +PicturePosition +PictureMargin +PictureSpacing +LineSlant +ColorSource +ColorScheme +ForeColor +BackColor +FillColor +BorderColor +WordWrap +SplitBar +View +WindowList +ReadSave +ReadTimeout +ReadMouse +ReadCycle +ReadLock +PolyPoints +Partition +GridLineColor +HighlightBackColor +HighlightForeColor +ItemForeColor +ItemBackColor +DisabledItemBackColor +DisabledBackColor +SelectedForeColor +DisabledForeColor +SelectedBackColor +ItemForeColor +ItemBackColor +DisabledItemBackColor +SelectedItemForeColor +SelectedItemBackColor +DisabledItemForeColor +RightToLeft +LockColumns +LockColumnsLeft +AllowAutoColumnFit +AllowCellSelection +RightToLeft +NullDisplay +IntegralHeight +ItemTips +BoundTo +IMEMode +Rotation +DisplayCount +OLEDropTextInsertion +HScrollSmallChange +VScrollSmallChange +ContinuousScroll +Themes +AutoHideScrollbar +AutoComplete +AutoCompSource +AutoCompTable +BindControls +AllowOutput +Dockable +Optimize +UseDeDataSource +SelectCmd +UpdateCmd +InsertCmd +DeleteCmd +AllowUpdate +AllowInsert +AllowDelete +CursorSchema +Alias +BufferModeOverride +DataSource +DataSourceType +InsertCmdDataSource +InsertCmdDataSourceType +UpdateCmdDataSource +UpdateCmdDataSourceType +DeleteCmdDataSource +DeleteCmdDataSourceType +Flags +CompareMemo +OpenViews +AutoOpenTables +AutoCloseTables +InitialSelectedAlias +DataSource +DataSourceType +Order +OrderDirection +Database +CursorSource +Exclusive +Filter +NoDataOnLoad +FetchAsNeeded +FetchMemo +Prepared +SendUpdates +BatchUpdateCount +FetchSize +MaxRecords +UseMemoSize +UpdateType +WhereType +KeyFieldList +Tables +UpdatableFieldList +UpdateNameList +ConversionFunc +AllowSimultaneousFetch +BreakOnError +UpdateGramSchemaLocation +ConflictCheckType +ConflictCheckCmd +PreserveWhiteSpace +MapN19_4ToCurrency +IsDiffgram +XMLName +XMLNamespace +XMLPrefix +XSDtype +XSDtotalDigits +XSDfractionDigits +XSDmaxLength +IsAttribute +DataType +FractionDigits +NoCpTrans +Unicode +IsNull +IsBinary +IsBase64 +WrapInCDATA +DisableEncode +Keyfield +ChildTable +NestedInto +FirstNestedTable +NextSiblingTable +FormattedOutput +ForceCloseTag +RespectCursorCP +UTF8Encoded +XMLSchemaLocation +WrapMemoInCDATA +WrapCharInCDATA +Unicode +MapVarchar +MapBinary +RespectNesting +SelectionNamespaces +XMLNameIsXPath +DeclareXMLPrefix +CurrentPass +TwoPassProcess +FRXDataSession +PreviewContainer +DynamicLineHeight +CommandClauses +AllowModalMessages +QuietMode +CurrentDataSession +SendGDIPlusImage +PrintJobName +CallAdjustObjectSize +CallEvaluateContents +ParentAlias +RelationalExpr +ChildAlias +ChildOrder +OneToMany +UseCursorSchema +NoData +TimestampFieldList +InsertCmdRefreshFieldList +InsertCmdRefreshKeyFieldList +UpdateCmdRefreshFieldList +UpdateCmdRefreshKeyFieldList +RefreshTimestamp +RefreshCmd +RefreshCmdDataSource +RefreshCmdDataSourceType +InsertCmdRefreshCmd +UpdateCmdRefreshCmd +RefreshIgnoreFieldList +FetchMemoDataSource +FetchMemoDataSourceType +FetchMemoCmdList +UseTransactions +ADOCodePage +CodePage +UseCodePage diff --git a/props_checkbox.txt b/props_checkbox.txt new file mode 100644 index 0000000..9424396 --- /dev/null +++ b/props_checkbox.txt @@ -0,0 +1,64 @@ +Comment +Tag +OLEDragMode +OLEDragPicture +OLEDropMode +OLEDropEffects +DragMode +DragIcon +DefTop +DefLeft +DefHeight +DefWidth +Top +Left +Height +Width +FontBold +FontItalic +FontName +FontOutline +FontShadow +FontSize +FontStrikethru +FontUnderline +FontCondense +FontExtend +FontCharSet +Anchor +WordWrap +AutoSize +Picture +DownPicture +DisabledPicture +Alignment +Centered +BackStyle +Caption +Value +ControlSource +Enabled +HelpContextID +WhatsThisHelpID +MousePointer +MouseIcon +SpecialEffect +StatusBarText +Style +TabStop +ToolTipText +TerminateRead +Visible +PicturePosition +PictureMargin +PictureSpacing +ColorSource +ColorScheme +ForeColor +BackColor +DisabledForeColor +DisabledBackColor +RightToLeft +ReadOnly +Themes +Name diff --git a/props_collection.txt b/props_collection.txt new file mode 100644 index 0000000..ef9663c --- /dev/null +++ b/props_collection.txt @@ -0,0 +1,8 @@ +Comment +Tag +Top +Left +Height +Width +KeySort +Name diff --git a/props_combobox.txt b/props_combobox.txt new file mode 100644 index 0000000..874d812 --- /dev/null +++ b/props_combobox.txt @@ -0,0 +1,89 @@ +Comment +Tag +OLEDragMode +OLEDragPicture +OLEDropMode +OLEDropEffects +DragMode +DragIcon +FontBold +FontItalic +FontName +FontOutline +FontShadow +FontSize +FontStrikethru +FontUnderline +FontCondense +FontExtend +FontCharSet +Anchor +MaxLength +DefTop +DefLeft +DefHeight +DefWidth +Alignment +BoundColumn +Picture +PictureSelectionDisplay +ColumnCount +ColumnWidths +RowSourceType +RowSource +DisplayValue +Value +ControlSource +Enabled +FirstElement +Height +HelpContextID +WhatsThisHelpID +ColumnLines +IncrementalSearch +Left +Margin +MousePointer +MouseIcon +NumberOfElements +SelectOnEntry +Sorted +SpecialEffect +StatusBarText +Style +TabIndex +TabStop +TerminateRead +ToolTipText +Top +Visible +Width +RightToLeft +HideSelection +ColorSource +ColorScheme +ForeColor +BackColor +SelectedForeColor +ItemForeColor +ItemBackColor +SelectedItemForeColor +DisabledItemBackColor +DisabledBackColor +DisabledForeColor +SelectedBackColor +SelectedItemBackColor +DisabledItemForeColor +BorderColor +NullDisplay +Format +InputMask +ItemTips +BorderStyle +BoundTo +IMEMode +ReadOnly +DisplayCount +OLEDropTextInsertion +Themes +Name diff --git a/props_commandbutton.txt b/props_commandbutton.txt new file mode 100644 index 0000000..1e26968 --- /dev/null +++ b/props_commandbutton.txt @@ -0,0 +1,62 @@ +AutoSize +Comment +Tag +OLEDragMode +OLEDragPicture +OLEDropMode +OLEDropEffects +DragMode +DragIcon +DefTop +DefLeft +DefHeight +DefWidth +Top +Left +Height +Width +FontBold +FontItalic +FontName +FontOutline +FontShadow +FontSize +FontStrikethru +FontUnderline +FontCondense +FontExtend +FontCharSet +Anchor +WordWrap +Picture +DownPicture +DisabledPicture +Cancel +Caption +Default +Enabled +HelpContextID +WhatsThisHelpID +MousePointer +MouseIcon +StatusBarText +Style +TabIndex +TabStop +ToolTipText +TerminateRead +Visible +SpecialEffect +PicturePosition +PictureMargin +PictureSpacing +ColorSource +ColorScheme +ForeColor +BackColor +DisabledForeColor +DisabledBackColor +RightToLeft +Themes +Alignment +Name diff --git a/props_commandgroup.txt b/props_commandgroup.txt new file mode 100644 index 0000000..7331c06 --- /dev/null +++ b/props_commandgroup.txt @@ -0,0 +1,70 @@ +AutoSize +MemberClassLibrary +MemberClass +ButtonCount +Comment +Tag +OLEDragMode +OLEDragPicture +OLEDropMode +OLEDropEffects +DragMode +DragIcon +Anchor +DefTop +DefLeft +DefHeight +DefWidth +Top +Left +Height +Width +FontBold +FontItalic +FontName +FontOutline +FontShadow +FontSize +FontStrikethru +FontUnderline +FontCondense +FontExtend +FontCharSet +BackStyle +BorderStyle +Value +ControlSource +WordWrap +Picture +DownPicture +DisabledPicture +Cancel +Caption +Default +Enabled +HelpContextID +WhatsThisHelpID +MousePointer +MouseIcon +SpecialEffect +Style +TabIndex +TabStop +TerminateRead +Visible +PicturePosition +PictureMargin +PictureSpacing +ColorSource +ColorScheme +ForeColor +BackColor +BorderColor +DisabledForeColor +DisabledBackColor +RightToLeft +ToolTipText +StatusBarText +Themes +Alignment +Name diff --git a/props_container.txt b/props_container.txt new file mode 100644 index 0000000..b74ef4e --- /dev/null +++ b/props_container.txt @@ -0,0 +1,36 @@ +Comment +Tag +OLEDragMode +OLEDragPicture +OLEDropMode +OLEDropEffects +DragMode +DragIcon +Anchor +DefTop +DefLeft +DefHeight +DefWidth +Top +Left +Width +Height +Picture +BackStyle +BorderWidth +SpecialEffect +Enabled +Visible +MousePointer +MouseIcon +TabStop +HelpContextID +WhatsThisHelpID +ColorSource +ForeColor +BackColor +BorderColor +Style +ToolTipText +StatusBarText +Name diff --git a/props_control.txt b/props_control.txt new file mode 100644 index 0000000..0733799 --- /dev/null +++ b/props_control.txt @@ -0,0 +1,36 @@ +Comment +Tag +OLEDragMode +OLEDragPicture +OLEDropMode +OLEDropEffects +DragMode +DragIcon +Anchor +DefTop +DefLeft +DefHeight +DefWidth +Top +Left +Width +Height +Picture +BackStyle +BorderWidth +SpecialEffect +Enabled +Visible +MousePointer +MouseIcon +TabIndex +TabStop +HelpContextID +WhatsThisHelpID +ColorSource +ForeColor +BackColor +BorderColor +Style +ToolTipText +Name diff --git a/props_cursor.txt b/props_cursor.txt new file mode 100644 index 0000000..e912240 --- /dev/null +++ b/props_cursor.txt @@ -0,0 +1,17 @@ +Comment +Tag +Top +Left +Height +Width +Alias +BufferModeOverride +Order +OrderDirection +Database +CursorSource +Exclusive +Filter +ReadOnly +NoDataOnLoad +Name diff --git a/props_cursoradapter.txt b/props_cursoradapter.txt new file mode 100644 index 0000000..cd075d5 --- /dev/null +++ b/props_cursoradapter.txt @@ -0,0 +1,67 @@ +Comment +Tag +Height +Width +UseDeDataSource +SelectCmd +UpdateCmd +InsertCmd +DeleteCmd +AllowUpdate +AllowInsert +AllowDelete +CursorSchema +Alias +BufferModeOverride +DataSource +DataSourceType +InsertCmdDataSource +InsertCmdDataSourceType +UpdateCmdDataSource +UpdateCmdDataSourceType +DeleteCmdDataSource +DeleteCmdDataSourceType +Flags +CompareMemo +FetchAsNeeded +FetchMemo +Prepared +SendUpdates +BatchUpdateCount +FetchSize +MaxRecords +UseMemoSize +UpdateType +WhereType +KeyFieldList +Tables +UpdatableFieldList +UpdateNameList +ConversionFunc +AllowSimultaneousFetch +BreakOnError +UpdateGramSchemaLocation +ConflictCheckType +ConflictCheckCmd +MapVarchar +MapBinary +UseCursorSchema +NoData +TimestampFieldList +InsertCmdRefreshFieldList +InsertCmdRefreshKeyFieldList +UpdateCmdRefreshFieldList +UpdateCmdRefreshKeyFieldList +RefreshTimestamp +RefreshCmd +RefreshCmdDataSource +RefreshCmdDataSourceType +InsertCmdRefreshCmd +UpdateCmdRefreshCmd +RefreshIgnoreFieldList +FetchMemoDataSource +FetchMemoDataSourceType +FetchMemoCmdList +UseTransactions +ADOCodePage +Name diff --git a/props_dataenvironment.txt b/props_dataenvironment.txt new file mode 100644 index 0000000..816a86a --- /dev/null +++ b/props_dataenvironment.txt @@ -0,0 +1,13 @@ +Comment +Tag +Top +Left +Width +Height +OpenViews +AutoOpenTables +AutoCloseTables +InitialSelectedAlias +DataSource +DataSourceType +Name diff --git a/props_editbox.txt b/props_editbox.txt new file mode 100644 index 0000000..20da34b --- /dev/null +++ b/props_editbox.txt @@ -0,0 +1,72 @@ +Comment +Tag +OLEDragMode +OLEDragPicture +OLEDropMode +OLEDropEffects +DragMode +DragIcon +FontBold +FontItalic +FontName +FontOutline +FontShadow +FontSize +FontStrikethru +FontUnderline +FontCondense +FontExtend +FontCharSet +Anchor +DefTop +DefLeft +DefHeight +DefWidth +AddLineFeeds +Alignment +AllowTabs +BackStyle +BorderStyle +Enabled +Format +Height +HelpContextID +WhatsThisHelpID +HideSelection +Left +Margin +MaxLength +MousePointer +MouseIcon +ReadOnly +ScrollBars +SelectOnEntry +SpecialEffect +StatusBarText +TabIndex +TabStop +TerminateRead +ToolTipText +Top +Visible +Width +PasswordChar +EnableHyperlinks +ColorSource +ColorScheme +ForeColor +BackColor +DisabledBackColor +SelectedForeColor +DisabledForeColor +SelectedBackColor +BorderColor +Value +ControlSource +RightToLeft +NullDisplay +IntegralHeight +IMEMode +OLEDropTextInsertion +Themes +Name diff --git a/props_form.txt b/props_form.txt new file mode 100644 index 0000000..6997a24 --- /dev/null +++ b/props_form.txt @@ -0,0 +1,91 @@ +DataSession +ScaleMode +DefTop +DefLeft +DefHeight +DefWidth +Top +Left +Height +Width +Desktop +ShowWindow +ScrollBars +ShowInTaskBar +DoCreate +Comment +Tag +OLEDragMode +OLEDragPicture +OLEDropMode +OLEDropEffects +ShowTips +BufferMode +AutoCenter +Picture +BorderStyle +Caption +ControlBox +Closable +FontBold +FontCondense +FontExtend +FontItalic +FontName +FontOutline +FontShadow +FontSize +FontStrikethru +FontUnderline +FontCharSet +HalfHeightCaption +MaxButton +MinButton +Movable +MaxHeight +MaxWidth +MinHeight +MinWidth +MaxTop +MaxLeft +MDIForm +MousePointer +MouseIcon +Visible +ClipControls +DrawMode +DrawStyle +DrawWidth +FillStyle +Enabled +Icon +KeyPreview +TabIndex +TabStop +TitleBar +WindowType +WindowState +LockScreen +AlwaysOnTop +AlwaysOnBottom +SizeBox +ZoomBox +HelpContextID +WhatsThisHelpID +WhatsThisHelp +WhatsThisButton +RightToLeft +DefOleLCID +MacDesktop +ColorSource +ForeColor +BackColor +FillColor +HScrollSmallChange +VScrollSmallChange +ContinuousScroll +Themes +BindControls +AllowOutput +Dockable +Name diff --git a/props_formset.txt b/props_formset.txt new file mode 100644 index 0000000..942e07d --- /dev/null +++ b/props_formset.txt @@ -0,0 +1,14 @@ +DataSession +Comment +Tag +BufferMode +AutoRelease +Visible +WindowList +WindowType +ReadSave +ReadTimeout +ReadMouse +ReadCycle +ReadLock +Name diff --git a/props_grid.txt b/props_grid.txt new file mode 100644 index 0000000..795de87 --- /dev/null +++ b/props_grid.txt @@ -0,0 +1,111 @@ +MemberClassLibrary +MemberClass +ColumnCount +Comment +Tag +OLEDragPicture +OLEDropMode +OLEDropEffects +DragMode +DragIcon +FontBold +FontItalic +FontName +FontOutline +FontShadow +FontSize +FontStrikethru +FontUnderline +FontCondense +FontExtend +FontCharSet +Anchor +DefTop +DefLeft +DefHeight +DefWidth +HeaderClassLibrary +HeaderClass +Alignment +Caption +Bound +ColumnOrder +ControlSource +CurrentControl +AllowAddNew +AllowHeaderSizing +AllowRowSizing +ChildOrder +DeleteMark +Enabled +Width +Movable +Resizable +GridLines +GridLineWidth +HeaderHeight +Height +HelpContextID +WhatsThisHelpID +Highlight +HighlightRow +HighlightRowLineWidth +Left +LinkMaster +MousePointer +MouseIcon +Panel +PanelLink +ReadOnly +RecordMark +RecordSource +RecordSourceType +RelationalExpr +RowHeight +Sparse +Visible +SelectOnEntry +DynamicBackColor +DynamicForeColor +DynamicFontBold +DynamicFontItalic +DynamicFontName +DynamicFontOutline +DynamicFontSize +DynamicFontShadow +DynamicFontStrikethru +DynamicFontUnderline +DynamicAlignment +DynamicCurrentControl +DynamicInputMask +Format +InputMask +ForeColor +BackColor +Picture +WordWrap +ScrollBars +SplitBar +StatusBarText +TabIndex +TabStop +ToolTipText +Top +Value +View +Width +Partition +GridLineColor +HighlightBackColor +HighlightForeColor +SelectedItemBackColor +SelectedItemForeColor +HighlightStyle +RightToLeft +LockColumns +LockColumnsLeft +AllowAutoColumnFit +AllowCellSelection +Themes +Optimize +Name diff --git a/props_grid_column.txt b/props_grid_column.txt new file mode 100644 index 0000000..e4a4d58 --- /dev/null +++ b/props_grid_column.txt @@ -0,0 +1,50 @@ +Comment +Tag +FontBold +FontItalic +FontName +FontOutline +FontShadow +FontSize +FontStrikethru +FontUnderline +FontCondense +FontExtend +FontCharSet +HeaderClassLibrary +HeaderClass +Alignment +Bound +ColumnOrder +ControlSource +CurrentControl +Enabled +Width +Movable +Resizable +ReadOnly +Sparse +Visible +SelectOnEntry +DynamicBackColor +DynamicForeColor +DynamicFontBold +DynamicFontItalic +DynamicFontName +DynamicFontOutline +DynamicFontSize +DynamicFontShadow +DynamicFontStrikethru +DynamicFontUnderline +DynamicAlignment +DynamicCurrentControl +DynamicInputMask +Format +InputMask +ForeColor +BackColor +ToolTipText +StatusBarText +MousePointer +MouseIcon +Name diff --git a/props_grid_header.txt b/props_grid_header.txt new file mode 100644 index 0000000..5e95df5 --- /dev/null +++ b/props_grid_header.txt @@ -0,0 +1,24 @@ +Comment +Tag +FontBold +FontItalic +FontName +FontOutline +FontShadow +FontSize +FontStrikethru +FontUnderline +FontCondense +FontExtend +FontCharSet +Alignment +Caption +ForeColor +BackColor +Picture +WordWrap +ToolTipText +StatusBarText +MousePointer +MouseIcon +Name diff --git a/props_hyperlink.txt b/props_hyperlink.txt new file mode 100644 index 0000000..43fb29e --- /dev/null +++ b/props_hyperlink.txt @@ -0,0 +1,7 @@ +Comment +Tag +Top +Left +Height +Width +Name diff --git a/props_image.txt b/props_image.txt new file mode 100644 index 0000000..76ab678 --- /dev/null +++ b/props_image.txt @@ -0,0 +1,31 @@ +Comment +Tag +OLEDragMode +OLEDragPicture +OLEDropMode +OLEDropEffects +DragMode +DragIcon +Anchor +DefTop +DefLeft +DefHeight +DefWidth +Picture +BackStyle +BorderStyle +Height +HelpContextID +WhatsThisHelpID +Left +MousePointer +MouseIcon +Top +Visible +Width +ColorSource +BorderColor +ToolTipText +StatusBarText +Themes +Name diff --git a/props_label.txt b/props_label.txt new file mode 100644 index 0000000..18bbd2f --- /dev/null +++ b/props_label.txt @@ -0,0 +1,51 @@ +AutoSize +Comment +Tag +OLEDragMode +OLEDragPicture +OLEDropMode +OLEDropEffects +DragMode +DragIcon +FontBold +FontItalic +FontName +FontOutline +FontShadow +FontSize +FontStrikethru +FontUnderline +FontCondense +FontExtend +FontCharSet +Anchor +WordWrap +DefTop +DefLeft +DefHeight +DefWidth +Alignment +BackStyle +BorderStyle +Caption +Height +HelpContextID +WhatsThisHelpID +Left +MousePointer +MouseIcon +Top +Visible +Width +ColorSource +ColorScheme +ForeColor +BackColor +DisabledForeColor +DisabledBackColor +RightToLeft +ToolTipText +StatusBarText +Style +Rotation +Name diff --git a/props_line.txt b/props_line.txt new file mode 100644 index 0000000..ef86948 --- /dev/null +++ b/props_line.txt @@ -0,0 +1,33 @@ +Comment +Tag +OLEDragMode +OLEDragPicture +OLEDropMode +OLEDropEffects +DragMode +DragIcon +Anchor +DefTop +DefLeft +DefHeight +DefWidth +BorderStyle +BorderWidth +DrawMode +Height +HelpContextID +WhatsThisHelpID +Left +MousePointer +MouseIcon +Top +Visible +Width +LineSlant +ColorSource +BorderColor +ToolTipText +StatusBarText +PolyPoints +Rotation +Name diff --git a/props_listbox.txt b/props_listbox.txt new file mode 100644 index 0000000..654619e --- /dev/null +++ b/props_listbox.txt @@ -0,0 +1,74 @@ +Comment +Tag +DragMode +DragIcon +OLEDragMode +OLEDragPicture +OLEDropMode +OLEDropEffects +FontBold +FontItalic +FontName +FontOutline +FontShadow +FontSize +FontStrikethru +FontUnderline +FontCondense +FontExtend +FontCharSet +Anchor +DefTop +DefLeft +DefHeight +DefWidth +BoundColumn +Picture +ColumnCount +ColumnWidths +RowSourceType +RowSource +Value +ControlSource +Enabled +FirstElement +Height +HelpContextID +WhatsThisHelpID +ColumnLines +IncrementalSearch +Left +MousePointer +MouseIcon +MoverBars +MultiSelect +NumberOfElements +Sorted +SpecialEffect +StatusBarText +TabIndex +TabStop +TerminateRead +ToolTipText +Top +Visible +Width +ColorSource +ColorScheme +DisabledBackColor +ItemForeColor +ItemBackColor +DisabledItemBackColor +SelectedItemForeColor +SelectedItemBackColor +DisabledItemForeColor +DisabledForeColor +BorderColor +RightToLeft +IntegralHeight +NullDisplay +ItemTips +BoundTo +Themes +AutoHideScrollbar +Name diff --git a/props_olebound.txt b/props_olebound.txt new file mode 100644 index 0000000..2ea478d --- /dev/null +++ b/props_olebound.txt @@ -0,0 +1,30 @@ +Comment +Tag +DragMode +DragIcon +DefTop +DefLeft +DefHeight +DefWidth +Top +Left +Height +Width +Visible +Enabled +TabStop +Anchor +ControlSource +Stretch +MousePointer +MouseIcon +AutoSize +Sizable +HelpContextID +WhatsThisHelpID +HostName +AutoVerbMenu +AutoActivate +ToolTipText +StatusBarText +Name diff --git a/props_optiongroup.txt b/props_optiongroup.txt new file mode 100644 index 0000000..42333d4 --- /dev/null +++ b/props_optiongroup.txt @@ -0,0 +1,71 @@ +AutoSize +MemberClassLibrary +MemberClass +ButtonCount +Comment +Tag +OLEDragMode +OLEDragPicture +OLEDropMode +OLEDropEffects +DragMode +DragIcon +FontBold +FontItalic +FontName +FontOutline +FontShadow +FontSize +FontStrikethru +FontUnderline +FontCondense +FontExtend +FontCharSet +Anchor +Picture +DownPicture +DisabledPicture +PicturePosition +PictureMargin +PictureSpacing +DefTop +DefLeft +DefHeight +DefWidth +Alignment +BackStyle +BorderStyle +Caption +Value +ControlSource +Enabled +Height +HelpContextID +WhatsThisHelpID +Left +MousePointer +MouseIcon +SpecialEffect +StatusBarText +Style +TabIndex +TabStop +TerminateRead +ToolTipText +Top +Width +WordWrap +TabIndex +Visible +AutoSize +ColorSource +ColorScheme +ForeColor +BackColor +DisabledForeColor +DisabledBackColor +RightToLeft +ToolTipText +StatusBarText +Themes +Name diff --git a/props_optiongroup_option.txt b/props_optiongroup_option.txt new file mode 100644 index 0000000..b9301f9 --- /dev/null +++ b/props_optiongroup_option.txt @@ -0,0 +1,61 @@ +Comment +Tag +OLEDragMode +OLEDragPicture +OLEDropMode +OLEDropEffects +DragMode +DragIcon +FontBold +FontItalic +FontName +FontOutline +FontShadow +FontSize +FontStrikethru +FontUnderline +FontCondense +FontExtend +FontCharSet +Anchor +Picture +DownPicture +DisabledPicture +PicturePosition +PictureMargin +PictureSpacing +DefTop +DefWidth +Alignment +BackStyle +Caption +Value +ControlSource +Enabled +Height +HelpContextID +WhatsThisHelpID +Left +MousePointer +MouseIcon +SpecialEffect +StatusBarText +Style +TabIndex +TabStop +TerminateRead +ToolTipText +Top +Visible +Width +WordWrap +AutoSize +ColorSource +ColorScheme +ForeColor +BackColor +DisabledForeColor +DisabledBackColor +RightToLeft +Themes +Name diff --git a/props_pageframe.txt b/props_pageframe.txt new file mode 100644 index 0000000..09ddc53 --- /dev/null +++ b/props_pageframe.txt @@ -0,0 +1,39 @@ +ErasePage +MemberClassLibrary +MemberClass +PageCount +TabStretch +Comment +Tag +OLEDragMode +OLEDragPicture +OLEDropMode +OLEDropEffects +DragMode +DragIcon +Anchor +TabStyle +DefTop +DefLeft +DefHeight +DefWidth +ActivePage +Enabled +Top +Left +Width +Height +MousePointer +MouseIcon +Tabs +TabStop +Visible +ColorSource +RightToLeft +HelpContextID +WhatsThisHelpID +TabOrientation +Themes +ToolTipText +StatusBarText +Name diff --git a/props_pageframe_page.txt b/props_pageframe_page.txt new file mode 100644 index 0000000..239147d --- /dev/null +++ b/props_pageframe_page.txt @@ -0,0 +1,33 @@ +Comment +Tag +OLEDragMode +OLEDragPicture +OLEDropMode +OLEDropEffects +DragMode +DragIcon +FontBold +FontItalic +FontName +FontOutline +FontShadow +FontSize +FontStrikethru +FontUnderline +FontCondense +FontExtend +FontCharSet +Caption +Picture +Enabled +HelpContextID +WhatsThisHelpID +PageOrder +ColorSource +BackColor +ForeColor +ToolTipText +StatusBarText +MousePointer +MouseIcon +Name diff --git a/props_pre_v1_19_22.txt b/props_pre_v1_19_22.txt new file mode 100644 index 0000000..2b7babd --- /dev/null +++ b/props_pre_v1_19_22.txt @@ -0,0 +1,132 @@ +FRXDataSession +ErasePage +PageCount +ActivePage +ButtonCount +ColumnCount +Value +Comment +ControlSource +DataSession +DeleteMark +ScaleMode +Tag +OLEDragMode +OLEDragPicture +OLEDropMode +OLEDropEffects +DragMode +DragIcon +Anchor +DefTop +DefLeft +DefHeight +DefWidth +Picture +Stretch +BackStyle +BorderStyle +BorderWidth +Enabled +Top +Left +Height +Width +MousePointer +MouseIcon +Visible +MaxLength +Alias +BufferModeOverride +Order +OrderDirection +CursorSource +Exclusive +Filter +Panel +ReadOnly +RecordSource +RecordSourceType +NoDataOnLoad +OpenViews +AutoOpenTables +AutoCloseTables +InitialSelectedAlias +DataSource +DataSourceType +Desktop +ShowWindow +ScrollBars +ShowInTaskBar +DoCreate +Tag +ShowTips +BufferMode +AutoCenter +AutoSize +WordWrap +Caption +ControlBox +Closable +Curvature +FontBold +FontCondense +FontExtend +FontItalic +FontName +FontOutline +FontShadow +FontSize +FontStrikethru +FontUnderline +HalfHeightCaption +Margin +MaxButton +MinButton +Movable +MaxHeight +MaxWidth +MinHeight +MinWidth +MaxTop +MaxLeft +MDIForm +ClipControls +DrawMode +DrawStyle +DrawWidth +FillStyle +Icon +KeyPreview +TabIndex +TabStop +TitleBar +WindowType +WindowState +LockScreen +AlwaysOnTop +AlwaysOnBottom +SizeBox +SpecialEffect +ZoomBox +ZOrderSet +HelpContextID +WhatsThisHelpID +WhatsThisHelp +WhatsThisButton +RightToLeft +DefOleLCID +MacDesktop +ColorSource +ForeColor +DisableForeColor +BackColor +FillColor +HScrollSmallChange +VScrollSmallChange +ContinuousScroll +BindControls +AllowOutput +Dockable +_memberdata +Themes diff --git a/props_projecthook.txt b/props_projecthook.txt new file mode 100644 index 0000000..02118a4 --- /dev/null +++ b/props_projecthook.txt @@ -0,0 +1,7 @@ +Comment +Tag +Height +Width +OLEDropMode +OLEDropEffects +Name diff --git a/props_relation.txt b/props_relation.txt new file mode 100644 index 0000000..dfefa06 --- /dev/null +++ b/props_relation.txt @@ -0,0 +1,10 @@ +Comment +Tag +Height +Width +ParentAlias +RelationalExpr +ChildAlias +ChildOrder +OneToMany +Name diff --git a/props_reportlistener.txt b/props_reportlistener.txt new file mode 100644 index 0000000..87a798d --- /dev/null +++ b/props_reportlistener.txt @@ -0,0 +1,18 @@ +Comment +Tag +Height +Width +CurrentPass +TwoPassProcess +FRXDataSession +PreviewContainer +DynamicLineHeight +CommandClauses +AllowModalMessages +QuietMode +CurrentDataSession +SendGDIPlusImage +PrintJobName +CallAdjustObjectSize +CallEvaluateContents +Name diff --git a/props_separator.txt b/props_separator.txt new file mode 100644 index 0000000..71d1cc1 --- /dev/null +++ b/props_separator.txt @@ -0,0 +1,10 @@ +Comment +Tag +Top +Left +Height +Width +Enabled +Style +Visible +Name diff --git a/props_shape.txt b/props_shape.txt new file mode 100644 index 0000000..4fb2aae --- /dev/null +++ b/props_shape.txt @@ -0,0 +1,40 @@ +Comment +Tag +OLEDragMode +OLEDragPicture +OLEDropMode +OLEDropEffects +DragMode +DragIcon +DefTop +DefLeft +DefHeight +DefWidth +Top +Left +Height +Width +Anchor +BackStyle +BorderStyle +BorderWidth +Curvature +DrawMode +FillStyle +HelpContextID +WhatsThisHelpID +MousePointer +MouseIcon +ToolTipText +StatusBarText +Visible +SpecialEffect +ColorSource +ColorScheme +BackColor +FillColor +BorderColor +Style +PolyPoints +Rotation +Name diff --git a/props_spinner.txt b/props_spinner.txt new file mode 100644 index 0000000..32f3700 --- /dev/null +++ b/props_spinner.txt @@ -0,0 +1,69 @@ +Comment +Tag +OLEDragMode +OLEDragPicture +OLEDropMode +OLEDropEffects +DragMode +DragIcon +FontBold +FontItalic +FontName +FontOutline +FontShadow +FontSize +FontStrikethru +FontUnderline +FontCondense +FontExtend +FontCharSet +Anchor +DefTop +DefLeft +DefHeight +DefWidth +Alignment +BorderStyle +Enabled +Height +HelpContextID +WhatsThisHelpID +HideSelection +Increment +InputMask +KeyboardHighValue +KeyboardLowValue +Left +Margin +MousePointer +MouseIcon +ReadOnly +SelectOnEntry +SpecialEffect +SpinnerHighValue +SpinnerLowValue +StatusBarText +TabIndex +TabStop +TerminateRead +ToolTipText +Top +Visible +Width +Format +ColorSource +ColorScheme +BackColor +ForeColor +DisabledBackColor +SelectedForeColor +DisabledForeColor +SelectedBackColor +BorderColor +Value +ControlSource +RightToLeft +NullDisplay +OLEDropTextInsertion +Themes +Name diff --git a/props_textbox.txt b/props_textbox.txt new file mode 100644 index 0000000..cc41cd4 --- /dev/null +++ b/props_textbox.txt @@ -0,0 +1,82 @@ +Comment +Tag +OLEDragMode +OLEDragPicture +OLEDropMode +OLEDropEffects +DragMode +DragIcon +FontBold +FontItalic +FontName +FontOutline +FontShadow +FontSize +FontStrikethru +FontUnderline +FontCondense +FontExtend +FontCharSet +DateFormat +DateMark +Century +Hours +Seconds +StrictDateEntry +Anchor +DefTop +DefLeft +DefHeight +DefWidth +Alignment +BackStyle +BorderStyle +Value +ControlSource +Enabled +Format +Height +HelpContextID +WhatsThisHelpID +HideSelection +InputMask +Left +Margin +MaxLength +MousePointer +MouseIcon +ReadOnly +SelectOnEntry +SpecialEffect +StatusBarText +TabIndex +TabStop +TerminateRead +ToolTipText +Top +Visible +Width +Style +MemoWindow +OpenWindow +PasswordChar +EnableHyperlinks +ColorSource +ColorScheme +ForeColor +BackColor +DisabledBackColor +SelectedForeColor +DisabledForeColor +SelectedBackColor +BorderColor +RightToLeft +NullDisplay +IntegralHeight +IMEMode +OLEDropTextInsertion +Themes +AutoComplete +AutoCompSource +AutoCompTable +Name diff --git a/props_timer.txt b/props_timer.txt new file mode 100644 index 0000000..043b06d --- /dev/null +++ b/props_timer.txt @@ -0,0 +1,13 @@ +Comment +Tag +DefTop +DefLeft +DefHeight +DefWidth +Top +Left +Height +Width +Enabled +Interval +Name diff --git a/props_toolbar.txt b/props_toolbar.txt new file mode 100644 index 0000000..6d5328f --- /dev/null +++ b/props_toolbar.txt @@ -0,0 +1,31 @@ +ScaleMode +Comment +Tag +OLEDragMode +OLEDragPicture +OLEDropMode +OLEDropEffects +DefTop +DefLeft +Caption +DataSession +Enabled +HelpContextID +WhatsThisHelpID +KeyPreview +Left +LockScreen +MousePointer +MouseIcon +Movable +ShowTips +Sizable +Top +Visible +ColorSource +ForeColor +BackColor +ControlBox +ShowWindow +Themes +Name diff --git a/props_xmladapter.txt b/props_xmladapter.txt new file mode 100644 index 0000000..6e869f4 --- /dev/null +++ b/props_xmladapter.txt @@ -0,0 +1,29 @@ +Comment +Tag +Height +Width +PreserveWhiteSpace +NoCpTrans +MapN19_4ToCurrency +DisableEncode +IsDiffgram +XMLName +XMLNamespace +XMLPrefix +FormattedOutput +ForceCloseTag +RespectCursorCP +UTF8Encoded +XMLSchemaLocation +WrapMemoInCDATA +WrapCharInCDATA +Unicode +MapVarchar +MapBinary +RespectNesting +SelectionNamespaces +XMLNameIsXPath +DeclareXMLPrefix +CodePage +UseCodePage +Name diff --git a/props_xmlfield.txt b/props_xmlfield.txt new file mode 100644 index 0000000..d276fa2 --- /dev/null +++ b/props_xmlfield.txt @@ -0,0 +1,25 @@ +Comment +Tag +Height +Width +Alias +XMLName +XSDtype +XSDtotalDigits +XSDfractionDigits +XSDmaxLength +IsAttribute +DataType +MaxLength +FractionDigits +NoCpTrans +Unicode +IsNull +IsBinary +IsBase64 +WrapInCDATA +DisableEncode +Keyfield +XMLNameIsXPath +CodePage +Name diff --git a/props_xmltable.txt b/props_xmltable.txt new file mode 100644 index 0000000..0ebf1e5 --- /dev/null +++ b/props_xmltable.txt @@ -0,0 +1,16 @@ +Comment +Tag +Height +Width +Alias +XMLName +XMLNamespace +XMLPrefix +ChildTable +NestedInto +FirstNestedTable +NextSiblingTable +XMLNameIsXPath +DeclareXMLPrefix +CodePage +Name From a655b389778078a7d7cfa64b5b60e0db58590815 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Wed, 14 May 2014 00:44:57 +0200 Subject: [PATCH 02/20] =?UTF-8?q?Changeset:=20238=20fdbozzo=20-=2013/05/20?= =?UTF-8?q?14=2023:05:03:=20-=20La=20detecci=C3=B3n=20incorrecta=20de=20PR?= =?UTF-8?q?OCEDURE/ENDPROC/TEXT/ENDTEXT=20puede=20causar=20p=C3=A9rdida=20?= =?UTF-8?q?de=20algunos=20m=C3=A9todos=20en=20determinadas=20circunstancia?= =?UTF-8?q?s=20(Andres=20Mendoza)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- foxbin2prg.pj2 | 3 +- foxbin2prg.pjt | Bin 371268 -> 371830 bytes foxbin2prg.pjx | Bin 1713 -> 1713 bytes foxbin2prg.prg | 360 +++++++++++++++++++++++++++---------------------- 4 files changed, 198 insertions(+), 165 deletions(-) diff --git a/foxbin2prg.pj2 b/foxbin2prg.pj2 index f1ac3f1..6ec139a 100644 --- a/foxbin2prg.pj2 +++ b/foxbin2prg.pj2 @@ -26,7 +26,7 @@ _LegalTrademark = "Creative Commons 4: Reconocimiento - CompartirIgual (by-sa): _ProductName = " FOXBIN2PRG v1.19.22" _MajorVer = "1" _MinorVer = "19" -_Revision = " 321" +_Revision = " 325" _LanguageID = "1034" _AutoIncrement = "1" * @@ -52,6 +52,7 @@ loProject = _VFP.Projects('foxbin2prg.pjx') WITH loProject.FILES .ADD('config\config.fpw') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> .ADD('foxbin2prg.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" /> + .ADD('props_all.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> * .ITEM('__newproject.f2b').Remove() diff --git a/foxbin2prg.pjt b/foxbin2prg.pjt index a53c6748cec0fe1937f2ebebca88c39dca550441..9c52a656028194196f9ccf7cee16cb014787ac35 100644 GIT binary patch delta 12018 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 G(f~1uP~aA#px~we1g0h?AfZTp28J+| s$xm3lO`L(u5JN*#BO^mI6C*<~%h<@s*aEH>qz?)}Vru*hlatx}0D+_wt^fc4 delta 120 zcmdnUyOEd0fRB}TBg;+}RzourBa_L8SpF*;8k-wgFhGG@h=PKf0uY#*n1F;trm`}q s@lSrj>TM#pij^V6(9qP#2&C5#!ZI*6v4rad>4O50nEEQ#$;oVf0GXT>vj6}9 diff --git a/foxbin2prg.prg b/foxbin2prg.prg index add386e..f2a83af 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -515,7 +515,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM SET POINT TO '.' SET SEPARATOR TO ',' - lcSys16 = SYS(16) + lcSys16 = SYS(16) IF LEFT(lcSys16,10) == 'PROCEDURE ' lnPosProg = AT(" ", lcSys16, 2) + 1 ELSE @@ -1482,7 +1482,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM *-- si el OutputFile se debe regenerar o no. lnFileCount = ADIR( laFiles, FORCEEXT( .c_InputFile, '*' ), '', 1 ) STORE {//::} TO .t_InputFile_TimeStamp, .t_OutputFile_TimeStamp - + IF lnFileCount >= 1 THEN I = ASCAN( laFiles, JUSTFNAME(.c_InputFile), 1, 0, 1, 1+2+4+8 ) IF I > 0 THEN @@ -1498,7 +1498,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDIF ENDIF ENDIF - + IF .t_InputFile_TimeStamp >= .t_OutputFile_TimeStamp THEN .c_Type = UPPER(JUSTEXT(.c_OutputFile)) .o_Conversor.c_InputFile = .c_InputFile @@ -1519,9 +1519,9 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM *-- Optimizado: El Origen es anterior al Destino - No hace falta regenerar *.writeLog( '> El archivo de salida [<>] no se regenera por ser más nuevo que el de entrada.' ) .writeLog( TEXTMERGE(C_OUTPUTFILE_NEWER_THAN_INPUTFILE_LOC) ) - + ENDIF - + .normalizarCapitalizacionArchivos() ENDWITH && THIS AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' @@ -1541,7 +1541,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM FINALLY loFSO = NULL THIS.o_Conversor = NULL - + IF lnCodError = 0 OR NOT THIS.l_ShowErrors THEN THIS.writeLog( REPLICATE('-',80) ) *THIS.writeLog_Flush() @@ -1872,7 +1872,7 @@ DEFINE CLASS c_conversor_base AS SESSION C_FB2PRG_CODE = '' && Contendrá todo el código generado THIS.c_CurDir = SYS(5) + CURDIR() THIS.oFSO = CREATEOBJECT( "Scripting.FileSystemObject") - lcSys16 = SYS(16) + lcSys16 = SYS(16) IF LEFT(lcSys16,10) == 'PROCEDURE ' lnPosProg = AT(" ", lcSys16, 2) + 1 @@ -2536,11 +2536,11 @@ DEFINE CLASS c_conversor_base AS SESSION lcPropName = 'A999' + lcPropName OTHERWISE - *-- Soporte de evaluación de propiedades por clase evaluada + *-- Soporte de evaluación de propiedades por clase evaluada *IF THIS.c_ClaseActual == 'form' * lnPos = ASCAN( THIS.a_SpecialProps_Form, lcPropName, 1, 0, 1, 1+2+4 ) *ELSE - lnPos = ASCAN( THIS.a_SpecialProps, lcPropName, 1, 0, 1, 1+2+4 ) + lnPos = ASCAN( THIS.a_SpecialProps, lcPropName, 1, 0, 1, 1+2+4 ) *ENDIF lcPropName = 'A' + PADL( EVL(lnPos,998), 3, '0' ) + lcPropName ENDCASE @@ -2706,162 +2706,162 @@ DEFINE CLASS c_conversor_base AS SESSION PROCEDURE SortSpecialProps TRY - LOCAL I, loEx as Exception, lcPropsFile - lcPropsFile = '' + LOCAL I, loEx AS EXCEPTION, lcPropsFile + lcPropsFile = '' - WITH THIS AS conversor_base OF "FOXBIN2PRG.PRG" - *-- (TODAS) => Antes era solo FORM - I = 0 - - lcPropsFile = FORCEPATH( "props_all.txt", JUSTPATH( .c_Foxbin2prg_FullPath ) ) - - I = ALINES( THIS.a_SpecialProps, FILETOSTR( lcPropsFile ), 1+4 ) + WITH THIS AS conversor_base OF "FOXBIN2PRG.PRG" + *-- (TODAS) => Antes era solo FORM + I = 0 + + lcPropsFile = FORCEPATH( "props_all.txt", JUSTPATH( .c_Foxbin2prg_FullPath ) ) + + I = ALINES( THIS.a_SpecialProps, FILETOSTR( lcPropsFile ), 1+4 ) - *-- DEMÁS CLASES - IF .F. - I = 0 - .SortSpecialProps_Add( 'FRXDataSession', @I ) && En un VCX lo ví primero de todo y también luego de Height ¿? - .SortSpecialProps_Add( 'ErasePage', @I ) && PageFrame: Debe estar antes que PageCount - .SortSpecialProps_Add( 'PageCount', @I ) && PageFrame: Debe estar antes que ActivePage - .SortSpecialProps_Add( 'ActivePage', @I ) && PageFrame: Debe estar antes que Top/Left/With/Height - .SortSpecialProps_Add( 'ButtonCount', @I ) - .SortSpecialProps_Add( 'ColumnCount', @I ) - .SortSpecialProps_Add( 'Value', @I ) - .SortSpecialProps_Add( 'Comment', @I ) - .SortSpecialProps_Add( 'ControlSource', @I ) - .SortSpecialProps_Add( 'DataSession', @I ) - .SortSpecialProps_Add( 'DeleteMark', @I ) - .SortSpecialProps_Add( 'ScaleMode', @I ) - .SortSpecialProps_Add( 'Tag', @I ) - .SortSpecialProps_Add( 'OLEDragMode', @I ) && Image: Debe estar antes que OLEDragPicture - .SortSpecialProps_Add( 'OLEDragPicture', @I ) && Image: Debe estar antes que OLEDropMode - .SortSpecialProps_Add( 'OLEDropMode', @I ) && Image: Debe estar antes que OLEDropEffects - .SortSpecialProps_Add( 'OLEDropEffects', @I ) && Image: Debe estar antes que DragMode - .SortSpecialProps_Add( 'DragMode', @I ) && Image: Debe estar antes que DragIcon - .SortSpecialProps_Add( 'DragIcon', @I ) && Image: Debe estar antes que Anchor - .SortSpecialProps_Add( 'Anchor', @I ) && Image: Debe estar antes que Picture - .SortSpecialProps_Add( 'DefTop', @I ) && Propiedad con evaluación: Debe estar antes que Top - .SortSpecialProps_Add( 'DefLeft', @I ) && Propiedad con evaluación: Debe estar antes que Left - .SortSpecialProps_Add( 'DefHeight', @I ) && Propiedad con evaluación: Debe estar antes que Height - .SortSpecialProps_Add( 'DefWidth', @I ) && Propiedad con evaluación: Debe estar antes que Width - .SortSpecialProps_Add( 'Picture', @I ) && Image: Debe estar antes que Stretch y después de DefTop/DefLeft - .SortSpecialProps_Add( 'Stretch', @I ) && Image: Debe estar antes que BackStyle - .SortSpecialProps_Add( 'BackStyle', @I ) && Image: Debe estar antes que BorderStyle - .SortSpecialProps_Add( 'BorderStyle', @I ) && - .SortSpecialProps_Add( 'BorderWidth', @I ) - .SortSpecialProps_Add( 'Enabled', @I ) - .SortSpecialProps_Add( 'Top', @I ) - .SortSpecialProps_Add( 'Left', @I ) - .SortSpecialProps_Add( 'Height', @I ) - .SortSpecialProps_Add( 'Width', @I ) - .SortSpecialProps_Add( 'MousePointer', @I ) - .SortSpecialProps_Add( 'MouseIcon', @I ) - .SortSpecialProps_Add( 'Visible', @I ) - .SortSpecialProps_Add( 'MaxLength', @I ) - .SortSpecialProps_Add( 'Alias', @I ) - .SortSpecialProps_Add( 'BufferModeOverride', @I ) - .SortSpecialProps_Add( 'Order', @I ) - .SortSpecialProps_Add( 'OrderDirection', @I ) - .SortSpecialProps_Add( 'CursorSource', @I ) - .SortSpecialProps_Add( 'Exclusive', @I ) - .SortSpecialProps_Add( 'Filter', @I ) - .SortSpecialProps_Add( 'Panel', @I ) - .SortSpecialProps_Add( 'ReadOnly', @I ) - .SortSpecialProps_Add( 'RecordSource', @I ) - .SortSpecialProps_Add( 'RecordSourceType', @I ) - .SortSpecialProps_Add( 'NoDataOnLoad', @I ) - .SortSpecialProps_Add( 'OpenViews', @I ) - .SortSpecialProps_Add( 'AutoOpenTables', @I ) - .SortSpecialProps_Add( 'AutoCloseTables', @I ) - .SortSpecialProps_Add( 'InitialSelectedAlias', @I ) - .SortSpecialProps_Add( 'DataSource', @I ) - .SortSpecialProps_Add( 'DataSourceType ', @I ) - .SortSpecialProps_Add( 'Desktop', @I ) - .SortSpecialProps_Add( 'ShowWindow', @I ) - .SortSpecialProps_Add( 'ScrollBars', @I ) - .SortSpecialProps_Add( 'ShowInTaskBar', @I ) - .SortSpecialProps_Add( 'DoCreate', @I ) - .SortSpecialProps_Add( 'Tag', @I ) - .SortSpecialProps_Add( 'ShowTips', @I ) - .SortSpecialProps_Add( 'BufferMode', @I ) - .SortSpecialProps_Add( 'AutoCenter', @I ) - .SortSpecialProps_Add( 'AutoSize', @I ) - .SortSpecialProps_Add( 'WordWrap', @I ) - .SortSpecialProps_Add( 'Caption', @I ) - .SortSpecialProps_Add( 'ControlBox', @I ) - .SortSpecialProps_Add( 'Closable', @I ) - .SortSpecialProps_Add( 'Curvature', @I ) - .SortSpecialProps_Add( 'FontBold', @I ) - .SortSpecialProps_Add( 'FontCondense', @I ) - .SortSpecialProps_Add( 'FontExtend', @I ) - .SortSpecialProps_Add( 'FontItalic', @I ) - .SortSpecialProps_Add( 'FontName', @I ) - .SortSpecialProps_Add( 'FontOutline', @I ) - .SortSpecialProps_Add( 'FontShadow', @I ) - .SortSpecialProps_Add( 'FontSize', @I ) - .SortSpecialProps_Add( 'FontStrikethru', @I ) - .SortSpecialProps_Add( 'FontUnderline', @I ) - .SortSpecialProps_Add( 'HalfHeightCaption', @I ) - .SortSpecialProps_Add( 'Margin', @I ) - .SortSpecialProps_Add( 'MaxButton', @I ) - .SortSpecialProps_Add( 'MinButton', @I ) - .SortSpecialProps_Add( 'Movable', @I ) - .SortSpecialProps_Add( 'MaxHeight', @I ) - .SortSpecialProps_Add( 'MaxWidth', @I ) - .SortSpecialProps_Add( 'MinHeight', @I ) - .SortSpecialProps_Add( 'MinWidth', @I ) - .SortSpecialProps_Add( 'MaxTop', @I ) - .SortSpecialProps_Add( 'MaxLeft', @I ) - .SortSpecialProps_Add( 'MDIForm', @I ) - .SortSpecialProps_Add( 'ClipControls', @I ) - .SortSpecialProps_Add( 'DrawMode', @I ) - .SortSpecialProps_Add( 'DrawStyle', @I ) - .SortSpecialProps_Add( 'DrawWidth', @I ) - .SortSpecialProps_Add( 'FillStyle', @I ) - .SortSpecialProps_Add( 'Icon', @I ) - .SortSpecialProps_Add( 'KeyPreview', @I ) - .SortSpecialProps_Add( 'TabIndex', @I ) - .SortSpecialProps_Add( 'TabStop', @I ) - .SortSpecialProps_Add( 'TitleBar', @I ) - .SortSpecialProps_Add( 'WindowType', @I ) - .SortSpecialProps_Add( 'WindowState', @I ) - .SortSpecialProps_Add( 'LockScreen', @I ) - .SortSpecialProps_Add( 'AlwaysOnTop', @I ) - .SortSpecialProps_Add( 'AlwaysOnBottom', @I ) - .SortSpecialProps_Add( 'SizeBox', @I ) - .SortSpecialProps_Add( 'SpecialEffect', @I ) - .SortSpecialProps_Add( 'ZoomBox', @I ) - .SortSpecialProps_Add( 'ZOrderSet', @I ) - .SortSpecialProps_Add( 'HelpContextID', @I ) - .SortSpecialProps_Add( 'WhatsThisHelpID', @I ) - .SortSpecialProps_Add( 'WhatsThisHelp', @I ) - .SortSpecialProps_Add( 'WhatsThisButton', @I ) - .SortSpecialProps_Add( 'RightToLeft', @I ) - .SortSpecialProps_Add( 'DefOleLCID', @I ) - .SortSpecialProps_Add( 'MacDesktop', @I ) - .SortSpecialProps_Add( 'ColorSource', @I ) - .SortSpecialProps_Add( 'ForeColor', @I ) - .SortSpecialProps_Add( 'DisableForeColor', @I ) - .SortSpecialProps_Add( 'BackColor', @I ) - .SortSpecialProps_Add( 'FillColor', @I ) - .SortSpecialProps_Add( 'HScrollSmallChange', @I ) - .SortSpecialProps_Add( 'VScrollSmallChange', @I ) - .SortSpecialProps_Add( 'ContinuousScroll', @I ) - .SortSpecialProps_Add( 'BindControls', @I ) - .SortSpecialProps_Add( 'AllowOutput', @I ) - .SortSpecialProps_Add( 'Dockable', @I ) - .SortSpecialProps_Add( '_memberdata', @I ) - .SortSpecialProps_Add( 'Themes', @I ) - *.SortSpecialProps_Add( 'Name', @I ) && System "Name" property - ENDIF - ENDWITH + *-- DEMÁS CLASES + IF .F. + I = 0 + .SortSpecialProps_Add( 'FRXDataSession', @I ) && En un VCX lo ví primero de todo y también luego de Height ¿? + .SortSpecialProps_Add( 'ErasePage', @I ) && PageFrame: Debe estar antes que PageCount + .SortSpecialProps_Add( 'PageCount', @I ) && PageFrame: Debe estar antes que ActivePage + .SortSpecialProps_Add( 'ActivePage', @I ) && PageFrame: Debe estar antes que Top/Left/With/Height + .SortSpecialProps_Add( 'ButtonCount', @I ) + .SortSpecialProps_Add( 'ColumnCount', @I ) + .SortSpecialProps_Add( 'Value', @I ) + .SortSpecialProps_Add( 'Comment', @I ) + .SortSpecialProps_Add( 'ControlSource', @I ) + .SortSpecialProps_Add( 'DataSession', @I ) + .SortSpecialProps_Add( 'DeleteMark', @I ) + .SortSpecialProps_Add( 'ScaleMode', @I ) + .SortSpecialProps_Add( 'Tag', @I ) + .SortSpecialProps_Add( 'OLEDragMode', @I ) && Image: Debe estar antes que OLEDragPicture + .SortSpecialProps_Add( 'OLEDragPicture', @I ) && Image: Debe estar antes que OLEDropMode + .SortSpecialProps_Add( 'OLEDropMode', @I ) && Image: Debe estar antes que OLEDropEffects + .SortSpecialProps_Add( 'OLEDropEffects', @I ) && Image: Debe estar antes que DragMode + .SortSpecialProps_Add( 'DragMode', @I ) && Image: Debe estar antes que DragIcon + .SortSpecialProps_Add( 'DragIcon', @I ) && Image: Debe estar antes que Anchor + .SortSpecialProps_Add( 'Anchor', @I ) && Image: Debe estar antes que Picture + .SortSpecialProps_Add( 'DefTop', @I ) && Propiedad con evaluación: Debe estar antes que Top + .SortSpecialProps_Add( 'DefLeft', @I ) && Propiedad con evaluación: Debe estar antes que Left + .SortSpecialProps_Add( 'DefHeight', @I ) && Propiedad con evaluación: Debe estar antes que Height + .SortSpecialProps_Add( 'DefWidth', @I ) && Propiedad con evaluación: Debe estar antes que Width + .SortSpecialProps_Add( 'Picture', @I ) && Image: Debe estar antes que Stretch y después de DefTop/DefLeft + .SortSpecialProps_Add( 'Stretch', @I ) && Image: Debe estar antes que BackStyle + .SortSpecialProps_Add( 'BackStyle', @I ) && Image: Debe estar antes que BorderStyle + .SortSpecialProps_Add( 'BorderStyle', @I ) && + .SortSpecialProps_Add( 'BorderWidth', @I ) + .SortSpecialProps_Add( 'Enabled', @I ) + .SortSpecialProps_Add( 'Top', @I ) + .SortSpecialProps_Add( 'Left', @I ) + .SortSpecialProps_Add( 'Height', @I ) + .SortSpecialProps_Add( 'Width', @I ) + .SortSpecialProps_Add( 'MousePointer', @I ) + .SortSpecialProps_Add( 'MouseIcon', @I ) + .SortSpecialProps_Add( 'Visible', @I ) + .SortSpecialProps_Add( 'MaxLength', @I ) + .SortSpecialProps_Add( 'Alias', @I ) + .SortSpecialProps_Add( 'BufferModeOverride', @I ) + .SortSpecialProps_Add( 'Order', @I ) + .SortSpecialProps_Add( 'OrderDirection', @I ) + .SortSpecialProps_Add( 'CursorSource', @I ) + .SortSpecialProps_Add( 'Exclusive', @I ) + .SortSpecialProps_Add( 'Filter', @I ) + .SortSpecialProps_Add( 'Panel', @I ) + .SortSpecialProps_Add( 'ReadOnly', @I ) + .SortSpecialProps_Add( 'RecordSource', @I ) + .SortSpecialProps_Add( 'RecordSourceType', @I ) + .SortSpecialProps_Add( 'NoDataOnLoad', @I ) + .SortSpecialProps_Add( 'OpenViews', @I ) + .SortSpecialProps_Add( 'AutoOpenTables', @I ) + .SortSpecialProps_Add( 'AutoCloseTables', @I ) + .SortSpecialProps_Add( 'InitialSelectedAlias', @I ) + .SortSpecialProps_Add( 'DataSource', @I ) + .SortSpecialProps_Add( 'DataSourceType ', @I ) + .SortSpecialProps_Add( 'Desktop', @I ) + .SortSpecialProps_Add( 'ShowWindow', @I ) + .SortSpecialProps_Add( 'ScrollBars', @I ) + .SortSpecialProps_Add( 'ShowInTaskBar', @I ) + .SortSpecialProps_Add( 'DoCreate', @I ) + .SortSpecialProps_Add( 'Tag', @I ) + .SortSpecialProps_Add( 'ShowTips', @I ) + .SortSpecialProps_Add( 'BufferMode', @I ) + .SortSpecialProps_Add( 'AutoCenter', @I ) + .SortSpecialProps_Add( 'AutoSize', @I ) + .SortSpecialProps_Add( 'WordWrap', @I ) + .SortSpecialProps_Add( 'Caption', @I ) + .SortSpecialProps_Add( 'ControlBox', @I ) + .SortSpecialProps_Add( 'Closable', @I ) + .SortSpecialProps_Add( 'Curvature', @I ) + .SortSpecialProps_Add( 'FontBold', @I ) + .SortSpecialProps_Add( 'FontCondense', @I ) + .SortSpecialProps_Add( 'FontExtend', @I ) + .SortSpecialProps_Add( 'FontItalic', @I ) + .SortSpecialProps_Add( 'FontName', @I ) + .SortSpecialProps_Add( 'FontOutline', @I ) + .SortSpecialProps_Add( 'FontShadow', @I ) + .SortSpecialProps_Add( 'FontSize', @I ) + .SortSpecialProps_Add( 'FontStrikethru', @I ) + .SortSpecialProps_Add( 'FontUnderline', @I ) + .SortSpecialProps_Add( 'HalfHeightCaption', @I ) + .SortSpecialProps_Add( 'Margin', @I ) + .SortSpecialProps_Add( 'MaxButton', @I ) + .SortSpecialProps_Add( 'MinButton', @I ) + .SortSpecialProps_Add( 'Movable', @I ) + .SortSpecialProps_Add( 'MaxHeight', @I ) + .SortSpecialProps_Add( 'MaxWidth', @I ) + .SortSpecialProps_Add( 'MinHeight', @I ) + .SortSpecialProps_Add( 'MinWidth', @I ) + .SortSpecialProps_Add( 'MaxTop', @I ) + .SortSpecialProps_Add( 'MaxLeft', @I ) + .SortSpecialProps_Add( 'MDIForm', @I ) + .SortSpecialProps_Add( 'ClipControls', @I ) + .SortSpecialProps_Add( 'DrawMode', @I ) + .SortSpecialProps_Add( 'DrawStyle', @I ) + .SortSpecialProps_Add( 'DrawWidth', @I ) + .SortSpecialProps_Add( 'FillStyle', @I ) + .SortSpecialProps_Add( 'Icon', @I ) + .SortSpecialProps_Add( 'KeyPreview', @I ) + .SortSpecialProps_Add( 'TabIndex', @I ) + .SortSpecialProps_Add( 'TabStop', @I ) + .SortSpecialProps_Add( 'TitleBar', @I ) + .SortSpecialProps_Add( 'WindowType', @I ) + .SortSpecialProps_Add( 'WindowState', @I ) + .SortSpecialProps_Add( 'LockScreen', @I ) + .SortSpecialProps_Add( 'AlwaysOnTop', @I ) + .SortSpecialProps_Add( 'AlwaysOnBottom', @I ) + .SortSpecialProps_Add( 'SizeBox', @I ) + .SortSpecialProps_Add( 'SpecialEffect', @I ) + .SortSpecialProps_Add( 'ZoomBox', @I ) + .SortSpecialProps_Add( 'ZOrderSet', @I ) + .SortSpecialProps_Add( 'HelpContextID', @I ) + .SortSpecialProps_Add( 'WhatsThisHelpID', @I ) + .SortSpecialProps_Add( 'WhatsThisHelp', @I ) + .SortSpecialProps_Add( 'WhatsThisButton', @I ) + .SortSpecialProps_Add( 'RightToLeft', @I ) + .SortSpecialProps_Add( 'DefOleLCID', @I ) + .SortSpecialProps_Add( 'MacDesktop', @I ) + .SortSpecialProps_Add( 'ColorSource', @I ) + .SortSpecialProps_Add( 'ForeColor', @I ) + .SortSpecialProps_Add( 'DisableForeColor', @I ) + .SortSpecialProps_Add( 'BackColor', @I ) + .SortSpecialProps_Add( 'FillColor', @I ) + .SortSpecialProps_Add( 'HScrollSmallChange', @I ) + .SortSpecialProps_Add( 'VScrollSmallChange', @I ) + .SortSpecialProps_Add( 'ContinuousScroll', @I ) + .SortSpecialProps_Add( 'BindControls', @I ) + .SortSpecialProps_Add( 'AllowOutput', @I ) + .SortSpecialProps_Add( 'Dockable', @I ) + .SortSpecialProps_Add( '_memberdata', @I ) + .SortSpecialProps_Add( 'Themes', @I ) + *.SortSpecialProps_Add( 'Name', @I ) && System "Name" property + ENDIF + ENDWITH CATCH TO loEx - loEx.UserValue = 'lcPropsFile = ' + lcPropsFile - + loEx.USERVALUE = 'lcPropsFile = ' + lcPropsFile + IF THIS.l_Debug AND _VFP.STARTMODE = 0 SET STEP ON ENDIF @@ -7840,7 +7840,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base *-- taCode[1] *-- Bloque de código del método en su posición original TRY - LOCAL lnLineCount, laLine(1), I, lnTextNodes, tcSorted, lnProtectedLine, lcMethod + LOCAL lnLineCount, laLine(1), I, lnTextNodes, tcSorted, lnProtectedLine, lcMethod, lnLine_Len, lcLine LOCAL loEx AS EXCEPTION DIMENSION taMethods(1,3) STORE '' TO taMethods, m.tcSorted, taCode @@ -7885,16 +7885,39 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base *-- Analyze and count line methods, get method names and consolidate block code FOR I = 1 TO lnLineCount + lnLine_Len = LEN( laLine(I) ) + DO CASE - CASE LEFT(laLine(I), 4) == C_TEXT + CASE UPPER( LEFT(laLine(I), 4) ) == "TEXT" + lcLine = UPPER( CHRTRAN( laLine(I) , '&'+CHR(9)+CHR(0), ' ') ) + ' ' + IF lnLine_Len >= 4 AND LEFT(lcLine,5) == 'TEXT ' + *-- Es el comando TEXT + ELSE + *-- Es otra cosa (variable, etc) + taCode(tnMethodCount) = taCode(tnMethodCount) + laLine(I) + CR_LF + LOOP + ENDIF + lnTextNodes = lnTextNodes + 1 taCode(tnMethodCount) = taCode(tnMethodCount) + laLine(I) + CR_LF - CASE LEFT(laLine(I), 7) == C_ENDTEXT + CASE UPPER( LEFT(laLine(I), 4) ) == "ENDT" + lcLine = UPPER( CHRTRAN( laLine(I) , '&'+CHR(9)+CHR(0), ' ') ) + ' ' + IF lnLine_Len >= 7 AND LEFT(lcLine,8) == 'ENDTEXT ' ; + OR lnLine_Len >= 6 AND LEFT(lcLine,7) == 'ENDTEX ' ; + OR lnLine_Len >= 5 AND LEFT(lcLine,6) == 'ENDTE ' ; + OR lnLine_Len >= 4 AND LEFT(lcLine,5) == 'ENDT ' + *-- Es el comando ENDTEXT + ELSE + *-- Es otra cosa (variable, etc) + taCode(tnMethodCount) = taCode(tnMethodCount) + laLine(I) + CR_LF + LOOP + ENDIF + lnTextNodes = lnTextNodes - 1 taCode(tnMethodCount) = taCode(tnMethodCount) + laLine(I) + CR_LF - CASE lnTextNodes = 0 AND LEFT(laLine(I), 10) == 'PROCEDURE ' + CASE lnTextNodes = 0 AND UPPER( LEFT(laLine(I), 10) ) == 'PROCEDURE ' tnMethodCount = tnMethodCount + 1 DIMENSION taMethods(tnMethodCount, 3), taCode(tnMethodCount) taMethods(tnMethodCount, 1) = RTRIM( SUBSTR(laLine(I), 11) ) @@ -7902,7 +7925,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base taMethods(tnMethodCount, 3) = '' taCode(tnMethodCount) = laLine(I) + CR_LF - CASE lnTextNodes = 0 AND LEFT(laLine(I), 17) == 'HIDDEN PROCEDURE ' + CASE lnTextNodes = 0 AND UPPER( LEFT(laLine(I), 17) ) == 'HIDDEN PROCEDURE ' tnMethodCount = tnMethodCount + 1 DIMENSION taMethods(tnMethodCount, 3), taCode(tnMethodCount) taMethods(tnMethodCount, 1) = RTRIM( SUBSTR(laLine(I), 18) ) @@ -7910,7 +7933,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base taMethods(tnMethodCount, 3) = 'HIDDEN ' taCode(tnMethodCount) = laLine(I) + CR_LF - CASE lnTextNodes = 0 AND LEFT(laLine(I), 20) == 'PROTECTED PROCEDURE ' + CASE lnTextNodes = 0 AND UPPER( LEFT(laLine(I), 20) ) == 'PROTECTED PROCEDURE ' tnMethodCount = tnMethodCount + 1 DIMENSION taMethods(tnMethodCount, 3), taCode(tnMethodCount) taMethods(tnMethodCount, 1) = RTRIM( SUBSTR(laLine(I), 21) ) @@ -7919,6 +7942,15 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base taCode(tnMethodCount) = laLine(I) + CR_LF CASE lnTextNodes = 0 AND LEFT(laLine(I), 7) == 'ENDPROC' + lcLine = UPPER( CHRTRAN( laLine(I) , '&'+CHR(9)+CHR(0), ' ') ) + ' ' + IF lnLine_Len >= 7 AND LEFT(lcLine,8) == 'ENDPROC ' + *-- Es el final de estructura ENDPROC + ELSE + *-- Es otra cosa (variable, etc) + taCode(tnMethodCount) = taCode(tnMethodCount) + laLine(I) + CR_LF + LOOP + ENDIF + taCode(tnMethodCount) = taCode(tnMethodCount) + laLine(I) + CR_LF CASE tnMethodCount = 0 && Skip empty lines before methods begin From 17e12d781847ddd34276abcc6029522d6198098e Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Wed, 14 May 2014 00:51:05 +0200 Subject: [PATCH 03/20] Changeset: 239 fdbozzo - 14/05/2014 00:44:58: Ajuste comillas --- foxbin2prg.pj2 | 2 +- foxbin2prg.pjt | Bin 371830 -> 371830 bytes foxbin2prg.pjx | Bin 1713 -> 1713 bytes foxbin2prg.prg | 4 ++-- 4 files changed, 3 insertions(+), 3 deletions(-) diff --git a/foxbin2prg.pj2 b/foxbin2prg.pj2 index 6ec139a..509eb7e 100644 --- a/foxbin2prg.pj2 +++ b/foxbin2prg.pj2 @@ -26,7 +26,7 @@ _LegalTrademark = "Creative Commons 4: Reconocimiento - CompartirIgual (by-sa): _ProductName = " FOXBIN2PRG v1.19.22" _MajorVer = "1" _MinorVer = "19" -_Revision = " 325" +_Revision = " 326" _LanguageID = "1034" _AutoIncrement = "1" * diff --git a/foxbin2prg.pjt b/foxbin2prg.pjt index 9c52a656028194196f9ccf7cee16cb014787ac35..05c139030663d108c45686ae5862c13074dbe389 100644 GIT binary patch delta 90 zcmex%L+slPu?@zYjAolnIP;}>+}YN-m@qIf{F%k5J^6yMOI@Hqf7X(l58 delta 90 zcmex%L+slPu?@zYjHa7SIP;}>PP43YF=1d}_%n-9d-4Ti$;ky*1e$NCY`>wx$T^?) uCJRG|Yeb01-=D0fnWsNI!e}&I;Rxdv#+&U|k1zr;6A&|Rzj}ma;d1~^@g`sZ diff --git a/foxbin2prg.pjx b/foxbin2prg.pjx index 8b43d7d68d405f297d364b2b5041852e25769ff5..2fc34fe6fdff734cd9d703835cc6a9ff13583d31 100644 GIT binary patch delta 23 fcmdnUyODRpeimj^GlR{CSQr_ZOid>rWqktxT<-_I delta 23 fcmdnUyODRpeimj!3&YKaSQr_Z49zDWWqktxT+Ro( diff --git a/foxbin2prg.prg b/foxbin2prg.prg index f2a83af..fc16070 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -7888,7 +7888,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base lnLine_Len = LEN( laLine(I) ) DO CASE - CASE UPPER( LEFT(laLine(I), 4) ) == "TEXT" + CASE UPPER( LEFT(laLine(I), 4) ) == 'TEXT' lcLine = UPPER( CHRTRAN( laLine(I) , '&'+CHR(9)+CHR(0), ' ') ) + ' ' IF lnLine_Len >= 4 AND LEFT(lcLine,5) == 'TEXT ' *-- Es el comando TEXT @@ -7901,7 +7901,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base lnTextNodes = lnTextNodes + 1 taCode(tnMethodCount) = taCode(tnMethodCount) + laLine(I) + CR_LF - CASE UPPER( LEFT(laLine(I), 4) ) == "ENDT" + CASE UPPER( LEFT(laLine(I), 4) ) == 'ENDT' lcLine = UPPER( CHRTRAN( laLine(I) , '&'+CHR(9)+CHR(0), ' ') ) + ' ' IF lnLine_Len >= 7 AND LEFT(lcLine,8) == 'ENDTEXT ' ; OR lnLine_Len >= 6 AND LEFT(lcLine,7) == 'ENDTEX ' ; From 7057c63ae23bb854142854662aadeb87421fc6ed Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Wed, 14 May 2014 20:25:49 +0200 Subject: [PATCH 04/20] =?UTF-8?q?Changeset:=20240=20fdbozzo=20-=2014/05/20?= =?UTF-8?q?14=2000:51:06:=20-=20Agregada=20la=20evaluaci=C3=B3n=20y=20gene?= =?UTF-8?q?raci=C3=B3n=20de=20propiedades=20por=20clase,=20cuando=20sea=20?= =?UTF-8?q?aplicable?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- foxbin2prg.pj2 | 41 ++++- foxbin2prg.pjt | Bin 371830 -> 376514 bytes foxbin2prg.pjx | Bin 1713 -> 6653 bytes foxbin2prg.prg | 403 +++++++++++++++++++++++++------------------ props_all.txt | 1 + props_xmladapter.txt | 24 +++ 6 files changed, 302 insertions(+), 167 deletions(-) diff --git a/foxbin2prg.pj2 b/foxbin2prg.pj2 index 509eb7e..962f1d7 100644 --- a/foxbin2prg.pj2 +++ b/foxbin2prg.pj2 @@ -26,7 +26,7 @@ _LegalTrademark = "Creative Commons 4: Reconocimiento - CompartirIgual (by-sa): _ProductName = " FOXBIN2PRG v1.19.22" _MajorVer = "1" _MinorVer = "19" -_Revision = " 326" +_Revision = " 332" _LanguageID = "1034" _AutoIncrement = "1" * @@ -53,12 +53,51 @@ WITH loProject.FILES .ADD('config\config.fpw') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> .ADD('foxbin2prg.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" /> .ADD('props_all.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> + .ADD('props_checkbox.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> + .ADD('props_collection.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> + .ADD('props_combobox.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> + .ADD('props_commandbutton.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> + .ADD('props_commandgroup.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> + .ADD('props_container.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> + .ADD('props_control.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> + .ADD('props_cursor.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> + .ADD('props_cursoradapter.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> + .ADD('props_dataenvironment.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> + .ADD('props_editbox.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> + .ADD('props_form.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> + .ADD('props_formset.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> + .ADD('props_grid.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> + .ADD('props_grid_column.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> + .ADD('props_grid_header.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> + .ADD('props_hyperlink.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> + .ADD('props_image.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> + .ADD('props_label.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> + .ADD('props_line.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> + .ADD('props_listbox.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> + .ADD('props_olebound.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> + .ADD('props_optiongroup.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> + .ADD('props_optiongroup_option.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> + .ADD('props_pageframe.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> + .ADD('props_pageframe_page.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> + .ADD('props_projecthook.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> + .ADD('props_relation.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> + .ADD('props_reportlistener.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> + .ADD('props_separator.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> + .ADD('props_shape.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> + .ADD('props_spinner.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> + .ADD('props_textbox.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> + .ADD('props_timer.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> + .ADD('props_toolbar.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> + .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" /> * .ITEM('__newproject.f2b').Remove() * .ITEM(lcCurdir + 'foxbin2prg.prg').Description = 'Conversor' + .ITEM(lcCurdir + 'props_all.txt').Description = 'All properties from all VFP classes' * * diff --git a/foxbin2prg.pjt b/foxbin2prg.pjt index 05c139030663d108c45686ae5862c13074dbe389..bb7edc81de0856f7a6aa8ca9d3f57f8ad4721198 100644 GIT binary patch delta 21241 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

    yOBfD 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 delta 90 zcmexsypfmHfRB}rWh3hj7FJVJQ!|6fhgkk=16ih)3{c<}qM+cW00gEcCLp0meg=jx k6$S] - DIMENSION a_SpecialProps(1), a_SpecialProps_Form(1) + DIMENSION a_SpecialProps(1), a_SpecialProps_Chk(1), a_SpecialProps_Coll(1) ; + , a_SpecialProps_Cbo(1), a_SpecialProps_Cmg(1), a_SpecialProps_Cmd(1), a_SpecialProps_Cur(1) ; + , a_SpecialProps_CA(1), a_SpecialProps_DE(1), a_SpecialProps_Edt(1), a_SpecialProps_Frs(1) ; + , a_SpecialProps_Grd(1), a_SpecialProps_Grc(1), a_SpecialProps_Grh(1), a_SpecialProps_Hlk(1) ; + , a_SpecialProps_Img(1), a_SpecialProps_Lbl(1), a_SpecialProps_Lin(1), a_SpecialProps_Lst(1) ; + , a_SpecialProps_Ole(1), a_SpecialProps_Opg(1), a_SpecialProps_Opb(1), a_SpecialProps_Phk(1) ; + , a_SpecialProps_Rel(1), a_SpecialProps_Rls(1), a_SpecialProps_Sep(1), a_SpecialProps_Shp(1) ; + , a_SpecialProps_Spn(1), a_SpecialProps_Txt(1), a_SpecialProps_Tmr(1), a_SpecialProps_Tbr(1) ; + , a_SpecialProps_XMLAda(1), a_SpecialProps_XMLFld(1), a_SpecialProps_XMLTbl(1) + l_Debug = .F. l_Test = .F. c_InputFile = '' @@ -2537,12 +2546,131 @@ DEFINE CLASS c_conversor_base AS SESSION OTHERWISE *-- Soporte de evaluación de propiedades por clase evaluada - *IF THIS.c_ClaseActual == 'form' - * lnPos = ASCAN( THIS.a_SpecialProps_Form, lcPropName, 1, 0, 1, 1+2+4 ) - *ELSE - lnPos = ASCAN( THIS.a_SpecialProps, lcPropName, 1, 0, 1, 1+2+4 ) - *ENDIF - lcPropName = 'A' + PADL( EVL(lnPos,998), 3, '0' ) + lcPropName + WITH THIS + DO CASE + CASE .c_ClaseActual == 'checkbox' + lnPos = ASCAN( .a_SpecialProps_Chk, lcPropName, 1, 0, 1, 1+2+4 ) + + CASE .c_ClaseActual == 'collection' + lnPos = ASCAN( .a_SpecialProps_Coll, lcPropName, 1, 0, 1, 1+2+4 ) + + CASE .c_ClaseActual == 'combobox' + lnPos = ASCAN( .a_SpecialProps_Cbo, lcPropName, 1, 0, 1, 1+2+4 ) + + CASE .c_ClaseActual == 'commandgroup' + lnPos = ASCAN( .a_SpecialProps_Cmg, lcPropName, 1, 0, 1, 1+2+4 ) + + CASE .c_ClaseActual == 'commandbutton' + lnPos = ASCAN( .a_SpecialProps_Cmd, lcPropName, 1, 0, 1, 1+2+4 ) + + CASE .c_ClaseActual == 'cursor' + lnPos = ASCAN( .a_SpecialProps_Cur, lcPropName, 1, 0, 1, 1+2+4 ) + + CASE .c_ClaseActual == 'cursoradapter' + lnPos = ASCAN( .a_SpecialProps_CA, lcPropName, 1, 0, 1, 1+2+4 ) + + CASE .c_ClaseActual == 'dataenvironment' + lnPos = ASCAN( .a_SpecialProps_DE, lcPropName, 1, 0, 1, 1+2+4 ) + + CASE .c_ClaseActual == 'editbox' + lnPos = ASCAN( .a_SpecialProps_Edt, lcPropName, 1, 0, 1, 1+2+4 ) + + CASE .c_ClaseActual == 'formset' + lnPos = ASCAN( .a_SpecialProps_Frs, lcPropName, 1, 0, 1, 1+2+4 ) + + *-- Comento la clase grid, porque puede contener a todos los controles, como un form + *CASE .c_ClaseActual == 'grid' + * lnPos = ASCAN( .a_SpecialProps_Grd, lcPropName, 1, 0, 1, 1+2+4 ) + + *-- Comento la clase form, porque puede contener a todos los controles, como un form + *CASE .c_ClaseActual == 'form' + * lnPos = ASCAN( .a_SpecialProps_Frm, lcPropName, 1, 0, 1, 1+2+4 ) + + *-- Comento la clase pageframe, porque puede contener a todos los controles, como un form + *CASE .c_ClaseActual == 'pageframe' + * lnPos = ASCAN( .a_SpecialProps_Pgf, lcPropName, 1, 0, 1, 1+2+4 ) + + *-- Comento la clase control, porque puede contener a todos los controles, como un form + *CASE .c_ClaseActual == 'control' + * lnPos = ASCAN( .a_SpecialProps_Ctl, lcPropName, 1, 0, 1, 1+2+4 ) + + *-- Comento la clase container, porque puede contener a todos los controles, como un form + *CASE .c_ClaseActual == 'container' + * lnPos = ASCAN( .a_SpecialProps_Cnt, lcPropName, 1, 0, 1, 1+2+4 ) + + CASE .c_ClaseActual == 'column' + lnPos = ASCAN( .a_SpecialProps_Grc, lcPropName, 1, 0, 1, 1+2+4 ) + + CASE .c_ClaseActual == 'header' + lnPos = ASCAN( .a_SpecialProps_Grh, lcPropName, 1, 0, 1, 1+2+4 ) + + CASE .c_ClaseActual == 'hyperlink' + lnPos = ASCAN( .a_SpecialProps_Hlk, lcPropName, 1, 0, 1, 1+2+4 ) + + CASE .c_ClaseActual == 'image' + lnPos = ASCAN( .a_SpecialProps_Img, lcPropName, 1, 0, 1, 1+2+4 ) + + CASE .c_ClaseActual == 'label' + lnPos = ASCAN( .a_SpecialProps_Lbl, lcPropName, 1, 0, 1, 1+2+4 ) + + CASE .c_ClaseActual == 'line' + lnPos = ASCAN( .a_SpecialProps_Lin, lcPropName, 1, 0, 1, 1+2+4 ) + + CASE .c_ClaseActual == 'listbox' + lnPos = ASCAN( .a_SpecialProps_Lst, lcPropName, 1, 0, 1, 1+2+4 ) + + CASE .c_ClaseActual == 'olebound' + lnPos = ASCAN( .a_SpecialProps_Ole, lcPropName, 1, 0, 1, 1+2+4 ) + + CASE .c_ClaseActual == 'optiongroup' + lnPos = ASCAN( .a_SpecialProps_Opg, lcPropName, 1, 0, 1, 1+2+4 ) + + CASE .c_ClaseActual == 'optionbutton' + lnPos = ASCAN( .a_SpecialProps_Opb, lcPropName, 1, 0, 1, 1+2+4 ) + + CASE .c_ClaseActual == 'projecthook' + lnPos = ASCAN( .a_SpecialProps_Phk, lcPropName, 1, 0, 1, 1+2+4 ) + + CASE .c_ClaseActual == 'relation' + lnPos = ASCAN( .a_SpecialProps_Rel, lcPropName, 1, 0, 1, 1+2+4 ) + + CASE .c_ClaseActual == 'reportlistener' + lnPos = ASCAN( .a_SpecialProps_Rls, lcPropName, 1, 0, 1, 1+2+4 ) + + CASE .c_ClaseActual == 'separator' + lnPos = ASCAN( .a_SpecialProps_Sep, lcPropName, 1, 0, 1, 1+2+4 ) + + CASE .c_ClaseActual == 'shape' + lnPos = ASCAN( .a_SpecialProps_Shp, lcPropName, 1, 0, 1, 1+2+4 ) + + CASE .c_ClaseActual == 'spinner' + lnPos = ASCAN( .a_SpecialProps_Spn, lcPropName, 1, 0, 1, 1+2+4 ) + + CASE .c_ClaseActual == 'textbox' + lnPos = ASCAN( .a_SpecialProps_Txt, lcPropName, 1, 0, 1, 1+2+4 ) + + CASE .c_ClaseActual == 'timer' + lnPos = ASCAN( .a_SpecialProps_Tmr, lcPropName, 1, 0, 1, 1+2+4 ) + + *-- Comento la clase toolbar, porque puede contener a todos los controles, como un form + *CASE .c_ClaseActual == 'toolbar' + * lnPos = ASCAN( .a_SpecialProps_Tbr, lcPropName, 1, 0, 1, 1+2+4 ) + + CASE .c_ClaseActual == 'xmladapter' + lnPos = ASCAN( .a_SpecialProps_XMLAda, lcPropName, 1, 0, 1, 1+2+4 ) + + CASE .c_ClaseActual == 'xmlfield' + lnPos = ASCAN( .a_SpecialProps_Fld, lcPropName, 1, 0, 1, 1+2+4 ) + + CASE .c_ClaseActual == 'xmltable' + lnPos = ASCAN( .a_SpecialProps_XMLTbl, lcPropName, 1, 0, 1, 1+2+4 ) + + OTHERWISE + lnPos = ASCAN( .a_SpecialProps, lcPropName, 1, 0, 1, 1+2+4 ) + ENDCASE + + lcPropName = 'A' + PADL( EVL(lnPos,998), 3, '0' ) + lcPropName + ENDWITH && THIS ENDCASE CATCH TO loEx @@ -2686,25 +2814,7 @@ DEFINE CLASS c_conversor_base AS SESSION - PROTECTED PROCEDURE SortSpecialProps_Add - LPARAMETERS tcPropName, I - I = I + 1 - DIMENSION THIS.a_SpecialProps(I) - THIS.a_SpecialProps(I) = tcPropName - ENDPROC - - - - PROTECTED PROCEDURE SortSpecialProps_Form_Add - LPARAMETERS tcPropName, I - I = I + 1 - DIMENSION THIS.a_SpecialProps_Form(I) - THIS.a_SpecialProps_Form(I) = tcPropName - ENDPROC - - - - PROCEDURE SortSpecialProps + PROCEDURE SortSpecialProps TRY LOCAL I, loEx AS EXCEPTION, lcPropsFile lcPropsFile = '' @@ -2714,150 +2824,111 @@ DEFINE CLASS c_conversor_base AS SESSION I = 0 lcPropsFile = FORCEPATH( "props_all.txt", JUSTPATH( .c_Foxbin2prg_FullPath ) ) + I = ALINES( .a_SpecialProps, FILETOSTR( lcPropsFile ), 1+4 ) - I = ALINES( THIS.a_SpecialProps, FILETOSTR( lcPropsFile ), 1+4 ) + lcPropsFile = FORCEPATH( "props_checkbox.txt", JUSTPATH( .c_Foxbin2prg_FullPath ) ) + I = ALINES( .a_SpecialProps_Chk, FILETOSTR( lcPropsFile ), 1+4 ) + lcPropsFile = FORCEPATH( "props_collection.txt", JUSTPATH( .c_Foxbin2prg_FullPath ) ) + I = ALINES( .a_SpecialProps_Coll, FILETOSTR( lcPropsFile ), 1+4 ) + lcPropsFile = FORCEPATH( "props_combobox.txt", JUSTPATH( .c_Foxbin2prg_FullPath ) ) + I = ALINES( .a_SpecialProps_Cbo, FILETOSTR( lcPropsFile ), 1+4 ) + + lcPropsFile = FORCEPATH( "props_commandgroup.txt", JUSTPATH( .c_Foxbin2prg_FullPath ) ) + I = ALINES( .a_SpecialProps_Cmg, FILETOSTR( lcPropsFile ), 1+4 ) + + lcPropsFile = FORCEPATH( "props_commandbutton.txt", JUSTPATH( .c_Foxbin2prg_FullPath ) ) + I = ALINES( .a_SpecialProps_Cmd, FILETOSTR( lcPropsFile ), 1+4 ) + + lcPropsFile = FORCEPATH( "props_cursor.txt", JUSTPATH( .c_Foxbin2prg_FullPath ) ) + I = ALINES( .a_SpecialProps_Cur, FILETOSTR( lcPropsFile ), 1+4 ) + + lcPropsFile = FORCEPATH( "props_cursoradapter.txt", JUSTPATH( .c_Foxbin2prg_FullPath ) ) + I = ALINES( .a_SpecialProps_CA, FILETOSTR( lcPropsFile ), 1+4 ) + + lcPropsFile = FORCEPATH( "props_dataenvironment.txt", JUSTPATH( .c_Foxbin2prg_FullPath ) ) + I = ALINES( .a_SpecialProps_DE, FILETOSTR( lcPropsFile ), 1+4 ) + + lcPropsFile = FORCEPATH( "props_editbox.txt", JUSTPATH( .c_Foxbin2prg_FullPath ) ) + I = ALINES( .a_SpecialProps_Edt, FILETOSTR( lcPropsFile ), 1+4 ) + + lcPropsFile = FORCEPATH( "props_formset.txt", JUSTPATH( .c_Foxbin2prg_FullPath ) ) + I = ALINES( .a_SpecialProps_Frs, FILETOSTR( lcPropsFile ), 1+4 ) + + lcPropsFile = FORCEPATH( "props_grid.txt", JUSTPATH( .c_Foxbin2prg_FullPath ) ) + I = ALINES( .a_SpecialProps_Grd, FILETOSTR( lcPropsFile ), 1+4 ) + + lcPropsFile = FORCEPATH( "props_grid_column.txt", JUSTPATH( .c_Foxbin2prg_FullPath ) ) + I = ALINES( .a_SpecialProps_Grc, FILETOSTR( lcPropsFile ), 1+4 ) + + lcPropsFile = FORCEPATH( "props_grid_header.txt", JUSTPATH( .c_Foxbin2prg_FullPath ) ) + I = ALINES( .a_SpecialProps_Grh, FILETOSTR( lcPropsFile ), 1+4 ) + + lcPropsFile = FORCEPATH( "props_hyperlink.txt", JUSTPATH( .c_Foxbin2prg_FullPath ) ) + I = ALINES( .a_SpecialProps_Hlk, FILETOSTR( lcPropsFile ), 1+4 ) + + lcPropsFile = FORCEPATH( "props_image.txt", JUSTPATH( .c_Foxbin2prg_FullPath ) ) + I = ALINES( .a_SpecialProps_Img, FILETOSTR( lcPropsFile ), 1+4 ) + + lcPropsFile = FORCEPATH( "props_label.txt", JUSTPATH( .c_Foxbin2prg_FullPath ) ) + I = ALINES( .a_SpecialProps_Lbl, FILETOSTR( lcPropsFile ), 1+4 ) + + lcPropsFile = FORCEPATH( "props_line.txt", JUSTPATH( .c_Foxbin2prg_FullPath ) ) + I = ALINES( .a_SpecialProps_Lin, FILETOSTR( lcPropsFile ), 1+4 ) + + lcPropsFile = FORCEPATH( "props_listbox.txt", JUSTPATH( .c_Foxbin2prg_FullPath ) ) + I = ALINES( .a_SpecialProps_Lst, FILETOSTR( lcPropsFile ), 1+4 ) + + lcPropsFile = FORCEPATH( "props_olebound.txt", JUSTPATH( .c_Foxbin2prg_FullPath ) ) + I = ALINES( .a_SpecialProps_Ole, FILETOSTR( lcPropsFile ), 1+4 ) + + lcPropsFile = FORCEPATH( "props_optiongroup.txt", JUSTPATH( .c_Foxbin2prg_FullPath ) ) + I = ALINES( .a_SpecialProps_Opg, FILETOSTR( lcPropsFile ), 1+4 ) + + lcPropsFile = FORCEPATH( "props_optiongroup_option.txt", JUSTPATH( .c_Foxbin2prg_FullPath ) ) + I = ALINES( .a_SpecialProps_Opb, FILETOSTR( lcPropsFile ), 1+4 ) + + lcPropsFile = FORCEPATH( "props_projecthook.txt", JUSTPATH( .c_Foxbin2prg_FullPath ) ) + I = ALINES( .a_SpecialProps_Phk, FILETOSTR( lcPropsFile ), 1+4 ) + + lcPropsFile = FORCEPATH( "props_relation.txt", JUSTPATH( .c_Foxbin2prg_FullPath ) ) + I = ALINES( .a_SpecialProps_Rel, FILETOSTR( lcPropsFile ), 1+4 ) + + lcPropsFile = FORCEPATH( "props_reportlistener.txt", JUSTPATH( .c_Foxbin2prg_FullPath ) ) + I = ALINES( .a_SpecialProps_Rls, FILETOSTR( lcPropsFile ), 1+4 ) + + lcPropsFile = FORCEPATH( "props_separator.txt", JUSTPATH( .c_Foxbin2prg_FullPath ) ) + I = ALINES( .a_SpecialProps_Sep, FILETOSTR( lcPropsFile ), 1+4 ) + + lcPropsFile = FORCEPATH( "props_shape.txt", JUSTPATH( .c_Foxbin2prg_FullPath ) ) + I = ALINES( .a_SpecialProps_Shp, FILETOSTR( lcPropsFile ), 1+4 ) + + lcPropsFile = FORCEPATH( "props_spinner.txt", JUSTPATH( .c_Foxbin2prg_FullPath ) ) + I = ALINES( .a_SpecialProps_Spn, FILETOSTR( lcPropsFile ), 1+4 ) + + lcPropsFile = FORCEPATH( "props_textbox.txt", JUSTPATH( .c_Foxbin2prg_FullPath ) ) + I = ALINES( .a_SpecialProps_Txt, FILETOSTR( lcPropsFile ), 1+4 ) + + lcPropsFile = FORCEPATH( "props_timer.txt", JUSTPATH( .c_Foxbin2prg_FullPath ) ) + I = ALINES( .a_SpecialProps_Tmr, FILETOSTR( lcPropsFile ), 1+4 ) + + lcPropsFile = FORCEPATH( "props_toolbar.txt", JUSTPATH( .c_Foxbin2prg_FullPath ) ) + I = ALINES( .a_SpecialProps_Tbr, FILETOSTR( lcPropsFile ), 1+4 ) + + lcPropsFile = FORCEPATH( "props_xmladapter.txt", JUSTPATH( .c_Foxbin2prg_FullPath ) ) + I = ALINES( .a_SpecialProps_XMLAda, FILETOSTR( lcPropsFile ), 1+4 ) + + lcPropsFile = FORCEPATH( "props_xmladapter.txt", JUSTPATH( .c_Foxbin2prg_FullPath ) ) + I = ALINES( .a_SpecialProps_XMLAda, FILETOSTR( lcPropsFile ), 1+4 ) + + lcPropsFile = FORCEPATH( "props_xmlfield.txt", JUSTPATH( .c_Foxbin2prg_FullPath ) ) + I = ALINES( .a_SpecialProps_XMLFld, FILETOSTR( lcPropsFile ), 1+4 ) + + lcPropsFile = FORCEPATH( "props_xmltable.txt", JUSTPATH( .c_Foxbin2prg_FullPath ) ) + I = ALINES( .a_SpecialProps_XMLTbl, FILETOSTR( lcPropsFile ), 1+4 ) - - *-- DEMÁS CLASES - IF .F. - I = 0 - .SortSpecialProps_Add( 'FRXDataSession', @I ) && En un VCX lo ví primero de todo y también luego de Height ¿? - .SortSpecialProps_Add( 'ErasePage', @I ) && PageFrame: Debe estar antes que PageCount - .SortSpecialProps_Add( 'PageCount', @I ) && PageFrame: Debe estar antes que ActivePage - .SortSpecialProps_Add( 'ActivePage', @I ) && PageFrame: Debe estar antes que Top/Left/With/Height - .SortSpecialProps_Add( 'ButtonCount', @I ) - .SortSpecialProps_Add( 'ColumnCount', @I ) - .SortSpecialProps_Add( 'Value', @I ) - .SortSpecialProps_Add( 'Comment', @I ) - .SortSpecialProps_Add( 'ControlSource', @I ) - .SortSpecialProps_Add( 'DataSession', @I ) - .SortSpecialProps_Add( 'DeleteMark', @I ) - .SortSpecialProps_Add( 'ScaleMode', @I ) - .SortSpecialProps_Add( 'Tag', @I ) - .SortSpecialProps_Add( 'OLEDragMode', @I ) && Image: Debe estar antes que OLEDragPicture - .SortSpecialProps_Add( 'OLEDragPicture', @I ) && Image: Debe estar antes que OLEDropMode - .SortSpecialProps_Add( 'OLEDropMode', @I ) && Image: Debe estar antes que OLEDropEffects - .SortSpecialProps_Add( 'OLEDropEffects', @I ) && Image: Debe estar antes que DragMode - .SortSpecialProps_Add( 'DragMode', @I ) && Image: Debe estar antes que DragIcon - .SortSpecialProps_Add( 'DragIcon', @I ) && Image: Debe estar antes que Anchor - .SortSpecialProps_Add( 'Anchor', @I ) && Image: Debe estar antes que Picture - .SortSpecialProps_Add( 'DefTop', @I ) && Propiedad con evaluación: Debe estar antes que Top - .SortSpecialProps_Add( 'DefLeft', @I ) && Propiedad con evaluación: Debe estar antes que Left - .SortSpecialProps_Add( 'DefHeight', @I ) && Propiedad con evaluación: Debe estar antes que Height - .SortSpecialProps_Add( 'DefWidth', @I ) && Propiedad con evaluación: Debe estar antes que Width - .SortSpecialProps_Add( 'Picture', @I ) && Image: Debe estar antes que Stretch y después de DefTop/DefLeft - .SortSpecialProps_Add( 'Stretch', @I ) && Image: Debe estar antes que BackStyle - .SortSpecialProps_Add( 'BackStyle', @I ) && Image: Debe estar antes que BorderStyle - .SortSpecialProps_Add( 'BorderStyle', @I ) && - .SortSpecialProps_Add( 'BorderWidth', @I ) - .SortSpecialProps_Add( 'Enabled', @I ) - .SortSpecialProps_Add( 'Top', @I ) - .SortSpecialProps_Add( 'Left', @I ) - .SortSpecialProps_Add( 'Height', @I ) - .SortSpecialProps_Add( 'Width', @I ) - .SortSpecialProps_Add( 'MousePointer', @I ) - .SortSpecialProps_Add( 'MouseIcon', @I ) - .SortSpecialProps_Add( 'Visible', @I ) - .SortSpecialProps_Add( 'MaxLength', @I ) - .SortSpecialProps_Add( 'Alias', @I ) - .SortSpecialProps_Add( 'BufferModeOverride', @I ) - .SortSpecialProps_Add( 'Order', @I ) - .SortSpecialProps_Add( 'OrderDirection', @I ) - .SortSpecialProps_Add( 'CursorSource', @I ) - .SortSpecialProps_Add( 'Exclusive', @I ) - .SortSpecialProps_Add( 'Filter', @I ) - .SortSpecialProps_Add( 'Panel', @I ) - .SortSpecialProps_Add( 'ReadOnly', @I ) - .SortSpecialProps_Add( 'RecordSource', @I ) - .SortSpecialProps_Add( 'RecordSourceType', @I ) - .SortSpecialProps_Add( 'NoDataOnLoad', @I ) - .SortSpecialProps_Add( 'OpenViews', @I ) - .SortSpecialProps_Add( 'AutoOpenTables', @I ) - .SortSpecialProps_Add( 'AutoCloseTables', @I ) - .SortSpecialProps_Add( 'InitialSelectedAlias', @I ) - .SortSpecialProps_Add( 'DataSource', @I ) - .SortSpecialProps_Add( 'DataSourceType ', @I ) - .SortSpecialProps_Add( 'Desktop', @I ) - .SortSpecialProps_Add( 'ShowWindow', @I ) - .SortSpecialProps_Add( 'ScrollBars', @I ) - .SortSpecialProps_Add( 'ShowInTaskBar', @I ) - .SortSpecialProps_Add( 'DoCreate', @I ) - .SortSpecialProps_Add( 'Tag', @I ) - .SortSpecialProps_Add( 'ShowTips', @I ) - .SortSpecialProps_Add( 'BufferMode', @I ) - .SortSpecialProps_Add( 'AutoCenter', @I ) - .SortSpecialProps_Add( 'AutoSize', @I ) - .SortSpecialProps_Add( 'WordWrap', @I ) - .SortSpecialProps_Add( 'Caption', @I ) - .SortSpecialProps_Add( 'ControlBox', @I ) - .SortSpecialProps_Add( 'Closable', @I ) - .SortSpecialProps_Add( 'Curvature', @I ) - .SortSpecialProps_Add( 'FontBold', @I ) - .SortSpecialProps_Add( 'FontCondense', @I ) - .SortSpecialProps_Add( 'FontExtend', @I ) - .SortSpecialProps_Add( 'FontItalic', @I ) - .SortSpecialProps_Add( 'FontName', @I ) - .SortSpecialProps_Add( 'FontOutline', @I ) - .SortSpecialProps_Add( 'FontShadow', @I ) - .SortSpecialProps_Add( 'FontSize', @I ) - .SortSpecialProps_Add( 'FontStrikethru', @I ) - .SortSpecialProps_Add( 'FontUnderline', @I ) - .SortSpecialProps_Add( 'HalfHeightCaption', @I ) - .SortSpecialProps_Add( 'Margin', @I ) - .SortSpecialProps_Add( 'MaxButton', @I ) - .SortSpecialProps_Add( 'MinButton', @I ) - .SortSpecialProps_Add( 'Movable', @I ) - .SortSpecialProps_Add( 'MaxHeight', @I ) - .SortSpecialProps_Add( 'MaxWidth', @I ) - .SortSpecialProps_Add( 'MinHeight', @I ) - .SortSpecialProps_Add( 'MinWidth', @I ) - .SortSpecialProps_Add( 'MaxTop', @I ) - .SortSpecialProps_Add( 'MaxLeft', @I ) - .SortSpecialProps_Add( 'MDIForm', @I ) - .SortSpecialProps_Add( 'ClipControls', @I ) - .SortSpecialProps_Add( 'DrawMode', @I ) - .SortSpecialProps_Add( 'DrawStyle', @I ) - .SortSpecialProps_Add( 'DrawWidth', @I ) - .SortSpecialProps_Add( 'FillStyle', @I ) - .SortSpecialProps_Add( 'Icon', @I ) - .SortSpecialProps_Add( 'KeyPreview', @I ) - .SortSpecialProps_Add( 'TabIndex', @I ) - .SortSpecialProps_Add( 'TabStop', @I ) - .SortSpecialProps_Add( 'TitleBar', @I ) - .SortSpecialProps_Add( 'WindowType', @I ) - .SortSpecialProps_Add( 'WindowState', @I ) - .SortSpecialProps_Add( 'LockScreen', @I ) - .SortSpecialProps_Add( 'AlwaysOnTop', @I ) - .SortSpecialProps_Add( 'AlwaysOnBottom', @I ) - .SortSpecialProps_Add( 'SizeBox', @I ) - .SortSpecialProps_Add( 'SpecialEffect', @I ) - .SortSpecialProps_Add( 'ZoomBox', @I ) - .SortSpecialProps_Add( 'ZOrderSet', @I ) - .SortSpecialProps_Add( 'HelpContextID', @I ) - .SortSpecialProps_Add( 'WhatsThisHelpID', @I ) - .SortSpecialProps_Add( 'WhatsThisHelp', @I ) - .SortSpecialProps_Add( 'WhatsThisButton', @I ) - .SortSpecialProps_Add( 'RightToLeft', @I ) - .SortSpecialProps_Add( 'DefOleLCID', @I ) - .SortSpecialProps_Add( 'MacDesktop', @I ) - .SortSpecialProps_Add( 'ColorSource', @I ) - .SortSpecialProps_Add( 'ForeColor', @I ) - .SortSpecialProps_Add( 'DisableForeColor', @I ) - .SortSpecialProps_Add( 'BackColor', @I ) - .SortSpecialProps_Add( 'FillColor', @I ) - .SortSpecialProps_Add( 'HScrollSmallChange', @I ) - .SortSpecialProps_Add( 'VScrollSmallChange', @I ) - .SortSpecialProps_Add( 'ContinuousScroll', @I ) - .SortSpecialProps_Add( 'BindControls', @I ) - .SortSpecialProps_Add( 'AllowOutput', @I ) - .SortSpecialProps_Add( 'Dockable', @I ) - .SortSpecialProps_Add( '_memberdata', @I ) - .SortSpecialProps_Add( 'Themes', @I ) - *.SortSpecialProps_Add( 'Name', @I ) && System "Name" property - ENDIF - ENDWITH + ENDWITH CATCH TO loEx loEx.USERVALUE = 'lcPropsFile = ' + lcPropsFile diff --git a/props_all.txt b/props_all.txt index 82585a2..39dfde3 100644 --- a/props_all.txt +++ b/props_all.txt @@ -399,3 +399,4 @@ UseTransactions ADOCodePage CodePage UseCodePage +Name diff --git a/props_xmladapter.txt b/props_xmladapter.txt index 6e869f4..838ad5f 100644 --- a/props_xmladapter.txt +++ b/props_xmladapter.txt @@ -27,3 +27,27 @@ DeclareXMLPrefix CodePage UseCodePage Name +***XMLField******** +XSDtype +XSDtotalDigits +XSDfractionDigits +XSDmaxLength +IsAttribute +DataType +MaxLength +FractionDigits +NoCpTrans +Unicode +IsNull +IsBinary +IsBase64 +WrapInCDATA +DisableEncode +Keyfield +Name +***XMLTable******* +ChildTable +NestedInto +FirstNestedTable +NextSiblingTable +Name From 60f70293083c5e94b16009c8754cc32c4ddece6e Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Wed, 14 May 2014 21:16:38 +0200 Subject: [PATCH 05/20] =?UTF-8?q?Changeset:=20241=20fdbozzo=20-=2014/05/20?= =?UTF-8?q?14=2021:09:44:=20-=20Comentarios=20de=20versi=C3=B3n=20actualiz?= =?UTF-8?q?ados?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- foxbin2prg.prg | 48 +++++++++++++++++++++++++----------------------- 1 file changed, 25 insertions(+), 23 deletions(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 46fb3b7..33bcd4f 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -88,29 +88,31 @@ * *--------------------------------------------------------------------------------------------------- * -* 23/11/2013 Luis Martínez REPORTE BUG scx v1.4: En algunos forms solo se generaba el dataenvironment (arreglado en v.1.5) -* 27/11/2013 Fidel Charny REPORTE BUG vcx v1.5: Error en el guardado de ciertas propiedades de array (arreglado en v.1.6) -* 02/12/2013 Fidel Charny REPORTE BUG scx v1.6: Se pierden algunas propiedades y no muestra picture si "Name" no es la última (arreglado en v.1.7) -* 03/12/2013 Fidel Charny REPORTE BUG scx v1.7: Se siguen perdiendo algunas propiedades por implementación defectuosa del arreglo anterior (arreglado en v.1.8) -* 03/12/2013 Fidel Charny REPORTE BUG scx v1.8: Se siguen perdiendo algunas propiedades por implementación defectuosa de una mejora anterior (arreglado en v.1.9) -* 06/12/2013 Fidel Charny REPORTE BUG scx v1.9: Cuando hay métodos que tienen el mismo nombre, aparecen mezclados en objetos a los que no corresponden (arreglado en v.1.10) -* 07/12/2013 Edgar Kummers REPORTE BUG vcx v1.10: Cuando se parsea una clase con un _memberdata largo, se parsea mal y se corrompe el valor (arreglado en v.1.11) -* 08/12/2013 Fidel Charny REPORTE BUG frx v1.12: Cuando se convierten algunos reportes da "Error 1924, TOREG is not an object" (arreglado en v.1.13) -* 14/12/2013 Arturo Ramos REPORTE BUG scx v1.13: La regeneración de los forms (SCX) no respeta la propiedad AutoCenter, estando pero no funcionando. (arreglado en v.1.14) -* 14/12/2013 Fidel Charny REPORTE BUG scx v1.13: La regeneración de los forms (SCX) no regenera el último registro COMMENT (arreglado en v.1.14) -* 01/01/2014 Fidel Charny REPORTE BUG mnx v1.16: El menú no siempre respeta la posición original LOCATION y a veces se genera mal el MNX (se arregla en v1.17) -* 05/01/2014 Fidel Charny REPORTE BUG mnx v1.17: Se genera cláusula "DO" o llamada Command cuando no Procedure ni Command que llamar // Diferencia de Case en NAME (se arregla en v1.18) -* 20/02/2014 Ryan Harris PROPUESTA DE MEJORA v1.19.11: Centralizar los ZOrder de los controles en metadata de cabecera de la clase para minimizar diferencias -* 23/02/2014 Ryan Harris BUG cfg v1.19.12: Si se define NoTimestamp en FoxBin2Prg.cfg, se toma el valor opuesto (solucionado en v1.19.13) -* 27/02/2014 BUG REGRESION v1.19.13: Si no se define ExtraBackupLevels no se generan backups (solucionado en v1.19.14) -* 06/03/2014 Ryan Harris REPORTE BUG vcx/scx v1.19.15: Algunas propiedades no mantienen su visibilidad Hidden/Protected // Orden de properties defTop,defLeft,etc -* 10/03/2014 Ryan Harris REPORTE BUG frx/lbx v1.19.16: Las expresiones con comillas corrompen el fx2/lb2 // La propiedad Comment se pierde si es multilínea (solucionado en v1.19.17) -* 10/03/2014 Ryan Harris REPORTE BUG mnx v1.19.16: Al usar comentarios multilínea en las opciones, se corrompe el MN2 y el MNX regenerado (solucionado en v1.19.17) -* 20/03/2014 Arturo Ramos REPORTE BUG vcx/scx v1.19.17: Las imágenes no mantienen sus dimensiones programadas y asumen sus dimensiones reales (Solucionado en v1.19.18) -* 24/03/2014 Ryan Harris REPORTE BUG vcx/scx v1.19.17: El comentario a nivel de librería se pierde (Solucionado en v1.19.18) -* 29/04/2014 Matt Slay MEJORA v1.19.20: Posibilidad de convertir un proyecto entero a tx2 // Optimización de generación según timestamps (Agregado en v1.19.21) -* 30/04/2014 Jim Nelson MEJORA v1.19.20: Agregado de AGAIN en apertura de tablas (Agregado en v1.19.21) -* 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) +* 23/11/2013 Luis Martínez REPORTE BUG scx v1.4: En algunos forms solo se generaba el dataenvironment (arreglado en v.1.5) +* 27/11/2013 Fidel Charny REPORTE BUG vcx v1.5: Error en el guardado de ciertas propiedades de array (arreglado en v.1.6) +* 02/12/2013 Fidel Charny REPORTE BUG scx v1.6: Se pierden algunas propiedades y no muestra picture si "Name" no es la última (arreglado en v.1.7) +* 03/12/2013 Fidel Charny REPORTE BUG scx v1.7: Se siguen perdiendo algunas propiedades por implementación defectuosa del arreglo anterior (arreglado en v.1.8) +* 03/12/2013 Fidel Charny REPORTE BUG scx v1.8: Se siguen perdiendo algunas propiedades por implementación defectuosa de una mejora anterior (arreglado en v.1.9) +* 06/12/2013 Fidel Charny REPORTE BUG scx v1.9: Cuando hay métodos que tienen el mismo nombre, aparecen mezclados en objetos a los que no corresponden (arreglado en v.1.10) +* 07/12/2013 Edgar Kummers REPORTE BUG vcx v1.10: Cuando se parsea una clase con un _memberdata largo, se parsea mal y se corrompe el valor (arreglado en v.1.11) +* 08/12/2013 Fidel Charny REPORTE BUG frx v1.12: Cuando se convierten algunos reportes da "Error 1924, TOREG is not an object" (arreglado en v.1.13) +* 14/12/2013 Arturo Ramos REPORTE BUG scx v1.13: La regeneración de los forms (SCX) no respeta la propiedad AutoCenter, estando pero no funcionando. (arreglado en v.1.14) +* 14/12/2013 Fidel Charny REPORTE BUG scx v1.13: La regeneración de los forms (SCX) no regenera el último registro COMMENT (arreglado en v.1.14) +* 01/01/2014 Fidel Charny REPORTE BUG mnx v1.16: El menú no siempre respeta la posición original LOCATION y a veces se genera mal el MNX (se arregla en v1.17) +* 05/01/2014 Fidel Charny REPORTE BUG mnx v1.17: Se genera cláusula "DO" o llamada Command cuando no Procedure ni Command que llamar // Diferencia de Case en NAME (se arregla en v1.18) +* 20/02/2014 Ryan Harris PROPUESTA DE MEJORA v1.19.11: Centralizar los ZOrder de los controles en metadata de cabecera de la clase para minimizar diferencias +* 23/02/2014 Ryan Harris BUG cfg v1.19.12: Si se define NoTimestamp en FoxBin2Prg.cfg, se toma el valor opuesto (solucionado en v1.19.13) +* 27/02/2014 BUG REGRESION v1.19.13: Si no se define ExtraBackupLevels no se generan backups (solucionado en v1.19.14) +* 06/03/2014 Ryan Harris REPORTE BUG vcx/scx v1.19.15: Algunas propiedades no mantienen su visibilidad Hidden/Protected // Orden de properties defTop,defLeft,etc +* 10/03/2014 Ryan Harris REPORTE BUG frx/lbx v1.19.16: Las expresiones con comillas corrompen el fx2/lb2 // La propiedad Comment se pierde si es multilínea (solucionado en v1.19.17) +* 10/03/2014 Ryan Harris REPORTE BUG mnx v1.19.16: Al usar comentarios multilínea en las opciones, se corrompe el MN2 y el MNX regenerado (solucionado en v1.19.17) +* 20/03/2014 Arturo Ramos REPORTE BUG vcx/scx v1.19.17: Las imágenes no mantienen sus dimensiones programadas y asumen sus dimensiones reales (Solucionado en v1.19.18) +* 24/03/2014 Ryan Harris REPORTE BUG vcx/scx v1.19.17: El comentario a nivel de librería se pierde (Solucionado en v1.19.18) +* 29/04/2014 Matt Slay MEJORA v1.19.20: Posibilidad de convertir un proyecto entero a tx2 // Optimización de generación según timestamps (Agregado en v1.19.21) +* 30/04/2014 Jim Nelson MEJORA v1.19.20: Agregado de AGAIN en apertura de tablas (Agregado en v1.19.21) +* 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) * * *--------------------------------------------------------------------------------------------------- From 2622910bf83143a10f6948eda4a9266e3dfbf840 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Fri, 16 May 2014 16:48:48 +0200 Subject: [PATCH 06/20] Changeset: 242 fdbozzo - 15/05/2014 12:52:39: --- foxbin2prg.prg | 172 ++++++++++++++++++++++++++++--------------------- 1 file changed, 98 insertions(+), 74 deletions(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 33bcd4f..7ec9e3b 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -358,6 +358,7 @@ LOCAL lnResp, loEx AS EXCEPTION *ENDIF loCnv = CREATEOBJECT("c_foxbin2prg") + loEx = NULL lnResp = loCnv.ejecutar( tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDebug ; , '', NULL, @loEx, .F., tcOriginalFileName, tcRecompile, tcNoTimestamps ) @@ -369,19 +370,25 @@ ADDPROPERTY(_SCREEN, 'ExitCode', lnResp) SET COVERAGE TO -*-- Muy útil para procesos batch que capturan el código de error -IF _VFP.STARTMODE > 1 AND NOT EMPTY(lnResp) AND VARTYPE(loEx) = "O" - STORE NULL TO loEx, loCnv - RELEASE loEx, loCnv - DECLARE ExitProcess IN Win32API INTEGER ExitCode - ExitProcess(1) - QUIT -ELSE +IF _VFP.STARTMODE # 4 STORE NULL TO loEx, loCnv RELEASE loEx, loCnv RETURN lnResp ENDIF +IF EMPTY(lnResp) OR VARTYPE(loEx) # "O" + STORE NULL TO loEx, loCnv + RELEASE loEx, loCnv + QUIT +ENDIF + +STORE NULL TO loEx, loCnv +RELEASE loEx, loCnv + +*-- Muy útil para procesos batch que capturan el código de error +DECLARE ExitProcess IN Win32API INTEGER ExitCode +ExitProcess(1) && Esta debe ser de las últimas instrucciones +QUIT ******************************************************************************************************************* @@ -529,6 +536,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM THIS.c_CurDir = SYS(5) + CURDIR() THIS.o_FSO = NEWOBJECT("Scripting.FileSystemObject") ADDPROPERTY(_SCREEN, 'ExitCode', 0) + RETURN ENDPROC @@ -537,14 +545,19 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM LOCAL lcFileCDX lcFileCDX = FORCEPATH( "TABLABIN.CDX", JUSTPATH(THIS.c_InputFile) ) - IF FILE( lcFileCDX ) + *IF FILE( lcFileCDX ) ERASE ( lcFileCDX ) - ENDIF + *ENDIF THIS.writeLog_Flush() + CATCH + + FINALLY + THIS.o_FSO = NULL ENDTRY + RETURN ENDPROC @@ -564,71 +577,82 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM #DEFINE FILE_ATTRIBUTE_TEMPORARY 512 #DEFINE FILE_ATTRIBUTE_COMPRESSED 2048 - DECLARE SHORT SetFileAttributes IN kernel32 STRING tcFileName, INTEGER dwFileAttributes - DECLARE INTEGER GetFileAttributes IN kernel32 STRING tcFileName + TRY + LOCAL loEx as Exception, dwFileAttributes + DECLARE SHORT 'SetFileAttributes' IN kernel32 AS 'fb2p_SetFileAttributes' STRING tcFileName, INTEGER dwFileAttributes + DECLARE INTEGER 'GetFileAttributes' IN kernel32 AS 'fb2p_GetFileAttributes' STRING tcFileName - * read current attributes for this file - dwFileAttributes = GetFileAttributes(tcFileName) + * read current attributes for this file + dwFileAttributes = fb2p_GetFileAttributes(tcFileName) - IF dwFileAttributes = -1 - * the file does not exist - RETURN - ENDIF - - IF dwFileAttributes > 0 - IF '+R' $ tcAttrib - dwFileAttributes = BITOR(dwFileAttributes, FILE_ATTRIBUTE_READONLY) - ENDIF - IF '+A' $ tcAttrib - dwFileAttributes = BITOR(dwFileAttributes, FILE_ATTRIBUTE_ARCHIVE) - ENDIF - IF '+S' $ tcAttrib - dwFileAttributes = BITOR(dwFileAttributes, FILE_ATTRIBUTE_SYSTEM) - ENDIF - IF '+H' $ tcAttrib - dwFileAttributes = BITOR(dwFileAttributes, FILE_ATTRIBUTE_HIDDEN) - ENDIF - IF '+D' $ tcAttrib - dwFileAttributes = BITOR(dwFileAttributes, FILE_ATTRIBUTE_DIRECTORY) - ENDIF - IF '+N' $ tcAttrib - dwFileAttributes = BITOR(dwFileAttributes, FILE_ATTRIBUTE_NORMAL) - ENDIF - IF '+T' $ tcAttrib - dwFileAttributes = BITOR(dwFileAttributes, FILE_ATTRIBUTE_TEMPORARY) - ENDIF - IF '+C' $ tcAttrib - dwFileAttributes = BITOR(dwFileAttributes, FILE_ATTRIBUTE_COMPRESSED) + IF dwFileAttributes = -1 + * the file does not exist + EXIT ENDIF - IF '-R' $ tcAttrib AND BITAND(dwFileAttributes, FILE_ATTRIBUTE_READONLY) = FILE_ATTRIBUTE_READONLY - dwFileAttributes = dwFileAttributes - FILE_ATTRIBUTE_READONLY - ENDIF - IF '-A' $ tcAttrib AND BITAND(dwFileAttributes, FILE_ATTRIBUTE_ARCHIVE) = FILE_ATTRIBUTE_ARCHIVE - dwFileAttributes = dwFileAttributes - FILE_ATTRIBUTE_ARCHIVE - ENDIF - IF '-S' $ tcAttrib AND BITAND(dwFileAttributes, FILE_ATTRIBUTE_SYSTEM) = FILE_ATTRIBUTE_SYSTEM - dwFileAttributes = dwFileAttributes - FILE_ATTRIBUTE_SYSTEM - ENDIF - IF '-H' $ tcAttrib AND BITAND(dwFileAttributes, FILE_ATTRIBUTE_HIDDEN) = FILE_ATTRIBUTE_HIDDEN - dwFileAttributes = dwFileAttributes - FILE_ATTRIBUTE_HIDDEN - ENDIF - IF '-D' $ tcAttrib AND BITAND(dwFileAttributes, FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY - dwFileAttributes = dwFileAttributes - FILE_ATTRIBUTE_DIRECTORY - ENDIF - IF '-N' $ tcAttrib AND BITAND(dwFileAttributes, FILE_ATTRIBUTE_NORMAL) = FILE_ATTRIBUTE_NORMAL - dwFileAttributes = dwFileAttributes - FILE_ATTRIBUTE_NORMAL - ENDIF - IF '-T' $ tcAttrib AND BITAND(dwFileAttributes, FILE_ATTRIBUTE_TEMPORARY) = FILE_ATTRIBUTE_TEMPORARY - dwFileAttributes = dwFileAttributes - FILE_ATTRIBUTE_TEMPORARY - ENDIF - IF '-C' $ tcAttrib AND BITAND(dwFileAttributes, FILE_ATTRIBUTE_COMPRESSED) = FILE_ATTRIBUTE_COMPRESSED - dwFileAttributes = dwFileAttributes - FILE_ATTRIBUTE_COMPRESSED - ENDIF + IF dwFileAttributes > 0 + IF '+R' $ tcAttrib + dwFileAttributes = BITOR(dwFileAttributes, FILE_ATTRIBUTE_READONLY) + ENDIF + IF '+A' $ tcAttrib + dwFileAttributes = BITOR(dwFileAttributes, FILE_ATTRIBUTE_ARCHIVE) + ENDIF + IF '+S' $ tcAttrib + dwFileAttributes = BITOR(dwFileAttributes, FILE_ATTRIBUTE_SYSTEM) + ENDIF + IF '+H' $ tcAttrib + dwFileAttributes = BITOR(dwFileAttributes, FILE_ATTRIBUTE_HIDDEN) + ENDIF + IF '+D' $ tcAttrib + dwFileAttributes = BITOR(dwFileAttributes, FILE_ATTRIBUTE_DIRECTORY) + ENDIF + IF '+N' $ tcAttrib + dwFileAttributes = BITOR(dwFileAttributes, FILE_ATTRIBUTE_NORMAL) + ENDIF + IF '+T' $ tcAttrib + dwFileAttributes = BITOR(dwFileAttributes, FILE_ATTRIBUTE_TEMPORARY) + ENDIF + IF '+C' $ tcAttrib + dwFileAttributes = BITOR(dwFileAttributes, FILE_ATTRIBUTE_COMPRESSED) + ENDIF - * setting selected attributes - =SetFileAttributes(tcFileName, dwFileAttributes) - ENDIF + IF '-R' $ tcAttrib AND BITAND(dwFileAttributes, FILE_ATTRIBUTE_READONLY) = FILE_ATTRIBUTE_READONLY + dwFileAttributes = dwFileAttributes - FILE_ATTRIBUTE_READONLY + ENDIF + IF '-A' $ tcAttrib AND BITAND(dwFileAttributes, FILE_ATTRIBUTE_ARCHIVE) = FILE_ATTRIBUTE_ARCHIVE + dwFileAttributes = dwFileAttributes - FILE_ATTRIBUTE_ARCHIVE + ENDIF + IF '-S' $ tcAttrib AND BITAND(dwFileAttributes, FILE_ATTRIBUTE_SYSTEM) = FILE_ATTRIBUTE_SYSTEM + dwFileAttributes = dwFileAttributes - FILE_ATTRIBUTE_SYSTEM + ENDIF + IF '-H' $ tcAttrib AND BITAND(dwFileAttributes, FILE_ATTRIBUTE_HIDDEN) = FILE_ATTRIBUTE_HIDDEN + dwFileAttributes = dwFileAttributes - FILE_ATTRIBUTE_HIDDEN + ENDIF + IF '-D' $ tcAttrib AND BITAND(dwFileAttributes, FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY + dwFileAttributes = dwFileAttributes - FILE_ATTRIBUTE_DIRECTORY + ENDIF + IF '-N' $ tcAttrib AND BITAND(dwFileAttributes, FILE_ATTRIBUTE_NORMAL) = FILE_ATTRIBUTE_NORMAL + dwFileAttributes = dwFileAttributes - FILE_ATTRIBUTE_NORMAL + ENDIF + IF '-T' $ tcAttrib AND BITAND(dwFileAttributes, FILE_ATTRIBUTE_TEMPORARY) = FILE_ATTRIBUTE_TEMPORARY + dwFileAttributes = dwFileAttributes - FILE_ATTRIBUTE_TEMPORARY + ENDIF + IF '-C' $ tcAttrib AND BITAND(dwFileAttributes, FILE_ATTRIBUTE_COMPRESSED) = FILE_ATTRIBUTE_COMPRESSED + dwFileAttributes = dwFileAttributes - FILE_ATTRIBUTE_COMPRESSED + ENDIF + + * setting selected attributes + =fb2p_SetFileAttributes(tcFileName, dwFileAttributes) + ENDIF + + CATCH TO loEx + THROW + + FINALLY + CLEAR DLLS 'fb2p_SetFileAttributes', 'fb2p_GetFileAttributes' + ENDTRY + + RETURN ENDPROC @@ -760,7 +784,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM WITH THIS AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' IF NOT .l_ConfigEvaluated - lcConfigFile = THIS.c_Foxbin2prg_ConfigFile + lcConfigFile = .c_Foxbin2prg_ConfigFile llExisteConfig = FILE( lcConfigFile ) IF llExisteConfig @@ -1900,8 +1924,8 @@ DEFINE CLASS c_conversor_base AS SESSION PROCEDURE DESTROY C_FB2PRG_CODE = '' USE IN (SELECT("TABLABIN")) - THIS.writeLog( C_CONVERTER_UNLOAD_LOC ) + THIS.oFSO = NULL ENDPROC @@ -2146,7 +2170,7 @@ DEFINE CLASS c_conversor_base AS SESSION ENDCASE RETURN tcValue - ENDFUNC + ENDPROC ******************************************************************************************************************* @@ -2300,7 +2324,7 @@ DEFINE CLASS c_conversor_base AS SESSION ENDTRY RETURN lcTimeStamp_Ret - ENDPROC + ENDFUNC PROCEDURE get_SeparatedLineAndComment From b81259a576d09cb681d75ebece576330b5bb81a5 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Fri, 16 May 2014 17:00:53 +0200 Subject: [PATCH 07/20] Changeset: 243 fdbozzo - 16/05/2014 16:55:41: --- TESTS/DATOS_READONLY/FB2P_DBC.DC2 | 2 +- TESTS/DATOS_READONLY/FB2P_DBF.DB2 | 2 +- TESTS/DATOS_READONLY/FB2P_FREE.DB2 | 6 +-- TESTS/DATOS_READONLY/fb2p_foxuser.lb2 | 46 +++++++++++----- TESTS/DATOS_READONLY/fb2p_test.pj2 | 54 +++++++++++++++---- .../fb2p_test_bug_estructural.vc2 | 10 ++-- .../fb2p_test_bug_metodo_movido.vc2 | 8 +-- TESTS/DATOS_READONLY/form1.sc2 | 39 +++++++++----- TESTS/DATOS_READONLY/menu1.mn2 | 4 +- TESTS/DATOS_READONLY/menu2.mn2 | 4 +- TESTS/DATOS_READONLY/menu3.mn2 | 8 +-- 11 files changed, 128 insertions(+), 55 deletions(-) diff --git a/TESTS/DATOS_READONLY/FB2P_DBC.DC2 b/TESTS/DATOS_READONLY/FB2P_DBC.DC2 index 2179979..4957365 100644 --- a/TESTS/DATOS_READONLY/FB2P_DBC.DC2 +++ b/TESTS/DATOS_READONLY/FB2P_DBC.DC2 @@ -2,7 +2,7 @@ * (ES) AUTOGENERADO - ¡¡ATENCIÓN!! - ¡¡NO PENSADO PARA EJECUTAR!! USAR SOLAMENTE PARA INTEGRAR CAMBIOS Y ALMACENAR CON HERRAMIENTAS SCM!! * (EN) AUTOGENERATED - ATTENTION!! - NOT INTENDED FOR EXECUTION!! USE ONLY FOR MERGING CHANGES AND STORING WITH SCM TOOLS!! *-------------------------------------------------------------------------------------------------------------------------------------------------------- -*< FOXBIN2PRG: Version="1.19" SourceFile="C:\DESA\foxbin2prg\TESTS\DATOS_READONLY\fb2p_dbc.dbc" /> (Solo para binarios VFP 9 / Only for VFP 9 binaries) +*< FOXBIN2PRG: Version="1.19" SourceFile="fb2p_dbc.dbc" /> (Solo para binarios VFP 9 / Only for VFP 9 binaries) * diff --git a/TESTS/DATOS_READONLY/FB2P_DBF.DB2 b/TESTS/DATOS_READONLY/FB2P_DBF.DB2 index 430ebe6..48af5b3 100644 --- a/TESTS/DATOS_READONLY/FB2P_DBF.DB2 +++ b/TESTS/DATOS_READONLY/FB2P_DBF.DB2 @@ -117,7 +117,7 @@ - C:\DESA\FOXBIN2PRG\TESTS\DATOS_READONLY\FB2P_DBF.CDX + FB2P_DBF.CDX diff --git a/TESTS/DATOS_READONLY/FB2P_FREE.DB2 b/TESTS/DATOS_READONLY/FB2P_FREE.DB2 index 8348722..df554e5 100644 --- a/TESTS/DATOS_READONLY/FB2P_FREE.DB2 +++ b/TESTS/DATOS_READONLY/FB2P_FREE.DB2 @@ -2,13 +2,13 @@ * (ES) AUTOGENERADO - ¡¡ATENCIÓN!! - ¡¡NO PENSADO PARA EJECUTAR!! USAR SOLAMENTE PARA INTEGRAR CAMBIOS Y ALMACENAR CON HERRAMIENTAS SCM!! * (EN) AUTOGENERATED - ATTENTION!! - NOT INTENDED FOR EXECUTION!! USE ONLY FOR MERGING CHANGES AND STORING WITH SCM TOOLS!! *-------------------------------------------------------------------------------------------------------------------------------------------------------- -*< FOXBIN2PRG: Version="1.18" SourceFile="C:\DESA\foxbin2prg\TESTS\DATOS_READONLY\fb2p_free.dbf" Generated="2014/01/08 00:49:45" /> (Solo para binarios VFP 9 / Only for VFP 9 binaries) +*< FOXBIN2PRG: Version="1.19" SourceFile="fb2p_free.dbf" /> (Solo para binarios VFP 9 / Only for VFP 9 binaries) * 1252 - 2013/12/11 + 2013/12/120x00000032Visual FoxPro, Varchar, Varbinary, or Blob-enabled @@ -377,7 +377,7 @@ - C:\DESA\FOXBIN2PRG\TESTS\DATOS_READONLY\FB2P_FREE.CDX + FB2P_FREE.CDX diff --git a/TESTS/DATOS_READONLY/fb2p_foxuser.lb2 b/TESTS/DATOS_READONLY/fb2p_foxuser.lb2 index 0d71c2d..fcbd7d8 100644 --- a/TESTS/DATOS_READONLY/fb2p_foxuser.lb2 +++ b/TESTS/DATOS_READONLY/fb2p_foxuser.lb2 @@ -2,100 +2,118 @@ * (ES) AUTOGENERADO - ¡¡ATENCIÓN!! - ¡¡NO PENSADO PARA EJECUTAR!! USAR SOLAMENTE PARA INTEGRAR CAMBIOS Y ALMACENAR CON HERRAMIENTAS SCM!! * (EN) AUTOGENERATED - ATTENTION!! - NOT INTENDED FOR EXECUTION!! USE ONLY FOR MERGING CHANGES AND STORING WITH SCM TOOLS!! *-------------------------------------------------------------------------------------------------------------------------------------------------------- -*< FOXBIN2PRG: Version="1.19" SourceFile="C:\DESA\foxbin2prg\TESTS\DATOS_READONLY\fb2p_foxuser.lbx" /> (Solo para binarios VFP 9 / Only for VFP 9 binaries) +*< FOXBIN2PRG: Version="1.19" SourceFile="fb2p_foxuser.lbx" /> (Solo para binarios VFP 9 / Only for VFP 9 binaries) * + platform="WINDOWS " uniqueid="" timestamp="0" objtype="1" objcode="53" name="" vpos="2.000" hpos="2750.000" height="1000.000" width="40000.000" order="" unique=".F." environ=".T." boxchar=" " fillchar=" " pengreen="0" penblue="0" fillred="0" fillgreen="0" fillblue="0" pensize="0" penpat="0" fillpat="0" fontface="Courier New" fontstyle="0" fontsize="10" mode="0" ruler="1" rulerlines="1" grid=".T." gridv="12" gridh="12" float=".F." stretch=".F." stretchtop=".F." top=".T." bottom=".T." suptype="0" suprest="0" norepeat=".F." resetrpt="0" pagebreak=".F." colbreak=".F." resetpage=".F." general="0" spacing="0" double=".F." swapheader=".F." swapfooter=".F." ejectbefor=".F." ejectafter=".F." plain=".F." summary=".F." addalias=".T." offset="0" topmargin="0" botmargin="0" totaltype="0" resettotal="0" resoid="0" curpos=".F." supalways=".F." supovflow=".F." suprpcol="0" supgroup="0" supvalchng=".F."

    #|wP`t?L8mA7xy+CM8i-m?=Vkm`#ur zc{U5$zd3tU8glKPG9)V5St-JVYK}EyQZpuyYziojh#~4$ z857ACp(i>yxg1T4^0+jC{&!SN7Ko;jG8W-RIg+msDujVQlQajZYbVVrWs3?7ST+_`p-3$VnlObp&$YVijkMU)@hw*U*_~z(@EE~7H z2IDJZLoDR842Fws%W7^pqSDWZTaMzi=8;9tV0n7v5uKO>MWIxY(Bg8%#Yua&2z4AO zM0w;GVoGD&l06S@%1~N}GtRsCjy054fHaN)q~b}FaNnDebS<`!iN&-KL7W>cWlF+U zfFX{d<)2k#@`?ha5F3nc<9QaOvErnHbZ`tX|EnTkZjbs!f0AjTr;^-n3_dl_8~Z#) zTmd$7%NtzwR2uNj%bW3maK(AvC~j&_mqlP9SCak(pUDzTWktQIbgpV~x@`kCZHrGRvV_C#9Blx{=X%Eu8CBL13cpo zuVp@_&j94|cbJp_kL0Y3exONs6-Js*l2$Tju{up9`E(%cezd;>IGGj^|7eq}RlwZK z+P9DW1XH27&zy-!)Xx9+JWVCeSNVHO>iH_475yqx_IxdI3QGf!Bn*wSWbJC2ZW=V5 z0SgjadY|Fa8LiDGJ|&(~D83wss#9Oa z4P|)|HZDqQ)-2zY@RNv%P-?<+by`gE{b6*QofJ%E3KNxV2a^aR{*@+;0}lxaAX zu&UE=-ZCK>&VVYV;Ut@u`%OUBX*l5{b6(kkN@F|HqTG!Bx?HE|tUfoRatbL#)tEVx zq|{sueEt%1?;cpEwkxSYs8`D@j8X~GN#ChdfXWtPh06+$Aweh!{a}`4O>9Ec+|4w& z8_B*^n7hegDJ`XkY9bW?t>6wUV9yZM! zCIMF>U8ovdb-K_DVP!URehYb=u)1yTM@knu3BD4kMAi7JQ;FgiSL{y#p`I`~3(oW2*FysN}XnsZr=P0=iR0 zPGBzvHi7U0q)u)DTb(?6eCR_2q5R7qql5B~T%`cfS7ijzq_zZssUoTOa)WBD@nD9; zjTq^vVTRiZqIzvP0|T=#6K2oSplSqwie%%<4oV;Eoy7fG9A7QZMmwXSxoj`fTcbW%<~HZ`s>>u0tNL3cleOnmGPO zV2Fp{#4uDzBX}r;ZaUnih5jpf_MYPab(Jt;C*Vrb_mmI6thth^b0sRex(IdB#!XZn^|hu>;?zlO7e4`Yl0IeUy|V1$6VwSo zkI(|@*cs>4MW(0GZ7eQy26oS}+}-nYyBARUCt)j~6}?NF#AY#j88;o6?dA&mgG9TI z>+%E575K-=CSExuCPf1CBuq*=lIQ+Y79>x^q^RU?0b(V$_^lkVA_3}IZz5ua$IQgc z34bahrm~FWV~J##+bW0^;aPHHY@CG(WjvKy-pKEvu!DpO6PrBK^9yln!o)E$!Xm}P zWMUAi5xqQX-V+9f}pN=Ca(92O(+#3N&3c>4E!5=li^nDz!RCwX=qV?|O4 zSeS_;VFaXjFiaFu^Yc}NR4Ae}SQwRvDv|@OjVb!4g|9M@G7|^CEbztDX!6X)dnc#X zko!E9Q#HRSHEK38tK=ljbi!REmL`4E_oy@q`aNZ7RD!iqqzzR%YtlyLiBdA4XN=n@49NdM7 z+tPAt!~8G$CUbVu0*{^rByh0Vlof5ls>9Dzg^@Y`SFYDF)8l+_C`RWVGq)}R}_wUJwg4PJx> z_dM4HgSg}M*}GM?cp-7>H{rfvrJ~JEjuNSDCd6?_ZIkX1Hg0Rv2Xp<(QgdZ#ePwBN gWyxs6pRuxJZmcY|pnf4d0c!9B{4?Po{^1G#2Q70Fd;kCd literal 0 HcmV?d00001 diff --git a/TESTS/DATOS_READONLY/f_form_controles.scx b/TESTS/DATOS_READONLY/f_form_controles.scx new file mode 100644 index 0000000000000000000000000000000000000000..0aa5edcc0def4c3d19758ee76e7c1c649e32c2f8 GIT binary patch literal 10080 zcmeI2dvH|M9mjuSg2=0_Qi_i<0UHGo+)Xx*Eo$8)8?$k5He@#@VMsIJ#F|d9L(uZD z)?ks!XshMbLYamk4#G4(sDlnDv=$#=E3HLjv_J>T*b3UIeTa-RZ9jL+Me5^`RCS`kp;CDshY^{lNMl`W zR%0|)<<>9cFtT4g6?3A=RK%$lsk=B!y)qt2y8g)dGKakMKfOb`9#2%d^+{Rk6_I3A z_izfc)Dso8brC1(Hgu+Dsn_FXCdCP6ucxAwsVEn~DalfI zqN$ohReFR@I7^-1uQE}ke!uI}^~@`fh^K2*#EE44`FOO*Eu!=&Gk;p7A)1Uf+!C$g zcXwi(bgnv09QP)lt6off)&TVo^~M3}TpOolfO;wQ)&c5e)aMRRFQ?v~rQXQ!NxO17 zIP@Rim~`p0LqTQ2arh(@Bya6%Z@;4;LxZ|J!~Xx-1x>NKszg(=peTBP#OwO&<(C7R_lMa4$$-$y7t^T&dD?j&8i3`J+l}2p+CSWIISBDXWFxsY1ZJH z1;XJ_amfiiIetj|4~!lqav9jlG)s>Rv(n-~&sf#AkGK zb`u|h^{`dva%1Kj*=z3i2zs0N7x*{ijZ-wOmcy z1W&+jog2DYNo{kq+#Q*E8n;eVEq4-Mg(GlE=Z0=p+LUZ*)|as?SbEHTD?z7-AH(p; zB2&RunNOo@*5ci>u0qxJUgATr0e0)0jiG5a+cTRqMYWtx3_~?^=v+?BW(Pd8)YYox zT;d(@9q7@y+?WMDv&Gk_miH4^!6w+NbGb1q^31l)P%WP!?uFOkUpki?vtrNeXh5|* zNjwetL6Iq7E8_u~9rDa37OS??h~-cX9Xe-YXquI1Gd^cY_w5?ZBQAht@TktI%HWQs zS*d6C-LI-<4-$U@TVTJ=4bDcLZJL#NmvQn9>ZEIl*Fi1J*SXx7rRT;#dLll4qiXp9 z@eB-)FkOMI%#nq?k$uHowxJ;L28hGAbWT+UcQnl+o>_BLHESn!K{xd3+~91~*``^A zXSV((b;0Q;_%x=#=#X}t9}m%_slngT>VYewv1Q>NtmZ|Hio8|Zw6`Y zR4qG+cf*6QLFaN~7IPncwXj&efY$-o4!?%O@GjUYb7Z{h&#v}nkd8Y=mcT0Lfyd$Z zU@Oz?ChtRi$zrA`sDK2tLO0mTG^_EBN04`)$W>q~(=6_peSWz} z0feC%Qm_bYWt#c+LFTUzxd+xkFKmZ5z*eT&r~4qhgY0>L%Lwnm$1q~0$TYB(Y36$^ z$p4|p7hwj>gcx*!txPlDH}y+D;;RMz2A{x%t3<8=TbX9Fya!~{8j&YqAG`s_A#bg% z6%Sj+95dCt(j92V0qD zP1=kP^^wgy_HaS3$auICVqh!N%(n$typ<;q=0FE5g_U3{)6BO8c=+e+dV}3!kSs)I%F|!7{LwY3ADkY__HfX`nD=}A z`t`?drSiiME0xLud|v$f|I`3-f8|c+ptsZAUwM0FWu;NQejV~K|J7lT2VrtQ%F<*M zCi$G~O|SGH+vx}kL*-YmE-&?i6M9O=@Kmo~UtZb`j}fmeFWrrX`6)cMFnc?UPEHZ1 zUx!q8942?7@WBK!Ah|xxQ_SiIM{$UG)qYjxw&QdX+Sxlvlt)3_3*&H*hr{(a3a|)v z2z%X2r`aIHI`(hx?m{&>vwuED044W>k$8086A-1C%Y$h)Ni%P1u`RF~>CmY}W-nZt zqbx&LrhaZhf;5NE#ruWHU>Z*HU;>@om>wU8*}u3^VnL;(0U5 zKub}YKqgcsJ6@=$sIoddI$mDtoDJgXB)TuOw*{)(isHPe?;s3@-6TGTnyLuyr}*C8 zWH$|lMV?ZtQjk{XLR~4Vcvw76v(Y3ZLv)i{7Wz<-7)~bgP3rI_j3sK#$TvpQIsj7% zCgQEouI@yW2i!7U@x8O7Eq#n zKG1Do#%?;eM{N!cbD%Pj+ETB2*oQ1_nJQPS@Ta#9y6w*9?SszBL3o^nlT)zmZs$&C zzu#Ng>K?Q^Fe0~idhoc{>-4Llg4No!s&4G%w^vLF4KO7SI$H;w-uCLXLghl`cBOIykPm+Q z$u}$ge^x4gUZ_0$&%(mT7ykWH<;p|IfWIGq@>=ER58G|Xml7XcfIKLBvGUc5@phLg zLJ>=q_F=!%>+i4cbrvh?h2TMIa82~!(W6@ByOm!rtPA5bIt7o|_iw=GC+fL!4Ic1? zJ^xVl6;r8@#=OhNheu$4D)sd^IyxMrNuH(P?5g(%X9~D@3^uQx7q>(aaxsg_8YFu8 zQEw2$Ar5~qs0Nrpc-$8rSUf5ZES?LuD^lcFfNmka+5~2m_-Y-V3-Q%v9Wg4fdZTs| zlAGb=UM@-s570YJAIQNX$3brZuM}?tnR4rh?|@UE+=Dza{mrzUg+X2nKW-p*cRQO| zaH3ukMw!aE6%F!fCW=?zt5)ArKst6L({TrUPWNUV1nfd4WJ_M-Pu;)X2J%d_ZSn4e}-Q|31G zDRZl8p9WbkR9xW`w1cslLPX#8g0qcjo{Kp}c+kBlaWc~Trc$6lVOZaRSqjo* zSRxrEHXJ1u9GppORYjG(iqz%~4h(uP;e&6bkzy5WM&#_kU_%jQE{^+e$I)2vDvSfC z1Tee@%A9IAydX(d0F`2rItXtAlVnUNBs&Sdx}X-TavFa(JinEN_aXG5PD60B16-g* zL1{?!)Cj}U{V0z^Id}kcCnlNh<#IGZ&v1%?K^TVOeTA9F4}$YaH<20?^sTF`jTAU6 zbcZ&h>>A5`KTStQayyKLlESlmXA^n~ZQVT$@=5i_JV=-InZc3jnk|MUz%v(Stv5GQ)}=aVxwSikFshv>uc&Gi6TJB zZcCTd8wGI;#-E(vxT!%UcQ^n|B}%3++e-<2N5Rx-IMSi(2E-JuQLV>u`T)l7ScDCt z&?fMu1`4#PXAY=TIea%Lkh20fgU&F@YgLa5B|yGIq(FQ(I11y2PhKHZKqjFC`sE-Q z)_r9Pj7m`kwdC!YsJd3AGBQaeyzK~)x?Q3UC1}DtfymeM{K`o->`=6<@K=>WtJcK& zT6HfR9fest4knY`=qL*^5#LtdJ3gBp;zXSu{V2@S$>I6o@iZAg_!&+PhvDHQ9j93y zR>#>1co|&>Fn4tjAA*@pM~ToPKD5)RSTwcxxb?HmZuU%xDaY^l=A|#ijPqD?qctzB zCxg=z!wDENPagP)QMf)F?rRS$vbG^Yhq*p_KT2>>D~6{44$=p9Zu>Nfhvq_S6P6cw zxEEwac<;;s?|_-^!mO=A5lR|!h-|%>1#54ap;+zB>moFJOc%TjZZ%emZSfjK2D}Qr znwf`PGx|dDU=v#f?A~55(W}76n`3VUNf<+0Fe8XZtcIG#wUD`vJO~F6XPN4gIfa|Q zS}apxK$)0YqCq3D!V54&3F6M#m=?hBx|T+z!&c!bhJ@od%8kerC(`KzGWsyhL2u<2 zM=?9US)QHKG=`Yc6qjLj17qnsK|ICj1ZNXD--{<_?J2iNR_pZ}P~=vS<*>OytMxgP zTfNmi`FKmIMxJuMS+WSSYwa zY0cmWl$H+;4#AJL=5b(q`Qw0=w>L29BtP3!?XM08`yf7)4cKhL_S=crFa;T00cv~L zfJwaw^NoCI6Es19bFwh8?ANYsoTZ~QPcyqw*gnf(ZK@(j>>c`;nl0o^GDa)p%-_Oz zLw9)3UX>ZhK{$!tH&<*HX1i+x>WyKkFV>c@m7G zf$3+^4I6bU3De7P62(%S7bpfEFG9nQ>4v!`=PSYG74pbdQjF6XBIcmv#mu4UmojbI zFHtr?Z^w5MSj<3pfOET35%4n#Xcjf-n_a|R%NYetld$F|L#AJvkPXl`y&G^juyH{r zq&8qO5uIhKs}5VSg(-^3rjV0RVT3-A>MnVIS(fwu5-qICSF^H7*d}uNQ{FLh1WXh2 z)y#T-*(=8TOVIEA>s8L(!NSoAD2>i?jtHA7Z5$Zo<{O({mFi+9=?$KA2{EKgkR@Hh z9O)8eNLOHa%2$BtU2IaN08hHaS<)rUkgm#_8;^xT8!YLtlfjYRsB)xZQ#|R7>U`20 z#a4vwqe*&`CtX4e=@Mi~moP`VL>bZ*SSDQoJn2$^Ctcz!=@Mp0S7p7VH(An~Jn2oA zbZm+zz4;iVH_N0qP10LD=@Mc{mmo{JggMeB%8;(WGU*E7NtXgV=@Ms2moP)RD(fY^ z#gg9QNpG>FV^ciot;Zm}RVKX!q^r%uZ|kF2yp6EDl*2xF6_1o)9qK(Tt^B4qEydGM z{P_R<{ZDjS+EoGr_#Ai-S2Mg^e#!Ux7C1(>Veif|)POxu2mQ@rDW1Q$>7 z#L?L&!0K)PfjL%8XmSn|>%+;b#$wte&T}qQZ(d(hAJ}y(ohaXh4avJ%fOnciBvf8k z_!bl86@>5jkt{<~t^JB^4R&f#?oK?RVbHakcQ|_WxH1$8_lc4Lbc_0`n${h4M!b{! zG!B3|`m6aJ{nC$en>ai5>1b>ycLB%U^W39BBU}=Rj-zKxBz5%#k@^f$&vQ*hXNXZ0|}lvaRf=kBr(^XA2B##y~Qv3s6Q-r?XK&*7i#xqIU}Y{oab~t5!amX%KG{%`aEONlijf~I#kewVd%!AVD)~afWQQk{a zr|%|iFI;^!(88rSH1X8pENp$%IQwg!N{r=`4=wMsd8A6t*4Gu+`TAsRXY7-(7SgT& zDNV2TNJ8vlu+(VOPmIQ?1(y~r!H}W_{FE5D-t|x%3hhinyY0 z^*OHD#(h-V64Z`Oxh>F&kbK60`F^uNglcmQ0x`xE5b_&=KuYwBT$Xr5S;`UQ z$VSXhvnW+|&2_lj$+_n8#S`JpJ-1F&K11~klIPM(R7ls1Ux1KLjXAE_#(h-V64Z`O zxh>&7@<$YbMk?UI}DJEeXsSyCg;w ziryOI7adaBHOo6uezU+5RGVuMh%u&sklzRdQlekvvcx0GQjQ=;He!C7MX9oDZp?7a z1$*v>seFd&86?l8m#9z(GCotWB|JVs3y{)W*W8@xnoZPCjCM)Xf=i2*U`Wvdeo73yM2La0bZ8lt z3@yS@p(Xr8XxvMKguSkrbnJJ{gnGv-f$XRyfjMKB#E3%CTVwp9Ln^ywd2`Wk7FdF6 za}5G9#uO0p8-YMd^ov}Uctlys5#-25%ull@Rd&tI8Lqi}iBq^>&katM&rm&s#oF!9f|5u%#H&u!a04V$1kU#g_2+ z1T8>Hb6s<5rfW7)KQY=RQ420DT7n@(3-~E9@Dd>g#?ql>STeK-M}?N~6QOZ04HEXc zX40|WH52L`uLQEAmIUUET@oV-MQ;n&EbkGQU9-&hn+3Wss?9YB#28aR$ZrG!DbX)- zS>h38DMyea8!Of)6*e{ zrh?xE<1*ko;!0xnb(YG9oeX|+3Z?NDD}K!qpXqiB9GuG|bn$b1>ckgM$LYJHE$cT3 z>i9D_#G38_j7dzuccY762)ZgV3cxIb-(N)(w%crR+|iPNDgG&c=!1SarMPg8H4By2 zs-kaFvkQNd#zzXlufo$$6pDKvN+&h(>jL--1^V1({_hb;-5Tl?HxKCT%q#Hl>arvF z1#@Q;vSW<-BYSPWPFGb*ZdQIBUcQ`bWmdu1WxJ8Ys-b7yfzXY{pFS&i|nC{azL z=!+*r)P12#jj|HsTQ;H+GhUm~7xPM;tjPH0hN#H!F7{1aJLTNVZGn5UzP8|6k@GzU z(G-oyRl~jw=7@eB^Qb}YT%UH5)@|y~)UWS7wVTuQDl{{z7qL}pr=Es_>5};ChJwkY zsY}mXyVR-YUb}R2`wc_8daQq8`lW6?_xhzP)u#256a2!oOPzY|wM)00uNl^B&JJIg zhN)wpyM~{}-RQ@Sp8iT9<6Ac=l7wi7bUfpJABku;EvN08TKE%AGYg@VuhK<`@%VQn zs0O>{Suv36WARl`x6kuVcc?|#XEQ9CSM$8hNxNn0CG?OKXm}{V+$}f{1;uYvbg{N literal 0 HcmV?d00001 diff --git a/TESTS/DATOS_READONLY/f_formset.scx b/TESTS/DATOS_READONLY/f_formset.scx new file mode 100644 index 0000000000000000000000000000000000000000..40254d416f45671ea0a8d2773d7a6f40f7de71fc GIT binary patch literal 4412 zcmeH~Ux*b|9LLYvu7Alug~W{RW>Ra~oteFN_fBClduMEK+;iu8XLh$;T}A8~2KitG zA_PhMQoUFNWl%^xSWmtr1hG~q_~3(!;DRf(`XDHnpbr%Y(f7>xUFXg{<89BS$A0iR zzq`NhncsKLoV#~sjFmkro??tG?S2bmG8R3;Shehg+x;4cQtZO8G&zNhR7yKWypk*Q zWf+#X=wXR_LFn)*W0ln@da>*TfjovkiQL_Ce59BCBFelsMIUkkk9zQpDY`%OYQ^E6 z=*s(2^r}tXE8 z#j4r+OVnDUqMG^f%09z^-+-UMc`yrZfKDT6_F&IU!?4YP+bd<;zmU5hV{9$R0ul8M zjC}!gqQ$JSXNGMROtb!sZ1oQE2jCd^nQA&Fjk!s)<~@Vi*Bj-uQ^?ccBKVtXjRrbd zHH-F4u59{Q+3EuF6>t+g{+v$xaqmTZihKf`0>4pBDtcqm%(VJTMr@YdB%8gA%)tcskZO81a(2>8tjvkc`15ko zPUHjNFgQuI|Hf=6Hv5Ab_iSct4d?|`&}pbEi+&sBw{eYl9zr~gY=CXxAl0OzH>zfC zys}@Z@eJ}jxDB3oLC>Ihwrb{)*tF!R z=x5a|7n`jblWlsD4X_m)q1r+Xn&+uz`Pl3#HNJ)XCs_O%Ufe*Zp_&cEW{0TpQRHLb zD=EiaMP3zsX1eY8qXu&0rx>+LeHRiwrWN< zPw{_toEo1*J`K)+uAR+?>wQ+u=zb>5ENbi^SHUFsl4^Q3a<*zl_cLL3AB~sq!VfUW df^Fap&}lq)i)p;}HowNCH67obR$W+a-9OM(i}C;f literal 0 HcmV?d00001 diff --git a/TESTS/DATOS_READONLY/f_listbox.sct b/TESTS/DATOS_READONLY/f_listbox.sct new file mode 100644 index 0000000000000000000000000000000000000000..4ff7174b8cafe381a146c178865ef6646c90203c GIT binary patch literal 15563 zcmeHOTW{Mo6qeKM5*OYw>}kM&86AeEfM-~8k|x0RV9O3-z_Ei!>18V#&@vqhl|_T1 z({w+i!2ZSl!uGnyJ?>u&!!}^O>>TQ1$#pJ8TVzccLg4p82M+TEXC4j8N6vB7usC3R6qP^PI%vCr=&|Din+DNLbDz)Ay}?XQiI6JVpr3Of zpo1T3nU*nCJu4eDZ}wfGm*bhq8c^G$N4;u74y!;n*=R)kzLB)Vgt(7hHpy7H%tt%5 zTb5n#-YIsvdpouElqDWbiq&JfF|Vt&UpLz|tJdgRQ@%`p1L%?E@{V`lg{C{p;2&i9 zu9}`SdYv7|E}ZLz_YQEv5Pvv57}zF81hM)XW#ErJ}b&(K=p%+_~x;oenwMs zNVr9#wN~?;A>$w!3|D6pzi%>cGD6!Kh5Xb!z0o+h7qA|uV-~7DkXSe@_X!IxTNhzW7H3ZOGwBGEVqa^!6pX%VNeIpm33nF!u3nXR|1xWE`|0lny!Z zk~of{!}GwDV~;!n1EQ00V&JkQq~xl#8M+BW#YPt-v0R%7w(a(*<-l9d>yao{o?BF zXk0H9rN9n-h{9U^QqeeH-}-q6slUP?=6MG(PaQX%4tuZ zl}=@$fnJ3@D9G@5DxbQ1>qzH zoyCF*!YK%cs8vC@vk>9C4&i1}RWsEO5#^`SR%gPW?^Om%en?gD=Rz}BZ$bV_hZNVV zB(N0vNiuMk8U4f?aPoOpWv|YcOH~HGS^NX468EPOMpqHiYQ4a0C0+9+tMhoczk3o%_kXgRuIWz#u zDut#}XzCR7#DiajBNdK39Y@aO%x0>yDYSE9pzjn0QW)ssF%Wzd`M)EeS52fT2o&FB zQ+YIX3+#nkRSN$o{PQ~T&-|P3j}_c`qj0A|2Vo8pZuHVYl!KJzB=0C|@rAofb60+4 zy#nV2Z}PVMN_8DZxa=rtWpx#1c|xve1+L6PtGY9f_vYXFJM-$uF?;o2U6@xF=HcS} t>$osqmtU1D!S{rUo2BAfsi@;)l!{e+fS#W+Y=jJ}z@Wo7NPu55{0BFZe@_4a literal 0 HcmV?d00001 diff --git a/TESTS/DATOS_READONLY/f_listbox.scx b/TESTS/DATOS_READONLY/f_listbox.scx new file mode 100644 index 0000000000000000000000000000000000000000..7539a7f3f337b5ccc594e0e602c6fc8eb0403346 GIT binary patch literal 2341 zcmeH|O>fgM7{|>vwDHnjCd7+)2}lSSLW{FBO%Xe!iKk|&n=DB?Hff+SRf0n~j7eNU z>WPoA1LDSk@4yWqapDv3Ef81!jx*M@Zpb+ENdM>Y{Ij1Yc0F6Kp01oHge=Sr;PW;! zOGwyulC>b>Anqx+h5QiG?f4sA=6iylfjc|K6Q8p&~} z3eH*53cPfMyrJOuJ~!~>_pPQpzXL%#Wgvt*s`+hZ2nb78nV(Ha#9|ipn1^rYJ_b$W zNW#UBJdLk_ZxnD7yj#GrH+-vrTi`ndybiuwz-{opf_JfebPMAz;KtWiNzs3&xdG?+ zPtfAM{eJ(Yma`LW&&=OPYny(@3pQizscCrnR@iE8Q(7~0n_7l_DNC@7xR$kd3X*=# z*w-mzCW^VbC}vQTHuUe9^aJ_@&EmQfb~%gkuao(SVxuct#o-H}=g@2D9rOVbHjj&Q za89<%`iWw4Wx8G0Yqc;t*}I7Q&=5Mz`pOm<9XCy1w#)i_v2CknG~@v>Xq_%zlxc1uQpkaxWqn_+5_11~*)nomt{62eOmjJ-i>n`iKY65IW5IY`lx_A4*=<|GBP?-nY^F PN|og8BUNv?zAL{0%&oIz literal 0 HcmV?d00001 diff --git a/TESTS/DATOS_READONLY/f_optiongroup.sct b/TESTS/DATOS_READONLY/f_optiongroup.sct new file mode 100644 index 0000000000000000000000000000000000000000..99199f340efc3f9ecfdaefe7843c1477a9054534 GIT binary patch literal 38140 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 WZ-fkcHp32N$hJl~3W{t7_w zA26|?PK-#ckWe>-1VV^1u^?3irY;Eh>|7iD>4Q_#L^PSd zi#8b(IijXx1a;TrP|O2pCX+*`-LPA2W?P|t1kKR_J+L|R1A{k-8Z#2zbPV6`&fx{* z{J{K3cU%+Q{FFqm89ozh@Y53Att~bT&capsS&7~>Jk|(8nfQ5`?zv6o1vc}EYjQnc zX25U&ye!c<3l>}}+99t>bljimTHX7*9O=muaGgklLfnwecUUnL5z#J_vxz+BGw&+1 zaPQp4piw#&;o(CbrI(<$Qgj`9J4MIY@M|ghMd&Lj`X%T$Q}hb-jzn)``{)jX-$66D zzo|(2-zcWbIlctNzrEJ!+*1-U*6~d2KU!I~8X#Ols=Z^>D_bahVSGmZ4ss}T^B`*sn;Ctx7mGx%!8Z5-4lfZELDm>HtM$!x zZ{S&>;jUVoJm;HwP3mkhu zbPi;V*bFa-rPbQjbw4!I)RL-I*B=sXfKOl-&?BN*kTv2$-23P5?@&=>i#~oT>;1RB F*}vHi%t8PF literal 0 HcmV?d00001 diff --git a/TESTS/DATOS_READONLY/f_optiongroup2.sct b/TESTS/DATOS_READONLY/f_optiongroup2.sct new file mode 100644 index 0000000000000000000000000000000000000000..9cd109da7c7bc6833395e9a034896a6e7a586aa2 GIT binary patch literal 8638 zcmeHMTW{Mo6i$IX1;{RcVDS2sVV+>gNt-_GA+a4afYSuE+h9O}f|hBUs4NN;ou>P7 z`&0V^JCsC`y6}?ct%U)Z{LY2vd_3n^IXe2~@1vum7x4N2-+wa#BKJRjoV{P%+`Sw8 zF>S!Ds|)V*Q6T;s~dYgwb@5Q|?%v_M-n>(hL-jPLAhz!^@`!vgW(;@hv9XU9~I} zEa-v781{m9ALjGmEkhO&M2{Qb2qSta2A5`Q!oxtiTzrGoIa=XlTrZbj zVSPgPdz7xDdPgou8KtU_3FW$yDAprbzf%VegUbV_3-VXt?=|?_*u2I26=stJ<@ubf z7-HWbyq(~*gsu*p({w@)smRs1wL3|wu!Vs*0#HR{tnHPCTB5B3aW|h$8QR{`wKxT^ zr*Q^NRRz2!F+Z^4#KET^_~a0vnWtu&%{Chx^W1)HKVJpv1~>@1z(uQ<*TB>(nydx1 zlS1wI0(ZkvLSi4JWacF!D6!;6XuUh|grxl(YB{jjp*8*L<3PpA3v+se=>=!x3+6j^ z@X`4pU1R3!>VyJ1&ApB_d*V2CX5cc7ca(vn7LqDn_%t%G+OzWUV$OEO^{Kk=KX-N}a? z;`wq%^0zq23h?iiFjWb*Tfe1;9N$v{_8ph6Kzf$lMTTQ2jb+WZpJ~AnKjc@4Eg=8^ zwFO>s!;;4(THQctdIC+B&;V+|i-F3T!6jyUlETFD9wTP~TT+@VN#=2k@^YS@SxE7b zRSnncet26E%~^n3>RQ< zaWsVg=IbJAgoH+Cqha+i3&?V=+X$lzuo9i0yTx>SqoEKC-$Z7y_hJrT((3M6!@U%7 z5d)Dm#T@7SGeWN1$&o~*$yg7gpzEo z$zSR1oY6cs8)jwufb2IF7bxQ>T`&Ek-uqEqEYe(6O<0V=e!By)@V7k{z;+ha;%0<)_6kOO15&TjyLME2ciaK|QI9 zOYznt49e|LRxl`tCPbM7Xon_1)1nwy`;m2lHX76Gvq?wOnkdfw$htTit?9Mdq@!tV z++$55S{gdY$Qg2lFoawIq|qviMq}oXOI_xWD@4;;H{=p&4!J^7Jl8ME#5GACm04ZhTsnuFzr%pw0qMYxPZp$<14&>7d|=Q&ftyGVd0Z?9}U}!Lgg;U($(te#883=7B&3(#6w#!;DbkQBeH6dIZOm_obewciM3eTW zNJGX_akP9kL^@8oD5C0zuCk9JQgu;$x&Wm}09vupWy{G36zB#GoHIdcikSe?V1rTp z;0A$A5XBc0qGM5npdZ{|g9)ONZ$fk|id;9q5}_{wrusv2T>OP?2=4?3Z-#^O;UE;B bXgC;)53C<6z(ol-13)+&M1XGr3>y9g!+&fO literal 0 HcmV?d00001 diff --git a/TESTS/DATOS_READONLY/f_optiongroup2.scx b/TESTS/DATOS_READONLY/f_optiongroup2.scx new file mode 100644 index 0000000000000000000000000000000000000000..45ccf2ca1018ce9c8ec41c82eea56c1ee72faa2f GIT binary patch literal 1469 zcmeH{u};G<5Qa@DQmKH21tB4Yfq?-*N(*IRNRz7w%Ef8yP%%^pp$-f%@PMqWyaca- z_?-r5iW^jBPV(<0-`&}Fk$tqWvQ`&DH0lq~velM_NFq=7Wy&D_5~NXf5m_7#G71C3 zS0T+Au0tlJJx+v(H!a+cJf$Wvyo1^7W!iEcNgv;M7c$Fxo}wZL?^(F)UB(`hNy+;b zo_Hz6+F-#4HlE6aQXP^K?Ao~|UlSU@9SdjD7c$5z!O(I0=rrdm4`)osuoop4#u;&M=GvIaJO~yG5?+4+D1H zPRs3dAzMX)L(Ki+c~p_~xnM7Ie10w#e=qimpf`+nj3%x-V@@$o-WJoZHh!MF=|0+0 LDRZg)(Y8MTD(hiU literal 0 HcmV?d00001 diff --git a/TESTS/DATOS_READONLY/f_test.sct b/TESTS/DATOS_READONLY/f_test.sct new file mode 100644 index 0000000000000000000000000000000000000000..563a6e392248c860215228775a1f90fe49a1884e GIT binary patch literal 13782 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 literal 0 HcmV?d00001 diff --git a/TESTS/DATOS_READONLY/f_test.scx b/TESTS/DATOS_READONLY/f_test.scx new file mode 100644 index 0000000000000000000000000000000000000000..51df291e4ccf3d33a7438a24176271a603b70655 GIT binary patch literal 1469 zcmeH{u};G<5J25hq=JBj1yw={0|Nu1Nt;pz1}C|Spj@2B4poN=A=H5ZhJFWM!^+BM z@Eh!$(*RB729=qUd`|rC&Ua_o?Y+&N24k$*cqCnx`UYc3#MMBgNW`y^YL-n{7Kg(O z!a(yaQrk;hg$Pn{Oc;yz4cw2olye_Eq*>>(C^?UWPiuHYYMFanLJLxaSDR^kXP{z@nHq;63;3)^#;ckyhnUe!Ow}` zRq#IXsexxyJ}qm(2U5%R?dIrTS-wD|n_$WN*>w73m1M2<)PJ|OMqwO?k+g2R4zxS& z*b}zxI=18XyPbm~z!}Yh;(JmN^rc|0D{RV}IV0?OKbyUg(>sk18Z~(eQJ9%%*SJM|I~B_P;hoPRiz!z z|Mtpkdp-Z_b82>b+>8Y@oRQn2a4mCsUae+!Q>Ubl$)~Z>pYEo3bsp&PFQ0WTF3FH` z^H-L6dC_ug&vh(1%v`r__=W9`daN zuXW+U4YprPxs0&t(XyfD<+kbR8PPJ90&A6AQY#mj{Uq2+PQOp=wh>$r262y`DUpF^ zIyUxGv;4YwRDZ3V*3W9iYM4bljTNg4yD{$8#`#gHT5J@L>y0p9Cl!pgu8RQsc2c4s=&N~YfuC$54}zvn5+Z zPZeF0SWsWgRUdhlX|o!M8yh{+cHYT1Hq4(f$AN!K!*k6m>h;`_oafwbQ#W2z$pNc9 zj1*tK@u(fCX{krt1`XF5J%Ra8q;!qASMV(C;}UfD$bAnfeK++S)+BZjbZ~=0kF+si zKmuym@?c@oGORA1xoEd~j_c<>rX7C;LEq92U;pfTu zHN5v0whStAJe|)?3qKn#*E)%_n2+kpcc#{e+g!=3WXy~`AqIC(*Z1M77(JLwHQIMxnYOAjulx-l;G#G8ljBraf4gdQS zOqh&9A)eBUl`yI_b2-F;Lx@fY8h9Hm2>V$;c#D_?BW@Qa$`^K`r&HsH7;s3A>jr{a=AAc}>;53V zGaxR}sHJgO(%wS&2jX7W6s)$^|8uB8C~#yG&HBrx6JkK?bhwc~7c4l#&L}++Mc0Xu z>W9&M7&zsY=?r;OVeuz`#q-596NKixu^P5IS*R8<&BIm3G!<~WV}q3U3b-Y>4dMF{ z2q8QIewE8zFh@W-fo zBa{UMlX+#Fjd8F(0zTnzDlYvA3L3?>&#j+Xy^o(Ljh+kfJI0&Gl8i>58=XrEofSII zVAMYXI%CjqX<}zS1*8IJ&Zv(SC(7!>HHsTI0-TW-mtZ*&w>m$sTdj00p}>Blq>ak0 zUXgZv1-h03(B#U~4wUY4#9(2i`ew&MLtRV$Ru1{xxUM8F3fE`7mvp}!^3_XR6s$8@ zp?HBw!TM8l7)UW~l1d9Na&Wsv{HNRcR*E+AnMa>7}$#_fL<)+($W z|F%8H+I%(%W?5nFroI|~udp^$ok;TRM+4HO9T!fU5vr580rp^?W4h|(_p%FT_a?ywkpK{m6cGXgcSf11rw3;X_z6nAm4+B(%{v|nKaB0 zT#&O%y^;tyU*J9ZO-%EGHDEoiXIR~p@@2CRrCB3IkLuq*$+ITq%QIMsOaI)EgR9tx z@yE*~99+e)u;SyF<>NOZxEd1e1;BO=yfLXuEXkBFx5Q|re^GS%EV}(8V6+YgKq-h$ zk}cY-!@V{FqLDP0z&Q~Yd;fMWwo<_;_`ZYiZLHD7UVXR}-#SrV_p)Ah^t{IVqJr7K zm2-YebXQs!h3JM28=iAV9GR3U+Pj?k@_VLckY9jAp6;>P)S z@$G+9ly>8ywBtGI1SK#a4N0ExNcOmZg->>wLR%|I%>6$c03|V!xDa`gD5fqTi4pR{ zIU)By1-S}xc@RHP!mNa2R*<`)e>CErDq|!q;t~6EJ8AgC9@=4AE2K3YKSo;1;Ro!g SFvEeLArBe!v}Qnlmf?S;%|s3W literal 0 HcmV?d00001 diff --git a/TESTS/DATOS_READONLY/f_textbox.scx b/TESTS/DATOS_READONLY/f_textbox.scx new file mode 100644 index 0000000000000000000000000000000000000000..a19e3e74c43cd031e9df176bbfde4649f21f988d GIT binary patch literal 3649 zcmeH}-Afcv7{*U(WRemDVfMiW_6gE_x(;SB?vAv&XJ_4+bv4qklrk!?Kre$Jji8Gn zqM(a}q6=@Ln<65Lh^~a7D{t~22)c>_A$n%!!0%$&0`M`~K% z*h~niue*RT8a1_qG#L%!xcQe#-T$APr$!&?z zQ(4n-f^+CjkTma*x?*{|>1UqvQHgb~?DeE?ZJr!S3f6F=c5y)OfGGgoWw~@ zNlPVH${m+wU6FJ{leA{m;1F^T`+K-T)7MPc*(qpl0M8&rFt7MVGs<_-t?%OoJQXArKAT%ni+^*qito@*OY-p0k>WA#Yan z=gd%5MJ;V6WCC0Tx4HNHYQ&t$TF0gxLCfvP z2SE~0R{JMr!D^HxO;+_OeBrKxIq(#`1B*a3B6lXsdDHM0h-9dWq3QdAwmrxtFafTx znusB9R<=ME(0B>_02}rb(gHexXz*rb3*@HvAxAtwo(C_$BC7>Tbt7+93Rhz*zKrd_ z1|wh++y%x$!9G40Hm~;LU=! zzP}ocG$DOp3|s~?;0X{7&de-(>(6^TA;c@>1+WCZv09*1H}Yn3IA?Er3Hb!RfMw9s zM~DtYgEvz`v)O#m_Ac^c@C+=nnusB9riNy%16caN1|wh++ykP)n`vccCxW&rayPKS z6sw6C@@6_S!_r?K4O%vw!gc`c1r&$|Z`K}~WzXR8foU)U?t?c#G*-59zxV#-d%3u# M@6X3o|E|{Z3&FKEzyJUM literal 0 HcmV?d00001 diff --git a/TESTS/DATOS_READONLY/fb2p_dbc.prg b/TESTS/DATOS_READONLY/fb2p_dbc.prg new file mode 100644 index 0000000..8b104d5 --- /dev/null +++ b/TESTS/DATOS_READONLY/fb2p_dbc.prg @@ -0,0 +1,224 @@ +* ********************************************************************* +* * +* * 2013/12/09 FB2P_DBC.DBC 22:32:26 +* * +* ********************************************************************* +* * +* * Description: +* * This program was automatically generated by GenDBCX Version 1.1, +* * a modified version of Microsoft's utility GenDBC Version 2.26.67. +* * +* ********************************************************************* + + +LPARAMETERS tcMethod +LOCAL oDBC +oDBC = CreateObject('GenDBCX') +IF TYPE('oDBC') != 'O' + RETURN +ENDIF +cExactSet = SET('EXACT') +SET EXACT ON +IF EMPTY(tcMethod) + =oDBC.GenerateAll() +ELSE + =EVALUATE('oDBC.' + tcMethod) +ENDIF +IF cExactSet = 'OFF' + SET EXACT OFF +ENDIF + + +DEFINE CLASS GenDBCX AS Custom + PROTECTED aTables[1] + PROTECTED nTables + + PROCEDURE CustomProcess + *-- Your code goes here + ENDPROC + + PROCEDURE Init + IF FILE('FB2P_DBC.DBC') + OPEN DATABASE FB2P_DBC.DBC + this.nTables = ADBOBJECTS(this.aTables, 'Table') + ENDIF + LOCAL ARRAY xx[1] + IF ADIR(xx,'*.DBC') > 0 OR ADIR(xx,'*.DBF') > 0 + IF MessageBox('Warning! This program will overwrite your existing database and tables! Continue?', 308, 'GenDBCX Warning...') != 6 + RETURN .F. + ENDIF + ENDIF + ENDPROC + + PROCEDURE CreateDBC + *-- Create the Database Container + CLOSE DATA ALL + CREATE DATABASE 'FB2P_DBC.DBC' + + ********* Procedure Re-Creation ********* + IF !FILE([FB2P_DBC.krt]) + ? [Warning! No Procedure File Found!] + ELSE + CLOSE DATABASE + USE 'FB2P_DBC.DBC' + g_SetSafety = SET('SAFETY') + SET SAFETY OFF + LOCATE FOR Objectname = 'StoredProceduresSource' + IF FOUND() + APPEND MEMO Code FROM [FB2P_DBC.krt] OVERWRITE + REPLACE Code WITH SUBSTR(Code, 70, 13140) + ENDIF + LOCATE FOR Objectname = 'StoredProceduresObject' + IF FOUND() + APPEND MEMO Code FROM [FB2P_DBC.krt] OVERWRITE + REPLACE Code WITH SUBSTR(Code, 13210) + ENDIF + IF UPPER(g_SetSafety) = 'ON' + SET SAFETY ON + ENDIF + USE + OPEN DATABASE [FB2P_DBC.DBC] + ENDIF + + ENDPROC + + + ************************************************** + ** Table setup for NOMBRELARGODELDBF + ************************************************** + PROCEDURE tbNOMBRELARGODELDBF + LPARAMETERS tnPassNumber + + DO CASE + CASE tnPassNumber = 1 + =this.RemoveTable('NOMBRELARGODELDBF', 'C:\DESA\FOXBIN2PRG\TESTS\DATOS_READONLY\FB2P_DBF.DBF') + + CREATE TABLE 'FB2P_DBF.DBF' NAME 'NOMBRELARGODELDBF' ( ; + NOMBRE C(30) NOT NULL CHECK .NOT.EMPTY(nombre) ERROR "El nombre está vacío" DEFAULT ".", ; + EDAD N(3, 0) NOT NULL, ; + ID I NOT NULL, ; + BIGTEXT M NOT NULL, ; + DEPTO C(10) NOT NULL ; + ) + ***** Create each index for NOMBRELARGODELDBF ***** + SET COLLATE TO 'MACHINE' + ALTER TABLE 'NOMBRELARGODELDBF' ADD PRIMARY KEY ID TAG ID + SET COLLATE TO 'GENERAL' + INDEX ON NOMBRE TAG I_NOMBRE + SET COLLATE TO 'MACHINE' + INDEX ON DEPTO TAG DEPTO + + CASE tnPassNumber = 2 + ***** Change properties for NOMBRELARGODELDBF ***** + DBSetProp('NOMBRELARGODELDBF.NOMBRE', 'Field', 'Caption', "'Nombre:'") + DBSetProp('NOMBRELARGODELDBF.NOMBRE', 'Field', 'Comment', "Comentario de 'Nombre'") + DBSetProp('NOMBRELARGODELDBF.NOMBRE', 'Field', 'InputMask', "!XXXXXXXXXXXXXXXXXXXXXXXXXXXXX") + DBSetProp('NOMBRELARGODELDBF.NOMBRE', 'Field', 'Format', "A") + DBSetProp('NOMBRELARGODELDBF', 'Table', 'Comment', "Comentario de la tabla 'fb2p_dbf'") + CREATE TRIGGER ON 'NOMBRELARGODELDBF' FOR DELETE AS del_trg() + CREATE TRIGGER ON 'NOMBRELARGODELDBF' FOR INSERT AS __ri_insert_nombrelargodeldbf().AND.(ins_trg()) + CREATE TRIGGER ON 'NOMBRELARGODELDBF' FOR UPDATE AS __ri_update_nombrelargodeldbf().AND.(upd_trg()) + ALTER TABLE 'NOMBRELARGODELDBF' SET CHECK edad>10 ERROR "Mensaje de error de la regla edad > 10" + ENDCASE + ENDPROC + + + ************************************************** + ** Table setup for FB2P_DEPTO + ************************************************** + PROCEDURE tbFB2P_DEPTO + LPARAMETERS tnPassNumber + + DO CASE + CASE tnPassNumber = 1 + =this.RemoveTable('FB2P_DEPTO', 'C:\DESA\FOXBIN2PRG\TESTS\DATOS_READONLY\FB2P_DEPTO.DBF') + + CREATE TABLE 'FB2P_DEPTO.DBF' NAME 'FB2P_DEPTO' ( ; + DEPTO C(10) NOT NULL, ; + DESCRIP C(50) NOT NULL ; + ) + ***** Create each index for FB2P_DEPTO ***** + SET COLLATE TO 'MACHINE' + ALTER TABLE 'FB2P_DEPTO' ADD PRIMARY KEY DEPTO TAG DEPTO + + CASE tnPassNumber = 2 + ***** Change properties for FB2P_DEPTO ***** + DBSetProp('FB2P_DEPTO', 'Table', 'Comment', "Comentario de 'fb2p_depto'") + CREATE TRIGGER ON 'FB2P_DEPTO' FOR DELETE AS __ri_delete_fb2p_depto() + ENDCASE + ENDPROC + + + ***** Relations Setup ***** + PROCEDURE SetRelations + ALTER TABLE 'NOMBRELARGODELDBF' ADD FOREIGN KEY TAG DEPTO REFERENCES FB2P_DEPTO TAG DEPTO + ENDPROC + + ***** Referential Integrity Setup ***** + PROCEDURE SetRI + CLOSE DATABASE + USE 'FB2P_DBC.DBC' + LOCATE FOR ObjectType = 'Table' AND UPPER(ALLTRIM(ObjectName)) == 'NOMBRELARGODELDBF' + IF FOUND() + nObjectID = ObjectID + LOCATE FOR ObjectType = 'Relation' AND 'depto'$Property AND 'fb2p_depto'$Property AND 'depto'$Property AND ParentID = nObjectID + IF FOUND() + REPLACE RiInfo WITH 'ICR ' + ELSE + ? "Could not set RI Information, line " + ltrim(str(lineno())) + ENDIF + ENDIF + USE + ENDPROC + + FUNCTION RemoveTable(tcTable, tcFile) + LOCAL ARRAY laTables[1] + =ADBOBJECTS(laTables,'Table') + IF ASCAN(laTables,tcTable) = 0 + *-- No such table in the current dbc, nothing to do! + RETURN .t. + ENDIF + IF !FILE(tcFile) + *-- If the file has been erased, REMOVE TABLE fails with a 'File does not + *-- exist' error, because it can't find the file to either remove its + *-- database reference or delete the file . + *-- We'll work around this problem by creating a phony file with the same + *-- name, and use REMOVE TABLE DELETE to both remove the table reference + *-- in the dbc, and erase the phony file. + LOCAL lhFile + lhFile = FCREATE(tcFile) + IF lhFile = -1 + RETURN .f. + ENDIF + =FCLOSE(lhFile) + ENDIF + REMOVE TABLE (tcTable) DELETE + =ADBOBJECTS(laTables,'Table') + RETURN ASCAN(laTables,tcTable) = 0 + ENDFUNC + + + PROCEDURE GenerateAll + =this.CreateDBC() + =this.CreateTables() + + *-- Call custom method + =this.CustomProcess() + + =this.RulesTriggersProperties() + =this.SetRelations() + =this.SetRI() + ENDPROC + + PROCEDURE CreateTables + *-- Create Tables + =this.tbNOMBRELARGODELDBF(1) + =this.tbFB2P_DEPTO(1) + ENDPROC + + PROCEDURE RulesTriggersProperties + *-- Finish Tables (add rules/triggers/properties) + =this.tbNOMBRELARGODELDBF(2) + =this.tbFB2P_DEPTO(2) + ENDPROC +ENDDEFINE diff --git a/TESTS/DATOS_READONLY/fb2p_frm_1.sc2 b/TESTS/DATOS_READONLY/fb2p_frm_1.sc2 index 06a360a..9dd38d0 100644 --- a/TESTS/DATOS_READONLY/fb2p_frm_1.sc2 +++ b/TESTS/DATOS_READONLY/fb2p_frm_1.sc2 @@ -2,12 +2,42 @@ * (ES) AUTOGENERADO - ¡¡ATENCIÓN!! - ¡¡NO PENSADO PARA EJECUTAR!! USAR SOLAMENTE PARA INTEGRAR CAMBIOS Y ALMACENAR CON HERRAMIENTAS SCM!! * (EN) AUTOGENERATED - ATTENTION!! - NOT INTENDED FOR EXECUTION!! USE ONLY FOR MERGING CHANGES AND STORING WITH SCM TOOLS!! *-------------------------------------------------------------------------------------------------------------------------------------------------------- -*< FOXBIN2PRG: Version="1.19" SourceFile="C:\DESA\foxbin2prg\TESTS\DATOS_READONLY\fb2p_frm_1.scx" /> (Solo para binarios VFP 9 / Only for VFP 9 binaries) +*< FOXBIN2PRG: Version="1.19" SourceFile="fb2p_frm_1.scx" /> (Solo para binarios VFP 9 / Only for VFP 9 binaries) * -*< OLE: Nombre="Cl_form1.Cl_olecontrol1" Parent="Cl_form1" ObjName="Cl_olecontrol1" OLEObject="C:\Windows\system32\richtx32.ocx" Checksum="617849590" Value="0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAEAAAAgAAAAEAAAD+////AAAAAAAAAAD////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9/////v////7///8EAAAA/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1IAbwBvAHQAIABFAG4AdAByAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAAUA//////////8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBjW5n1Hc8BAwAAAIACAAAAAAAAAwBPAGwAZQBPAGIAagBlAGMAdABEAGEAdABhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAgEDAAAAAgAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2AAAAAAAAAADAEEAYwBjAGUAcwBzAE8AYgBqAFMAaQB0AGUARABhAHQAYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJgACAP///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAABPAAAAAAAAAAMAQwBoAGEAbgBnAGUAZABQAHIAbwBwAHMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAIA////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAOAAAAAAAAAABAAAAAIAAAD+////BQAAAAYAAAAIAAAABwAAAP7///8JAAAA/v////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9giHw7j9cbELm1BAIcAJQCIUM0EggAAACKDQAA7QYAACFDNBIBAAYArAAAAAAA//8AAP////8AAAAAAAAAAAAATwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABcAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgcWhqIFp0dVFoYTtqZGZuW2lhZXRyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAACACwAAAEFwcGVhcmFuY2UACQAAAEkKAAAAAAAAAAwAAABCb3JkZXJTdHlsZQAJAAAASQoAAAABAAAADQAAAAAAAAUAAIAAAAAAAAABAAAAAAABAAIACAAAAHtccnRmMVxhbnNpXGFuc2ljcGcxMjUyXGRlZmYwe1xmb250dABCdWxsZXRJbmRlbnQAEQAAAE4NAAAABwAAAAAAAAAAAAAAEAAAAERpc2FibGVOb1Njcm9sbAAFAAAATAAAAABibHtcZjBcZm5pbFxmY2hhcnNldDAgQXJpYWw7fX0NClx2aWV3a2luZDRcdWMxXHBhcmRcbGFuZzMwODJcZnMxOCBPbGVjb250cm9sMQ0KXHBhciB9DQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAABSaWdodE1hcmdpbgARAAAATg0AAAAHAAAAAAAAAAAAAAAFAAAAVGV4dAAUAAAASAAAAAALAAAAT2xlY29udHJvbDENAAAAQXV0b1ZlcmJNZW51AAUAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" /> + * -DEFINE CLASS Cl_form1 AS cl_form OF "fb2p_test.vcx" - *< CLASSDATA: Baseclass="form" Timestamp="2014/01/30 20:58:05" Scale="" Uniqueid="_3XW0B1R2O" /> +#INCLUDE "..\..\include\principal.h" + +DEFINE CLASS cl_form1 AS cl_form OF "fb2p_test.vcx" + *< CLASSDATA: Baseclass="form" Timestamp="" Scale="" Uniqueid="" /> + + *-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder + *< OBJECTDATA: ObjPath="Shape1" UniqueID="" Timestamp="" /> + *< OBJECTDATA: ObjPath="txtPromotor" UniqueID="" Timestamp="" /> + *< OBJECTDATA: ObjPath="lblPromotor" UniqueID="" Timestamp="" /> + *< OBJECTDATA: ObjPath="txtIdenc" UniqueID="" Timestamp="" /> + *< OBJECTDATA: ObjPath="lblIdenc" UniqueID="" Timestamp="" /> + *< OBJECTDATA: ObjPath="txtCalific" UniqueID="" Timestamp="" /> + *< OBJECTDATA: ObjPath="lblCalific" UniqueID="" Timestamp="" /> + *< OBJECTDATA: ObjPath="txtFecha" UniqueID="" Timestamp="" /> + *< OBJECTDATA: ObjPath="lblFecha" UniqueID="" Timestamp="" /> + *< OBJECTDATA: ObjPath="txtResultado" UniqueID="" Timestamp="" /> + *< OBJECTDATA: ObjPath="lblResultado" UniqueID="" Timestamp="" /> + *< OBJECTDATA: ObjPath="grdEncuestas" UniqueID="" Timestamp="" /> + *< OBJECTDATA: ObjPath="grdEncuestas.Column1.Header1" UniqueID="" Timestamp="" /> + *< OBJECTDATA: ObjPath="grdEncuestas.Column1.Text1" UniqueID="" Timestamp="" /> + *< OBJECTDATA: ObjPath="grdEncuestas.Column2.Header1" UniqueID="" Timestamp="" /> + *< OBJECTDATA: ObjPath="grdEncuestas.Column2.Text1" UniqueID="" Timestamp="" /> + *< OBJECTDATA: ObjPath="grdEncuestas.Column3.Header1" UniqueID="" Timestamp="" /> + *< OBJECTDATA: ObjPath="grdEncuestas.Column3.Text1" UniqueID="" Timestamp="" /> + *< OBJECTDATA: ObjPath="grdEncuestas.Column4.Header1" UniqueID="" Timestamp="" /> + *< OBJECTDATA: ObjPath="grdEncuestas.Column4.Text1" UniqueID="" Timestamp="" /> + *< OBJECTDATA: ObjPath="grdEncuestas.Column5.Header1" UniqueID="" Timestamp="" /> + *< OBJECTDATA: ObjPath="grdEncuestas.Column5.Text1" UniqueID="" Timestamp="" /> + *< OBJECTDATA: ObjPath="Commandgroup1" UniqueID="" Timestamp="" /> + *< OBJECTDATA: ObjPath="Optiongroup1" UniqueID="" Timestamp="" /> + *< OBJECTDATA: ObjPath="Cl_olecontrol1" UniqueID="" Timestamp="" /> + AllowOutput = .T. AlwaysOnBottom = .F. AlwaysOnTop = .F. @@ -66,12 +96,12 @@ DEFINE CLASS Cl_form1 AS cl_form OF "fb2p_test.vcx" MouseIcon = ..\..\ MousePointer = 0 Movable = .T. - Name = "Cl_form1" + Name = "cl_form1" OLEDragMode = 0 OLEDragPicture = ..\..\ OLEDropEffects = 3 OLEDropMode = 0 - Picture = ..\..\ + Picture = bmps\fondogris.bmp RightToLeft = .F. ScaleMode = 3 ScrollBars = 0 @@ -133,7 +163,7 @@ DEFINE CLASS Cl_form1 AS cl_form OF "fb2p_test.vcx" Name = "Cl_olecontrol1", ; Top = 256, ; Width = 131 - *< END OBJECT: ClassLib="fb2p_test.vcx" BaseClass="olecontrol" UniqueID="_3XW0BXGCR" Timestamp="2013/12/03 20:18:24" ZOrder="2900" OLEObject="C:\Windows\system32\richtx32.ocx" CheckSum="617849590" /> + *< END OBJECT: ClassLib="fb2p_test.vcx" BaseClass="olecontrol" Nombre="cl_form1.Cl_olecontrol1" Parent="cl_form1" ObjName="Cl_olecontrol1" OLEObject="C:\Windows\system32\richtx32.ocx" Value="0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAEAAAAgAAAAEAAAD+////AAAAAAAAAAD////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9/////v////7///8EAAAA/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1IAbwBvAHQAIABFAG4AdAByAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAAUA//////////8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMC9jhY4as8BAwAAAIACAAAAAAAAAwBPAGwAZQBPAGIAagBlAGMAdABEAGEAdABhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAgEDAAAAAgAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2AAAAAAAAAADAEEAYwBjAGUAcwBzAE8AYgBqAFMAaQB0AGUARABhAHQAYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJgACAP///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAABPAAAAAAAAAAMAQwBoAGEAbgBnAGUAZABQAHIAbwBwAHMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAIA////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAOAAAAAAAAAABAAAAAIAAAD+////BQAAAAYAAAAIAAAABwAAAP7///8JAAAA/v////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9giHw7j9cbELm1BAIcAJQCIUM0EggAAACKDQAA7QYAACFDNBIBAAYArAAAAAAA//8AAP////8AAAAAAAAAAAAATwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABcAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgcWhqIFp0dVFoYTtqZGZuW2lhZXRyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAACACwAAAEFwcGVhcmFuY2UACQAAAEkKAAAAAAAAAAwAAABCb3JkZXJTdHlsZQAJAAAASQoAAAABAAAADQAAAAAAAAUAAIAAAAAAAAABAAAAAAABAAIACAAAAHtccnRmMVxhbnNpXGFuc2ljcGcxMjUyXGRlZmYwe1xmb250dABCdWxsZXRJbmRlbnQAEQAAAE4NAAAABwAAAAAAAAAAAAAAEAAAAERpc2FibGVOb1Njcm9sbAAFAAAATAAAAABibHtcZjBcZm5pbFxmY2hhcnNldDAgQXJpYWw7fX0NClx2aWV3a2luZDRcdWMxXHBhcmRcbGFuZzMwODJcZnMxOCBPbGVjb250cm9sMQ0KXHBhciB9DQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAABSaWdodE1hcmdpbgARAAAATg0AAAAHAAAAAAAAAAAAAAAFAAAAVGV4dAAUAAAASAAAAAALAAAAT2xlY29udHJvbDENAAAAQXV0b1ZlcmJNZW51AAUAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" /> ADD OBJECT 'Commandgroup1' AS commandgroup WITH ; BackColor = 255,128,255, ; @@ -161,7 +191,7 @@ DEFINE CLASS Cl_form1 AS cl_form OF "fb2p_test.vcx" Command2.RightToLeft = .F., ; Command2.Top = 8, ; Command2.Width = 96 - *< END OBJECT: BaseClass="commandgroup" UniqueID="_3XW0BCM76" Timestamp="2013/12/03 20:18:24" ZOrder="2700" /> + *< END OBJECT: BaseClass="commandgroup" /> ADD OBJECT 'grdEncuestas' AS grid WITH ; ColumnCount = 5, ; @@ -197,12 +227,12 @@ DEFINE CLASS Cl_form1 AS cl_form OF "fb2p_test.vcx" Column5.Name = "Column5", ; Column5.ReadOnly = .T., ; Column5.Width = 58 - *< END OBJECT: BaseClass="grid" UniqueID="_3XW0B58PA" Timestamp="2013/12/15 18:50:25" ZOrder="1600" /> + *< END OBJECT: BaseClass="grid" /> ADD OBJECT 'grdEncuestas.Column1.Header1' AS header WITH ; Caption = "promotor", ; Name = "Header1" - *< END OBJECT: BaseClass="header" UniqueID="_3XW0B58PB" Timestamp="2013/12/03 19:56:18" ZOrder="1700" /> + *< END OBJECT: BaseClass="header" /> ADD OBJECT 'grdEncuestas.Column1.Text1' AS textbox WITH ; BackColor = 255,255,255, ; @@ -212,12 +242,12 @@ DEFINE CLASS Cl_form1 AS cl_form OF "fb2p_test.vcx" Name = "Text1", ; ReadOnly = .T., ; RightToLeft = .F. - *< END OBJECT: BaseClass="textbox" UniqueID="_3XW0B58PC" Timestamp="2013/12/15 18:50:25" ZOrder="1800" /> + *< END OBJECT: BaseClass="textbox" /> ADD OBJECT 'grdEncuestas.Column2.Header1' AS header WITH ; Caption = "idenc", ; Name = "Header1" - *< END OBJECT: BaseClass="header" UniqueID="_3XW0B58PD" Timestamp="2013/12/03 19:56:18" ZOrder="1900" /> + *< END OBJECT: BaseClass="header" /> ADD OBJECT 'grdEncuestas.Column2.Text1' AS textbox WITH ; BackColor = 255,255,255, ; @@ -227,12 +257,12 @@ DEFINE CLASS Cl_form1 AS cl_form OF "fb2p_test.vcx" Name = "Text1", ; ReadOnly = .T., ; RightToLeft = .F. - *< END OBJECT: BaseClass="textbox" UniqueID="_3XW0B58PE" Timestamp="2013/12/15 18:50:25" ZOrder="2000" /> + *< END OBJECT: BaseClass="textbox" /> ADD OBJECT 'grdEncuestas.Column3.Header1' AS header WITH ; Caption = "calific", ; Name = "Header1" - *< END OBJECT: BaseClass="header" UniqueID="_3XW0B58PF" Timestamp="2013/12/03 19:56:18" ZOrder="2100" /> + *< END OBJECT: BaseClass="header" /> ADD OBJECT 'grdEncuestas.Column3.Text1' AS textbox WITH ; BackColor = 255,255,255, ; @@ -242,12 +272,12 @@ DEFINE CLASS Cl_form1 AS cl_form OF "fb2p_test.vcx" Name = "Text1", ; ReadOnly = .T., ; RightToLeft = .F. - *< END OBJECT: BaseClass="textbox" UniqueID="_3XW0B58PG" Timestamp="2013/12/15 18:50:25" ZOrder="2200" /> + *< END OBJECT: BaseClass="textbox" /> ADD OBJECT 'grdEncuestas.Column4.Header1' AS header WITH ; Caption = "fecha", ; Name = "Header1" - *< END OBJECT: BaseClass="header" UniqueID="_3XW0B58PH" Timestamp="2013/12/03 19:56:18" ZOrder="2300" /> + *< END OBJECT: BaseClass="header" /> ADD OBJECT 'grdEncuestas.Column4.Text1' AS textbox WITH ; BackColor = 255,255,255, ; @@ -257,12 +287,12 @@ DEFINE CLASS Cl_form1 AS cl_form OF "fb2p_test.vcx" Name = "Text1", ; ReadOnly = .T., ; RightToLeft = .F. - *< END OBJECT: BaseClass="textbox" UniqueID="_3XW0B58PI" Timestamp="2013/12/15 18:50:25" ZOrder="2400" /> + *< END OBJECT: BaseClass="textbox" /> ADD OBJECT 'grdEncuestas.Column5.Header1' AS header WITH ; Caption = "resultado", ; Name = "Header1" - *< END OBJECT: BaseClass="header" UniqueID="_3XW0B58PJ" Timestamp="2013/12/03 19:56:18" ZOrder="2500" /> + *< END OBJECT: BaseClass="header" /> ADD OBJECT 'grdEncuestas.Column5.Text1' AS textbox WITH ; BackColor = 255,255,255, ; @@ -272,7 +302,7 @@ DEFINE CLASS Cl_form1 AS cl_form OF "fb2p_test.vcx" Name = "Text1", ; ReadOnly = .T., ; RightToLeft = .F. - *< END OBJECT: BaseClass="textbox" UniqueID="_3XW0B58PK" Timestamp="2013/12/15 18:50:25" ZOrder="2600" /> + *< END OBJECT: BaseClass="textbox" /> ADD OBJECT 'lblCalific' AS label WITH ; AutoSize = .T., ; @@ -286,7 +316,7 @@ DEFINE CLASS Cl_form1 AS cl_form OF "fb2p_test.vcx" Width = 34, ; WordWrap = .T., ; ZOrderSet = 10 - *< END OBJECT: BaseClass="label" UniqueID="_3XW0B58P5" Timestamp="2013/12/15 18:50:25" ZOrder="1100" /> + *< END OBJECT: BaseClass="label" /> ADD OBJECT 'lblFecha' AS label WITH ; AutoSize = .T., ; @@ -300,7 +330,7 @@ DEFINE CLASS Cl_form1 AS cl_form OF "fb2p_test.vcx" Width = 34, ; WordWrap = .T., ; ZOrderSet = 12 - *< END OBJECT: BaseClass="label" UniqueID="_3XW0B58P7" Timestamp="2013/12/15 18:50:25" ZOrder="1300" /> + *< END OBJECT: BaseClass="label" /> ADD OBJECT 'lblIdenc' AS label WITH ; AutoSize = .T., ; @@ -314,7 +344,7 @@ DEFINE CLASS Cl_form1 AS cl_form OF "fb2p_test.vcx" Width = 30, ; WordWrap = .T., ; ZOrderSet = 8 - *< END OBJECT: BaseClass="label" UniqueID="_3XW0B58P3" Timestamp="2013/12/15 18:50:25" ZOrder="900" /> + *< END OBJECT: BaseClass="label" /> ADD OBJECT 'lblPromotor' AS label WITH ; AutoSize = .T., ; @@ -328,7 +358,7 @@ DEFINE CLASS Cl_form1 AS cl_form OF "fb2p_test.vcx" Width = 51, ; WordWrap = .T., ; ZOrderSet = 6 - *< END OBJECT: BaseClass="label" UniqueID="_3XW0B58P1" Timestamp="2013/12/15 18:50:25" ZOrder="700" /> + *< END OBJECT: BaseClass="label" /> ADD OBJECT 'lblResultado' AS label WITH ; AutoSize = .T., ; @@ -342,7 +372,7 @@ DEFINE CLASS Cl_form1 AS cl_form OF "fb2p_test.vcx" Width = 57, ; WordWrap = .T., ; ZOrderSet = 14 - *< END OBJECT: BaseClass="label" UniqueID="_3XW0B58P9" Timestamp="2013/12/15 18:50:25" ZOrder="1500" /> + *< END OBJECT: BaseClass="label" /> ADD OBJECT 'Optiongroup1' AS optiongroup WITH ; BackColor = 0,128,255, ; @@ -374,7 +404,7 @@ DEFINE CLASS Cl_form1 AS cl_form OF "fb2p_test.vcx" Option2.Top = 12, ; Option2.Value = 1, ; Option2.Width = 88 - *< END OBJECT: BaseClass="optiongroup" UniqueID="_3XW0BCM77" Timestamp="2013/12/03 20:18:24" ZOrder="2800" /> + *< END OBJECT: BaseClass="optiongroup" /> ADD OBJECT 'Shape1' AS shape WITH ; BorderStyle = 2, ; @@ -387,7 +417,7 @@ DEFINE CLASS Cl_form1 AS cl_form OF "fb2p_test.vcx" Top = 284, ; Width = 101, ; ZOrderSet = 0 - *< END OBJECT: BaseClass="shape" UniqueID="_3XW0BQM70" Timestamp="2013/12/03 20:18:24" ZOrder="500" /> + *< END OBJECT: BaseClass="shape" /> ADD OBJECT 'txtCalific' AS textbox WITH ; Comment = "", ; @@ -404,7 +434,7 @@ DEFINE CLASS Cl_form1 AS cl_form OF "fb2p_test.vcx" Top = 164, ; Width = 38, ; ZOrderSet = 9 - *< END OBJECT: BaseClass="textbox" UniqueID="_3XW0B58P4" Timestamp="2013/12/15 18:50:25" ZOrder="1000" /> + *< END OBJECT: BaseClass="textbox" /> ADD OBJECT 'txtFecha' AS textbox WITH ; Comment = "", ; @@ -420,7 +450,7 @@ DEFINE CLASS Cl_form1 AS cl_form OF "fb2p_test.vcx" Top = 192, ; Width = 73, ; ZOrderSet = 11 - *< END OBJECT: BaseClass="textbox" UniqueID="_3XW0B58P6" Timestamp="2013/12/15 18:50:25" ZOrder="1200" /> + *< END OBJECT: BaseClass="textbox" /> ADD OBJECT 'txtIdenc' AS textbox WITH ; Comment = "", ; @@ -437,7 +467,7 @@ DEFINE CLASS Cl_form1 AS cl_form OF "fb2p_test.vcx" Top = 192, ; Width = 149, ; ZOrderSet = 7 - *< END OBJECT: BaseClass="textbox" UniqueID="_3XW0B58P2" Timestamp="2013/12/15 18:50:25" ZOrder="800" /> + *< END OBJECT: BaseClass="textbox" /> ADD OBJECT 'txtPromotor' AS textbox WITH ; Comment = "", ; @@ -454,7 +484,7 @@ DEFINE CLASS Cl_form1 AS cl_form OF "fb2p_test.vcx" Top = 164, ; Width = 149, ; ZOrderSet = 5 - *< END OBJECT: BaseClass="textbox" UniqueID="_3XW0B58P0" Timestamp="2013/12/15 18:50:25" ZOrder="600" /> + *< END OBJECT: BaseClass="textbox" /> ADD OBJECT 'txtResultado' AS textbox WITH ; Comment = "", ; @@ -471,7 +501,7 @@ DEFINE CLASS Cl_form1 AS cl_form OF "fb2p_test.vcx" Top = 220, ; Width = 81, ; ZOrderSet = 13 - *< END OBJECT: BaseClass="textbox" UniqueID="_3XW0B58P8" Timestamp="2013/12/15 18:50:25" ZOrder="1400" /> + *< END OBJECT: BaseClass="textbox" /> PROCEDURE grdEncuestas.AfterRowColChange LPARAMETERS nColIndex @@ -482,8 +512,12 @@ DEFINE CLASS Cl_form1 AS cl_form OF "fb2p_test.vcx" ENDDEFINE -DEFINE CLASS Dataenvironment AS dataenvironment - *< CLASSDATA: Baseclass="dataenvironment" Timestamp="2014/01/30 20:58:05" Scale="" Uniqueid="_3XW0B1R2N" ClassIcon="1" /> +DEFINE CLASS dataenvironment AS dataenvironment + *< CLASSDATA: Baseclass="dataenvironment" Timestamp="" Scale="" Uniqueid="" ClassIcon="1" /> + + *-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder + *< OBJECTDATA: ObjPath="Cursor1" UniqueID="" Timestamp="" /> + AutoCloseTables = .T. AutoOpenTables = .T. Comment = "" @@ -500,31 +534,17 @@ DEFINE CLASS Dataenvironment AS dataenvironment ADD OBJECT 'Cursor1' AS cursor WITH ; Alias = "encuestas", ; - BufferModeOverride = 1, ; - Comment = "", ; CursorSource = encuestas.dbf, ; - Exclusive = .F., ; - Filter = "", ; - Height = 98, ; + Height = 90, ; Left = 10, ; Name = "Cursor1", ; - NoDataOnLoad = .F., ; - Order = "", ; - OrderDirection = 0, ; - ReadOnly = .F., ; - Tag = "", ; Top = 20, ; - Width = 102 - *< END OBJECT: BaseClass="cursor" UniqueID="_3XW0B58OZ" Timestamp="2014/01/30 20:58:05" ZOrder="300" /> + Width = 90 + *< END OBJECT: BaseClass="cursor" /> PROCEDURE BeforeOpenTables *-- Comentario en método [Dataenvironment.BeforeOpenTables] ENDPROC - PROCEDURE Cursor1.Init - *-- Comentario en método [Dataenvironment.Cursor1.Init] - - ENDPROC - ENDDEFINE diff --git a/TESTS/DATOS_READONLY/fb2p_frm_1.sct b/TESTS/DATOS_READONLY/fb2p_frm_1.sct index e948eac5da330fec27feb7a53bc277613b487b23..0aa742d5b44eded9395a8e5b0595faf0c2bd854d 100644 GIT binary patch delta 279 zcmZ2g^1XzEfx)Vrfq{W>qu?jTi3*&XnVF_CsjwxN78U0gfy99rmB;Q3mNT53&Lme~ z9Fkw4V5?wcz{};6npOg28UmRfshQ~+AdV%F6P}q;k^yBq=42)o1KCQcdC8@z#U+Ww zO1xYU^MdnBi;`1;a&RfVl%zCXF2BTFkf;*WR-k&Qs~C+K7$(nQ@nf96`8A6Xqfk101kY32`8 Xd?)8v$})ch(mj^4te?LK~cV5hMVma zR{>oKG}-Lb%H;f%)MC91KRayl<(YZLMu`QPdKqE%x4E?p7#J8Bfmp^lKQ}e6B(W$n zU%@vqwYa1xUm+zSHAlfMzbID`sz?nLr$Jcwba1XZns Wq#ABys)ABll2Ji?T2XGip%MW2D_pz) diff --git a/TESTS/DATOS_READONLY/fb2p_frm_1.scx b/TESTS/DATOS_READONLY/fb2p_frm_1.scx index 8be9bfae316d344fdc28f6439824a9100e99896a..3813f51c869a2e8705c84f706099972b5ad99f3e 100644 GIT binary patch literal 4303 zcmeH~OK1~O6o$uW@d0XmYkkGGDvC;Gk~GOeWipwzskxbSCbcahDpGvl1AL$hsV)Q+ zMHE4FAqt{`peq#@U5Fw`H@;ACBPzIXrF5YiU;pHudXt$+NQW%F@Xg7b|K9V@xoI;q zp-FXP7f6ycZp>~ROGjX|B;_({zSS@p6m1j^<4UJUUDZ3=L_v$U{%6mQFR;Vh`O&c4Sqi+f~^z4?U-vdNyy% z5?kq|n?_DI^J(3ZnCz|RbuF)B16b5UXL`QfNEJF{2@f6Drx_`JeX9$4=?)l~f(Aum zs@M9AuGk_*q07?Ml4R~CU0`hN&&24nb72wGeB_4VxumW&Z?PoVtl*`x)# z)7g~KZ3Q=ld%8nO*;KN!9F^k{B@$N>G%1I;jXw8N+=*YLx1e}r>-bqW#bV9=EX*QG zLJq~-qw9p(dHQ>}ig*VMfY+3B7OLi4m<@Mk2(!(&!oA=)I7e4|jbb&$opT&!oh%lT z<**V9g|Lrn>-qEyVlUVR4pGiosG4(!Su~!r&BBp*xFwXBF@=|CMht^iu%2?&6nD;X zo5{j#!&E+fJK{lb5?rF3vrskXZZk!g6>eInvJp40UEl~f1N;uRSy-5zp3ci&Lc9U) zgQt}9W9T-E2(yDTc**047r+g0pK`S^iwd&`GkM7;h%dk=Fhsf9n6(JATeEn{2Z&F> z8}ONOwK0ncvp2JO$xn!1!5=VrjvpJo#{Heeh1nx2{2cK;7y^NYTAC$<*@U^g@GQh; z5C`p)^JD4mOciE&C;T?rp3IZf~bNl*iX6In01KGeo*1MC6Y7^G=etZcep#lqulT_$YCmc z0`Vfa4xUlYkD3!~@_IxJ E7mjjqrT_o{ literal 4194 zcmeH~U1$_n6vuB8NfS|<`cac;+ik0n(5CF{&VG#8hso?DZn}48vmYj@lu~pl3RMtW z+J~k{$b*8QQrgmo_94)RHnh-^_MxCf2?aqE6(2+e5uY^p;DcC%_CI^idUyBEF3yn0 z9{AleIsY@~KX-=B&W6`?^uELx>ss*<*7|7gU@Vt0iz7~+L$TVhbk(=8QZ_wavePM7 z@5ZvSK`*AcT_~D7$5?iqhi+xeLP4Cv-RoG7*(<$9Ac zxW2b5di@=6G8GL9I5_;J~FJb#AyTSKiY24rHiuC^yvK-FwNeC7894eO& zgzCcA?P+h)y`8aM(n1sIY|5D^gx-%%PK1ZGd?c%Bx^Bec30*U&DTn+a9Zyr3jPLHXuuuHwI;2OFT0;>iUzZBo(OANG?EC1 zBYN_a=S9~H@(J)A_?c?e0e*6WSuB}z&7yiT8V?(p9x-Y+@_z6+I8HS`Ce>cmOp|7( zUJz~HBhP~~;3Czk1N>ywEF#Tj*NRbJBF}-}z&WbdW>IN&*8S2#TtvPB?t>>( z6NS39HH%5Jr46F#ALQp=WULPif}o+A#iiLT8oY%3 z1gzS~*k%wkRI`LMTh%MZ_8|{|I2fT?5JS~0Da{_y;LbkAHh@83fS{q88Pd$`7h|)? zyTL*51=WHWs%EA%Gd78lHu5+qgO929)ys@M1b#v_8-`gVZWy{2zWa(8^$@u?lA zfuNz9S#oD(8hjXe2Alv3RAT``HA~5z8SZN`+W}|Xv-LH!=y~x{u4yLH~tOm7xs@YDt zvzs*d9`a+*wS}=E5HwV?wA|UdG_}51w9VeE (Solo para binarios VFP 9 / Only for VFP 9 binaries) +*< FOXBIN2PRG: Version="1.19" SourceFile="fb2p_frm_2.scx" /> (Solo para binarios VFP 9 / Only for VFP 9 binaries) * * -DEFINE CLASS Dataenvironment AS dataenvironment - *< CLASSDATA: Baseclass="dataenvironment" Timestamp="2013/12/03 19:54:07" Scale="" Uniqueid="_3XW0B26O0" ClassIcon="1" /> +DEFINE CLASS dataenvironment AS dataenvironment + *< CLASSDATA: Baseclass="dataenvironment" Timestamp="" Scale="" Uniqueid="" ClassIcon="1" /> + DataSource = .NULL. Height = 0 Left = 0 @@ -16,13 +17,20 @@ DEFINE CLASS Dataenvironment AS dataenvironment ENDDEFINE -DEFINE CLASS Form1 AS form - *< CLASSDATA: Baseclass="form" Timestamp="2014/02/03 19:55:29" Scale="" Uniqueid="_3XW0B26O1" /> +DEFINE CLASS form1 AS form + *< CLASSDATA: Baseclass="form" Timestamp="" Scale="" Uniqueid="" /> + + *-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder + *< OBJECTDATA: ObjPath="Commandgroup1" UniqueID="" Timestamp="" /> + *< OBJECTDATA: ObjPath="Pageframe1" UniqueID="" Timestamp="" /> + *< OBJECTDATA: ObjPath="Optiongroup1" UniqueID="" Timestamp="" /> + * *p: a_otra - *a: ^a_prop[1,0] && array + *a: a_prop[1,0] && array *p: _prop * + AllowOutput = .T. AlwaysOnBottom = .F. AlwaysOnTop = .F. @@ -65,7 +73,7 @@ DEFINE CLASS Form1 AS form HScrollSmallChange = 10 Icon = ..\..\ KeyPreview = .F. - Left = 0 + Left = 2 LockScreen = .F. MacDesktop = 0 MaxButton = .T. @@ -96,7 +104,7 @@ DEFINE CLASS Form1 AS form Tag = "" Themes = .T. TitleBar = 1 - Top = 0 + Top = 1 Visible = .T. VScrollSmallChange = 10 WhatsThisButton = .F. @@ -177,7 +185,7 @@ DEFINE CLASS Form1 AS form Command3.Name = "Command3", ; Command3.Top = 63, ; Command3.Width = 84 - *< END OBJECT: BaseClass="commandgroup" UniqueID="_3Y813WLQU" Timestamp="2014/02/03 19:55:29" ZOrder="400" /> + *< END OBJECT: BaseClass="commandgroup" /> ADD OBJECT 'Optiongroup1' AS optiongroup WITH ; ButtonCount = 3, ; @@ -207,7 +215,7 @@ DEFINE CLASS Form1 AS form Option3.Name = "Option3", ; Option3.Top = 43, ; Option3.Width = 61 - *< END OBJECT: BaseClass="optiongroup" UniqueID="_3ZO00KYM8" Timestamp="2014/02/03 19:55:29" ZOrder="600" /> + *< END OBJECT: BaseClass="optiongroup" /> ADD OBJECT 'Pageframe1' AS pageframe WITH ; ActivePage = 2, ; @@ -224,6 +232,6 @@ DEFINE CLASS Form1 AS form Page2.Name = "Page2", ; Page3.Caption = "Page3", ; Page3.Name = "Page3" - *< END OBJECT: BaseClass="pageframe" UniqueID="_3ZO00KYM7" Timestamp="2014/02/03 19:55:29" ZOrder="500" /> + *< END OBJECT: BaseClass="pageframe" /> ENDDEFINE diff --git a/TESTS/DATOS_READONLY/fb2p_frm_2.sct b/TESTS/DATOS_READONLY/fb2p_frm_2.sct index 7523192a9dafcab1f3e09f2597a84ef81b52ba5e..5638dcdb9b1521cbd8e8c2857f67559e7d319eac 100644 GIT binary patch delta 24 fcmeBD?^55O%*<`b%jJ`rR-$05V6<6}IYs~gP~Qd? delta 24 fcmeBD?^55O%*<`T%jJ`rR-$05V6a(_IYs~gP{Rfj diff --git a/TESTS/DATOS_READONLY/fb2p_frm_2.scx b/TESTS/DATOS_READONLY/fb2p_frm_2.scx index 74aad0153f3a9bfde9a3b3d32524a65cac862952..3623de93731595dfa95e915f11421174d8654c82 100644 GIT binary patch delta 40 ocmZqSYvE%t;A3Uq$nu$m!_?5i#K^$Rbn<_eOK{HSo2=T50L?54k^lez delta 40 ocmZqSYvE%t;A3Lm$nu$m!^G6c!pPXbaPohaOK{HSo2=T50L!@we*gdg diff --git a/TESTS/DATOS_READONLY/fb2p_test.pjt b/TESTS/DATOS_READONLY/fb2p_test.pjt index b44124a1f975cd60047a274f60422d5140423628..f88d1fa6bd8f68b55640b3e934bfd25e1166741f 100644 GIT binary patch literal 7656 zcmeHMTaVjB6i!*7YSoL_Qa}hKBVLe@Bip$bgm8S>hNelBq!*+}qlrCE-P)cocD7ki z|1U3n;*|%^ak5#j*SnjteV}wl8(-!ef9E@AX3ku;R4V;hDwV#0-(|Us07l>n{OZQN ziD`}WiQRwN?)0?5aBniUM&r@M)W`i18Cts8?{$Bj*lleRy_IH%ETS|H6=fwt=l<~aUe zQC@cP-S8JKb#wKjgeI(HaJM|*aRR~teI4g?&UiI=$fAS_pTEIJXW+eKB5)tt>Oktz zkiBEn-v(XV513@K*b)9b@%a{g@NHQA&tP=fj0Tdy=Lf={J;TBCUX_*mV?kXOQc;uu z|JUId2<|SN*vf3t8aNzZB7yvC*^%- znGxb6DqMK(zVf#uNmWTzD(PL4H27;At_aYwHaQ}}mJHNdn~L0vrX5Mf2XiKM{i&eh zU=6KEQlv`iAvUfRMEx zLW4(Ow8;~}B@UCpif$_-+>&rxS9G&tShCe@ROPCo*|OfO)Z}JOw^YM4teRR|6K*TD zc3snD&8UHEMztolG}V?ZrDf}iRj(U%?NvdK`tC4r9$!xVNSljU8pC+v(uBuEFzWIs zILLjve#Jg{afDrjxo-4(c4x0_51x#7GS*PG>+s0)XOq>f?9E^16h1|*8{?s6J?>af z%I$}PI-f{?ErdozR99U!Bu!ck3)N?qQFY=H0@fWEHhl)8% zsKW%z0CZyr6^@zE+Z}5-zK97r^_fVHoA?~<+#VT*ao;i?^dF70E}-mgN-}mF=NWTe z@I|s=2trg?BlO!tYtSE!_3kMMd@9%+*2Xl*BivcVfx`mWkC-U?4hP(IK@+RyPInjf z@FCG295vO7!|gN+cp@ZPInL)nM2J6z%eBq^Jd zZW7ZXMpqxfwcjI;^=^Mibi=SlBk=Vcwb7`v*8{by>y&9+E!`{~C0odnnQ-ouKJ4^5 zV^BZQm5#!NgM7|HYI&5ypq&(3U+9O~uk zWdtrGa2bL3C<2%scRj+>GmDwvi+OHdOBDitN?;iVE8Bp@xn0Uu2)8|wu05uFnZpPB zh;Yk;9ndl!rJsOeiu7m9-bReTi9e z(#zBfxm=!j2?3bHbvGdn;=vv#=7PXNoKWIUoiaRuQ^yOM*cQRNAVL@|PemxB7s~}i zYfAX^Im0c(0r3`*0|#F$CN3i}pL3D0A_(;2GeB4zi$g{e6|@ry#{)HmMHC?}pHk-q z^x0gr5W(0AVa5^?vpE%T^y|U_HXLEP`!rY-G6&R6K@;_DO(cE@n`{~$BZ>&-RtUZe z2g|vCG z@`vqB_z|`#6(I}HYs54LctI1rb4(zAN?=b<2#r?Jrm;VZC=N}M&=~>C(2?9?t7ziq z?M?U*9M2?#1_7o4Cn*XHGS3z?aj(!sHYqY3gjB5d{tJ=PKa4see1h42z1fWO$rcqL znPVy@l;))%M1`+yJZJ(CDd8@Ur2u{ina*(_Kf53TOi61Kr|ek2??f=_AuGcFrdS}M R@*5aL6L*fyyjo`J{Ri(F-SYqd delta 27 hcmaE1y+((Ffq`KS5G!sL6y#=_oFKunS)55!1OQv|1-AeI diff --git a/TESTS/DATOS_READONLY/fb2p_test.pjx b/TESTS/DATOS_READONLY/fb2p_test.pjx index baaabd24edbfd1a013393fe06a326b47d80c3920..8ef0695e49fdb51af65271a7a33569d79645de27 100644 GIT binary patch literal 6913 zcmd^@%d6}(9LKBP>q1mSUEPHQ-(E!eoSC|^lS$91r)_GRnR{lT6<>JqtqUIu7wRA5 z!uJyqQ3MeLK?Fe%L`Cu6@b^obw4KvAGv_+qE)2{szxMk}@@bML>6llazVc4PFy1`% z8rW{S^fJRpgM`(0lS{xk)eSMkGE+J|4I0L@Q#8|8>E+;Fp)V^(Lt`v=mzj|Itv!0mW4^~xHsafQbeg215KHWV^!6T|Pw&my0*f2z z9bisNw=pxeh|*9tklY2gSNpG6CQ}|4SRk=`bf}+EiEkvM9-SU6f*4Cf`*(xEF>WWC z=^2pT1HvjFhli_Y5QS$v!p94mvp{edVH)-5lqU&;E&?e@di0zXEMKsh1^Ru*=I|LVp zeWH_PxsL1lwryVv!h`T5Li>5#4i zF$Q@Z%)+u9du*DH=jjL&RZL;nz4uCW+aR`YdJ|&Vo~;62t|gU)TM@hn;Rl*vtSTdG z30_bHmhHPvhd{Ng@`@nLlM=eHFJT~g9!x_p(Q#`Do~!F8mT%eimIS(+bp6ti1kZv! z-@Pxd8iJNsH!ic*ZRNIQ^h3&10UH9#Rm4h;LF5@QFV&;qI(>c6DupGUMgxgB?#LUV zXsU=xXlz*UY0ffO6@ysCbaGkGQ(#X-@MPTru`Szju)<>qD5d+19>C7qX<1!Jf+tQ& za9$C3BWvOxPe6k_VT znUf6!B4@C3vvbW;cRj3%JPbytnds>uZPtVK2x5tc&_E)@GRNH&sS+BC??M>ubz5y; z$$AdJ_A%9;Rkht*_Q89a!1JLabi|Gb1UnRK0f;1cUlUAh zYqa}5;BZo3i+}`YKWGS?@nq+HfM@L>ovnEpkbr#H5V(%H^S5yef{z-4k?U@8N<(f; z^^DoD9>h_xX&!tGl~r%!Wb8W4X=+C^G30PYTe~F4C;3DZ_@-O!H1g?oNKml$%C6rw za3sN}U^BTQ`L^T8{r)IHeO%U5vSd}&@uMKhGUSKTD7CYEuPiBc$AaYr&r7@^>-lVO zg3kvh_+ldg4B`ck!r{Ec-3k985WFatWjIeMY?iDjXRO38a)W%ikpP;%P=a}99<=9R zRmTQ^bza#hqYiuR> za+T-AAUL`$$~zcK{sbfY!15e8ap_QfB0Isi^Ixsj(QOEt?@`?VIv7O$27}+uw&hL6 Q_KwfWop0wJ3M4r557a~}E&u=k delta 29 kcmZoPJ1EL(z{kkJvys( (Solo para binarios VFP 9 / Only for VFP 9 binaries) * +* +*< LIBCOMMENT: Comentario principal de "fb2p_test.vcx" /> * DEFINE CLASS cl_commandgroup AS commandgroup && Descripción de cl_CommandGroup *< CLASSDATA: Baseclass="commandgroup" Timestamp="" Scale="Pixels" Uniqueid="" /> + #INCLUDE "..\..\include\principal.h" * *p: una_prop_cmgroup && Con comentario, pero sin valor * @@ -46,13 +49,13 @@ DEFINE CLASS cl_form AS form OLEPUBLIC && mi OLE server DLL * *p: chidden && Prop.Hidden *p: cprotected && Prop.Protegida - *a: ^ahidden[1,0] && Array Oculto - *a: ^aprotected[1,0] && Array Protegido + *a: ahidden[1,0] && Array Oculto + *a: aprotected[1,0] && Array Protegido *p: _memberdata && XML Metadata for customizable properties * - HIDDEN chidden - PROTECTED cprotected + HIDDEN chidden,ahidden + PROTECTED cprotected,aprotected Caption = "Form" chidden = && Prop.Hidden cprotected = && Prop.Protegida @@ -60,6 +63,7 @@ DEFINE CLASS cl_form AS form OLEPUBLIC && mi OLE server DLL Height = 345 Left = 0 Name = "cl_form" + Picture = bmps\scccheckout.bmp Top = 0 Width = 570 _memberdata = @@ -153,7 +157,7 @@ DEFINE CLASS cl_imagen AS image OLEPUBLIC && otro ole *< CLASSDATA: Baseclass="image" Timestamp="" Scale="Pixels" Uniqueid="" /> * - *m: *un_metodo_de_clase && Para testear si el código se va a la clase cl_form + *m: un_metodo_de_clase && Para testear si el código se va a la clase cl_form * Height = 16 @@ -180,8 +184,8 @@ DEFINE CLASS cl_optiongroup AS optiongroup && descripcion *< CLASSDATA: Baseclass="optiongroup" Timestamp="" Scale="Pixels" Uniqueid="" /> * - *m: *propiedad_de_clase_con_valor_access - *m: *propiedad_de_clase_con_valor_assign + *m: propiedad_de_clase_con_valor_access + *m: propiedad_de_clase_con_valor_assign *p: propiedad_de_clase_con_valor && Tiene un valor por defecto *p: propiedad_de_clase_sin_valor && Una propiedad sin valor para heredar * diff --git a/TESTS/DATOS_READONLY/fb2p_test.vct b/TESTS/DATOS_READONLY/fb2p_test.vct index a112e2590eb00bb99f1e2123f9333f669d80e23e..b6955e7b017f4ecc6609646e2f012c4fa4831fce 100644 GIT binary patch literal 83582 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 LfHF-x$pQA7 zlQnztu^MK=p_9_8A+ z*!4E!&lU?<(rA+w9<=#K=<}pPQPS zlv`lM;&*lJoNvN{SM53lfVJC$F=S1_wGQ93R{4V*&shzr=a~ diff --git a/TESTS/DATOS_READONLY/fb2p_test.vcx b/TESTS/DATOS_READONLY/fb2p_test.vcx index e63441a26075dfd97c5ce88a9cd8a3f738c1b976..bac14b36dfebd9338e7845f03d18fcdd3478beb9 100644 GIT binary patch literal 6373 zcmeI0Ym5_B6vqz>2&_RxnYwQqTPqRK_%To6XqKAMMCn90SD(tL@I*)9Fy7pST9WbR79}1N{s}nL zTKu`Vs$_FvHBFS9Y~zn6!r81gMx6;g#xlO(Po$zStFvtUk#JVw80vjC{#2wX8CDe$ zRh?(!Plq!~GAG=mF0k`wQfVcViz``D#XMPmUpkY@DbbvQ2~d4DepSgerecK()sT%J zzb~4KX}@n#!EerxN)&wXkQ%ldpHMu)2`N-*9!-={vPz~^iQ%`aadaBYk07eJ$blR5E$dqDZEtgj6Rj;-N%DI9pGl z4cuPGmu=B4M1Qyn?!qAre<#?^{e&@s_Ov;ApHgMTN5NQ|-i>HJ2N`V$X7pFnHdhvD zT`I|KjYA!=}aXW9Bu3NE)J_p-E&}i{3u$)(2*>uamYAUhzu~e3f*5@Qi z_R4Y~;Fm9rNvO0ur{Y5+6DUu7T*@jdDWHmSO!{?Rda5r zOgv|~*pdV)3kH0CzwAEzuofc!5YZlPUqIVV`r-c;ba6k?XEYw@3pk&|4|dg+d3ZqF zup-zctz@%Q))1BJCCMiRWpBVIcP`O}=8+)D?K5a!*n!o%7w;j9Wi(Z8-#ne2(WgH4U?X;kKMdwo8SbPcaALLNtu8oZ_md7A@z z@yg}Gt8r0&LEpcCTzqGN<40G~t7&7hh@{A=cvws34a&hT9@qo@3g`ug*k%q>-B~G_ zzIp1&(p^NWzzbjpI0%jdr&3C`oTsrv(x-9dS}kl3^cJuiGQ1K=p=2iJg8DX*+uPuBZ}7WNb9li(b+`w?RJ-)_|MhGZ}IO`Yf-Pnq}ytxiTpoN@58qR(67e<)PmJ zo57X7p@R{%Z8 z7<3XW2CtnX$5KkBPosW=)FJpJaPwZGKf!r0@3P}u<*x<$e&!9HLU18{(EGt#;PgG3 z&B?J;S>c*l_OqiL_yF_{&<*;pIZ309DNknD&pHu22L8Ppt3Nmao*p;KaklbghW#v$ z;6mPo-U3#GDN{!dc7xDx2*Pst9ouS#B9L>`x zk{R~14>?&c^mgzPsAb#8Bs1)1H>PPJuR>n}XF(g=MkbkIKWpN^i=ZC>vp^nyNjMeD zG@AFb-5hum^g6H#MEHM@fxGZQ2!60GCl%9Kls!)0(Ya`+V~Gv?VrJS c;1Jjc>gEim7IWXK_p>%65;Bpsb~e1@f0=(`BLDyZ literal 4412 zcmeHKU1%It6uwPXQwtSsiQUw+u9}jXTC+2|JF{#5nBARCH}2ip?96UbwMf*6E#@hT ziqe8FA{YdHj6r=<2flmH z-0$3T=G=4V&P?*g-uP{VkhQT{w4(I%5>l%ePRXiMFoiW})`}*iQ7un2%yN!siX!5hPcZTtGt7g`nvS|~lg!7JBa7-)!&4lpOboN_CH$$2W;cco6BmC;nZO=jZ!_!^(T4R_FPZM&k2`yn;Q6o zz$@I24d$V5xwB<+H8cNF25`(PQ|Yvx()B<13vWI8 zHOPR;@>Z{x+e@(di{H>k&=-Jt;B&wiDVS9)xyzVSGn$?mfZ-_cFzWR9ErgswpndG^ z3^DL_TxM_34nztzl~wZoZd6kvaM%z0GeF4SgM?g0ACGt7T{4w|iObjr$G>eN00``KJE@qE_3~Ozc&^`hVj4#IS2j%up#i!AH(&>e4ZOD>It$Kn8a`4n(pOQYyz1b zm{PKp@np`+ET<$h@7>|~TZfZ-iR;U}mm@7;{B4Pwm#!n9AkRw^h; z&Jgw8dpsArk=X**XP^&{UhDc3@F#)uLwHos{|gMj?i_kwq+sF+;%p=2FmM!j6?g|Y z1u&TzCgjKMo*uQ8f{7={(g-161HS;V9fS-5JAiIQ3MMXN55CSf0^5NMFa|V%Zbb~{ zpCG(uU%>IVz!jhuYu^tH1!~Y~(8wpq1AJ3F7qU70poiOV%qH-hv9GJE%a}^4x;nPY zb8`YtvRuCaeTnOS5Y|74F&i-P^Y8-t*MXD3A;1?Yn7A8%#l$}RSquWBKnZ97OnUIg z@FM$T>OiDm;%=PQ@qGcz18)JRfwMrjA_Wtd@eTaTod7-qz68Dpeh0c0F<5Iix;2}< zmyjdCYrvbp`@p9_w-Whm{F4_tzI)|ReQh{4OU%shzKGLVJ)>#q7v%sU=j?IkWr{W^6H}Ic}$eE@1gmK<`x6xU<`9Dg_jEevO diff --git a/TESTS/DATOS_READONLY/fcl_optiongroup.sct b/TESTS/DATOS_READONLY/fcl_optiongroup.sct new file mode 100644 index 0000000000000000000000000000000000000000..c0e2cc233b10cec8a91c29c3d54457ea5694b46d GIT binary patch literal 4728 zcmeHKQE$^Q5bh+zL!~m{7esrmq9&mT9(aJR2&Ae*Y=C&0vNr7^wMms_6F(n2_T_x; zIdPw%Ql$9&oxi*D=W{w3y#6y749>*!|MzcJK<@p^pY!k6U$2(Ihad=&a551#X+K}5 zb($4Vc~utstf+g;mn{1CO?eOtPe#Kq4MpT?oqN zPR%Sczm}<87lN|MV%tbSSoR|%Y@pd0s1G7qDZ2nbiv58{x=RjZt)_+CTx(FaF|R?=(uq{e&#m%;qe^#;b~lQi+%je4fn(A?H3Ky4^QKg=dat3;@kVA%L%k;9!x*H zN=Do`esCI_?2|rzzIzX8vg8lu#s)1+g6okt~1t`BBJp=TTh0O*< zx9r>rq!1AA3F1H(t@qy4&;#P^xE=WTP7nvMwSA&rz34&%^biNQo*)i%(czuXY+z5NDT#kR_^y{u|^Lth&lZq`P0WLPj};BG7jF4gXuVk;?P< Dqm@aj literal 0 HcmV?d00001 diff --git a/TESTS/DATOS_READONLY/fcl_optiongroup.scx b/TESTS/DATOS_READONLY/fcl_optiongroup.scx new file mode 100644 index 0000000000000000000000000000000000000000..26eb74276e456beaa007c011c344338ed8b43aed GIT binary patch literal 1469 zcmeH{u};G<5Qa@DQmF(3EC>lH3=9lFQd*z`Lz=k4RW43rhl-&>2z6k9fd^z|x%u3E98Nf!nQ1iU!D_-QFJqwq;LF^MZDQVxr z6F=p#Hki?Yji)lpRbRxkDM{41|$y zi;sBAKuF$YIhwJQE1q8R5Vezl(;|)}WIpmDehfaW;BD}%f@3yxRl!fd#})h({HB7R zfln+vL;Elrp*yJg{?>Bzube;<;U+lh_HiLtSS zIxV-=ZF}xkk>Ch>zjz*3Bz-E_^8%mmhYh|CdqL1E)*Dt6zdIvNu}|Orra#B{aqnj5 OXiIgtVYB|uw*3w)3Slz< literal 0 HcmV?d00001 diff --git a/TESTS/DATOS_READONLY/lib_controles.vct b/TESTS/DATOS_READONLY/lib_controles.vct new file mode 100644 index 0000000000000000000000000000000000000000..8a748bb42a383bbc05caee5ef67ec824c53a3090 GIT binary patch literal 320800 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 A+yDRo literal 0 HcmV?d00001 diff --git a/TESTS/DATOS_READONLY/lib_controles.vcx b/TESTS/DATOS_READONLY/lib_controles.vcx new file mode 100644 index 0000000000000000000000000000000000000000..9df962dfa6e23b81e4cada8884fa8a07776e43b8 GIT binary patch literal 31880 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 literal 0 HcmV?d00001 diff --git a/TESTS/DATOS_READONLY/lib_controles2.vct b/TESTS/DATOS_READONLY/lib_controles2.vct new file mode 100644 index 0000000000000000000000000000000000000000..725cf648b317082dfa083886e6a75f21f5a116a1 GIT binary patch literal 3007 zcmeHJOK#gR5Oo$U3I{IQ8>m^OfGSAJ4_S2KUr+;a5=3gUDG<;yZ4;42fub6xm+NJE zkj~JgOxa3%fHnz%@V%Mga5#KatF`~L)oSg*`2X{7Rshfb-QDmu8eLyGpB=|J@_ZjK z#6NTeBdP27u5<1>C$1CV2wmq02jFdO_;&WdbIEu%7re|vjlRBNE1DL1_Nt$f!c6u8 z>T|V!c$4B#)7NPH~k0a^_-6g$3M^wA5Mkc_sxI>nNuQ zG{btU>u@m@OO_EyZz)kZ;F;XBsaybm29aYj8D&$tf+@`ISivA$n5bm?JmsR=%`t2q zYN0@|2#K|>l+edYxp`UDnT3^+PT7Q`Y>V0OTTPJ6z3uuNOPpgx% z@sT7cOH4^@#*{}%fmIcZc3sMpW$Hw+lD1p4AXEO-6i{E_^DTQR*dvt-Q8xK}g)R~= zEd@dJF=xo3 z{^--!j!{k$mZ4f%+jvT+PR%2L_RT(!(m*KV~%)nLFhr#K`O_B|wW;~k3&9J&MhbLCBUEwpqLTj4YA-kFvJBH)M&f!!taK9@kKDc1AY1I7=eEd?}HkfNXGE5 z5pVGYjk#`@+Lr5YjY+}iqn=k6A@p>N6O%>gt#51yZ{6BD^y=Orc0%+lVPgcJH!(!N; literal 0 HcmV?d00001 diff --git a/TESTS/DATOS_READONLY/lib_controles2.vcx b/TESTS/DATOS_READONLY/lib_controles2.vcx new file mode 100644 index 0000000000000000000000000000000000000000..e802f543c8b5eb81e4362f1a00a85568b7cc1a1a GIT binary patch literal 1359 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 A`~Uy| literal 0 HcmV?d00001 diff --git a/TESTS/PCT_DLL.dll b/TESTS/PCT_DLL.dll new file mode 100644 index 0000000000000000000000000000000000000000..4ef59591aa98bec36ac91ea72552129e12496b17 GIT binary patch literal 155648 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