diff --git a/TESTS/DATOS_READONLY/fb2p_foxuser.frx b/TESTS/DATOS_READONLY/fb2p_foxuser.frx
index 30c5a28..8bef768 100644
Binary files a/TESTS/DATOS_READONLY/fb2p_foxuser.frx and b/TESTS/DATOS_READONLY/fb2p_foxuser.frx differ
diff --git a/TESTS/DATOS_READONLY/fb2p_frm_1.sct b/TESTS/DATOS_READONLY/fb2p_frm_1.sct
index f915341..e948eac 100644
Binary files a/TESTS/DATOS_READONLY/fb2p_frm_1.sct and b/TESTS/DATOS_READONLY/fb2p_frm_1.sct differ
diff --git a/TESTS/DATOS_READONLY/fb2p_frm_1.scx b/TESTS/DATOS_READONLY/fb2p_frm_1.scx
index 9a9d709..8be9bfa 100644
Binary files a/TESTS/DATOS_READONLY/fb2p_frm_1.scx and b/TESTS/DATOS_READONLY/fb2p_frm_1.scx differ
diff --git a/TESTS/DATOS_READONLY/fb2p_test.vct b/TESTS/DATOS_READONLY/fb2p_test.vct
index 8950d4b..a112e25 100644
Binary files a/TESTS/DATOS_READONLY/fb2p_test.vct and b/TESTS/DATOS_READONLY/fb2p_test.vct differ
diff --git a/TESTS/DATOS_READONLY/fb2p_test.vcx b/TESTS/DATOS_READONLY/fb2p_test.vcx
index 5197858..e63441a 100644
Binary files a/TESTS/DATOS_READONLY/fb2p_test.vcx and b/TESTS/DATOS_READONLY/fb2p_test.vcx differ
diff --git a/foxbin2prg.pj2 b/foxbin2prg.pj2
index 5b1f785..05c4aac 100644
--- a/foxbin2prg.pj2
+++ b/foxbin2prg.pj2
@@ -26,7 +26,7 @@ _LegalTrademark = "Open Source"
_ProductName = " FOXBIN2PRG"
_MajorVer = "1"
_MinorVer = "19"
-_Revision = " 310"
+_Revision = " 312"
_LanguageID = "1034"
_AutoIncrement = "1"
*
diff --git a/foxbin2prg.pjt b/foxbin2prg.pjt
index 490ddaf..106fc0d 100644
Binary files a/foxbin2prg.pjt and b/foxbin2prg.pjt differ
diff --git a/foxbin2prg.pjx b/foxbin2prg.pjx
index 6c6ee34..e72330d 100644
Binary files a/foxbin2prg.pjx and b/foxbin2prg.pjx differ
diff --git a/foxbin2prg.prg b/foxbin2prg.prg
index d1e71c8..6b224a4 100644
--- a/foxbin2prg.prg
+++ b/foxbin2prg.prg
@@ -79,6 +79,7 @@
* 04/03/2014 FDBOZZO v1.19.15 Arreglo bugs: OLE TX2 legacy / NoTimestamp=0 / DBFs backlink
* 07/03/2014 FDBOZZO v1.19.16 Arreglo bugs: Propiedades y métodos Hidden/Protected que no se generan /// Crash métodos vacíos
* 16/03/2014 FDBOZZO v1.19.17 Arreglo bugs frx/lbx: Expresiones con comillas // comment multilínea // Mejora tag2 para Tooltips // Arreglo bugs mnx
+* 22/03/2014 FDBOZZO v1.19.18 Arreglo bug vcx/scx: Las imágenes no mantienen sus dimensiones programadas y asumen sus dimensiones reales // El comentario a nivel de librería se pierde
*
*
*---------------------------------------------------------------------------------------------------
@@ -101,6 +102,8 @@
* 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)
*
*
*---------------------------------------------------------------------------------------------------
@@ -156,6 +159,8 @@ LPARAMETERS tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDeb
#DEFINE C_LEN_END_OBJECT_I LEN(C_END_OBJECT_I)
#DEFINE C_FB2PRG_META_I '*< FOXBIN2PRG:'
#DEFINE C_FB2PRG_META_F '/>'
+#DEFINE C_LIBCOMMENT_I '*< LIBCOMMENT:'
+#DEFINE C_LIBCOMMENT_F '/>'
#DEFINE C_DEFINE_CLASS 'DEFINE CLASS'
#DEFINE C_ENDDEFINE 'ENDDEFINE'
#DEFINE C_TEXT 'TEXT'
@@ -351,19 +356,21 @@ ADDPROPERTY(_SCREEN, 'ExitCode', lnResp)
* RETURN lnResp
*ENDIF
+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
+ STORE NULL TO loEx, loCnv
+ RELEASE loEx, loCnv
+ RETURN lnResp
ENDIF
-loEx = NULL
-loCnv = NULL
-RELEASE loEx, loCnv
-
-SET COVERAGE TO
-RETURN lnResp
-QUIT
*******************************************************************************************************************
@@ -1586,6 +1593,7 @@ DEFINE CLASS c_conversor_base AS SESSION
#ENDIF
_MEMBERDATA = [] ;
+ [] ;
+ + [] ;
+ [] ;
+ [] ;
+ [] ;
@@ -1605,6 +1613,7 @@ DEFINE CLASS c_conversor_base AS SESSION
+ [] ;
+ [] ;
+ [] ;
+ + [] ;
+ [] ;
+ [] ;
+ [] ;
@@ -1625,6 +1634,7 @@ DEFINE CLASS c_conversor_base AS SESSION
+ []
+ DIMENSION a_SpecialProps(1)
l_Debug = .F.
l_Test = .F.
c_InputFile = ''
@@ -1658,6 +1668,8 @@ 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")
+
+ THIS.SortSpecialProps()
ENDPROC
@@ -2295,277 +2307,35 @@ DEFINE CLASS c_conversor_base AS SESSION
* tcPropName (!v IN ) Nombre de la propiedad
*--------------------------------------------------------------------------------------------------------------
LPARAMETERS tcOperation, tcPropName
- LOCAL lcPropName
- lcPropName = tcPropName
- tcOperation = UPPER(EVL(tcOperation,''))
- *-- Por defecto son todas System Properties
- DO CASE
- CASE tcOperation == 'GETNAME'
- lcPropName = SUBSTR(tcPropName,5)
- CASE NOT tcOperation == 'SETNAME'
- ERROR C_ONLY_SETNAME_AND_GETNAME_RECOGNIZED_LOC
- CASE lcPropName == 'FRXDataSession' && En un VCX lo ví primero de todo y también luego de Height ¿?
- lcPropName = 'A001' + lcPropName
- CASE lcPropName == 'ErasePage' && PageFrame: Debe estar antes que PageCount
- lcPropName = 'A002' + lcPropName
- CASE lcPropName == 'PageCount' && PageFrame: Debe estar antes que ActivePage
- lcPropName = 'A003' + lcPropName
- CASE lcPropName == 'ActivePage' && PageFrame: Debe estar antes que Top/Left/With/Height
- lcPropName = 'A004' + lcPropName
- CASE lcPropName == 'ButtonCount'
- lcPropName = 'A005' + lcPropName
- CASE lcPropName == 'ColumnCount'
- lcPropName = 'A010' + lcPropName
- CASE lcPropName == 'Value'
- lcPropName = 'A015' + lcPropName
- CASE lcPropName == 'Comment'
- lcPropName = 'A020' + lcPropName
- CASE lcPropName == 'ControlSource'
- lcPropName = 'A025' + lcPropName
- CASE lcPropName == 'DataSession'
- lcPropName = 'A030' + lcPropName
- CASE lcPropName == 'DeleteMark'
- lcPropName = 'A035' + lcPropName
- CASE lcPropName == 'ScaleMode'
- lcPropName = 'A040' + lcPropName
- CASE lcPropName == 'Tag'
- lcPropName = 'A045' + lcPropName
- CASE lcPropName == 'DefTop' && Propiedad con evaluación: Debe estar antes que Top
- lcPropName = 'A046' + lcPropName
- CASE lcPropName == 'DefLeft' && Propiedad con evaluación: Debe estar antes que Left
- lcPropName = 'A047' + lcPropName
- CASE lcPropName == 'DefHeight' && Propiedad con evaluación: Debe estar antes que Height
- lcPropName = 'A048' + lcPropName
- CASE lcPropName == 'DefWidth' && Propiedad con evaluación: Debe estar antes que Width
- lcPropName = 'A049' + lcPropName
- CASE lcPropName == 'Top'
- lcPropName = 'A050' + lcPropName
- CASE lcPropName == 'Left'
- lcPropName = 'A055' + lcPropName
- CASE lcPropName == 'Height'
- lcPropName = 'A060' + lcPropName
- CASE lcPropName == 'Width'
- lcPropName = 'A065' + lcPropName
- CASE lcPropName == 'MaxLength'
- lcPropName = 'A070' + lcPropName
- CASE lcPropName == 'Alias'
- lcPropName = 'A075' + lcPropName
- CASE lcPropName == 'BufferModeOverride'
- lcPropName = 'A080' + lcPropName
- CASE lcPropName == 'Order'
- lcPropName = 'A085' + lcPropName
- CASE lcPropName == 'OrderDirection'
- lcPropName = 'A090' + lcPropName
- CASE lcPropName == 'CursorSource'
- lcPropName = 'A095' + lcPropName
- CASE lcPropName == 'Exclusive'
- lcPropName = 'A100' + lcPropName
- CASE lcPropName == 'Filter'
- lcPropName = 'A105' + lcPropName
- CASE lcPropName == 'Panel'
- lcPropName = 'A110' + lcPropName
- CASE lcPropName == 'ReadOnly'
- lcPropName = 'A115' + lcPropName
- CASE lcPropName == 'RecordSource'
- lcPropName = 'A120' + lcPropName
- CASE lcPropName == 'RecordSourceType'
- lcPropName = 'A125' + lcPropName
- CASE lcPropName == 'NoDataOnLoad'
- lcPropName = 'A130' + lcPropName
- CASE lcPropName == 'OpenViews'
- lcPropName = 'A135' + lcPropName
- CASE lcPropName == 'AutoOpenTables'
- lcPropName = 'A140' + lcPropName
- CASE lcPropName == 'AutoCloseTables'
- lcPropName = 'A145' + lcPropName
- CASE lcPropName == 'InitialSelectedAlias'
- lcPropName = 'A150' + lcPropName
- CASE lcPropName == 'DataSource'
- lcPropName = 'A155' + lcPropName
- CASE lcPropName == 'DataSourceType '
- lcPropName = 'A160' + lcPropName
- CASE lcPropName == 'Desktop'
- lcPropName = 'A165' + lcPropName
- CASE lcPropName == 'ShowWindow'
- lcPropName = 'A170' + lcPropName
- CASE lcPropName == 'ScrollBars'
- lcPropName = 'A175' + lcPropName
- CASE lcPropName == 'ShowInTaskBar'
- lcPropName = 'A180' + lcPropName
- CASE lcPropName == 'DoCreate'
- lcPropName = 'A185' + lcPropName
- CASE lcPropName == 'Tag'
- lcPropName = 'A190' + lcPropName
- CASE lcPropName == 'OLEDragMode'
- lcPropName = 'A195' + lcPropName
- CASE lcPropName == 'OLEDragPicture'
- lcPropName = 'A200' + lcPropName
- CASE lcPropName == 'OLEDropMode'
- lcPropName = 'A205' + lcPropName
- CASE lcPropName == 'OLEDropEffects'
- lcPropName = 'A210' + lcPropName
- CASE lcPropName == 'ShowTips'
- lcPropName = 'A215' + lcPropName
- CASE lcPropName == 'BufferMode'
- lcPropName = 'A220' + lcPropName
- CASE lcPropName == 'AutoCenter'
- lcPropName = 'A225' + lcPropName
- CASE lcPropName == 'AutoSize'
- lcPropName = 'A230' + lcPropName
- CASE lcPropName == 'WordWrap'
- lcPropName = 'A235' + lcPropName
- CASE lcPropName == 'Picture'
- lcPropName = 'A240' + lcPropName
- CASE lcPropName == 'BackStyle'
- lcPropName = 'A245' + lcPropName
- CASE lcPropName == 'BorderStyle'
- lcPropName = 'A250' + lcPropName
- CASE lcPropName == 'BorderWidth'
- lcPropName = 'A255' + lcPropName
- CASE lcPropName == 'Caption'
- lcPropName = 'A260' + lcPropName
- CASE lcPropName == 'ControlBox'
- lcPropName = 'A265' + lcPropName
- CASE lcPropName == 'Closable'
- lcPropName = 'A270' + lcPropName
- CASE lcPropName == 'Curvature'
- lcPropName = 'A275' + lcPropName
- CASE lcPropName == 'FontBold'
- lcPropName = 'A280' + lcPropName
- CASE lcPropName == 'FontCondense'
- lcPropName = 'A285' + lcPropName
- CASE lcPropName == 'FontExtend'
- lcPropName = 'A290' + lcPropName
- CASE lcPropName == 'FontItalic'
- lcPropName = 'A295' + lcPropName
- CASE lcPropName == 'FontName'
- lcPropName = 'A300' + lcPropName
- CASE lcPropName == 'FontOutline'
- lcPropName = 'A305' + lcPropName
- CASE lcPropName == 'FontShadow'
- lcPropName = 'A310' + lcPropName
- CASE lcPropName == 'FontSize'
- lcPropName = 'A315' + lcPropName
- CASE lcPropName == 'FontStrikethru'
- lcPropName = 'A320' + lcPropName
- CASE lcPropName == 'FontUnderline'
- lcPropName = 'A325' + lcPropName
- CASE lcPropName == 'HalfHeightCaption'
- lcPropName = 'A330' + lcPropName
- CASE lcPropName == 'Margin'
- lcPropName = 'A335' + lcPropName
- CASE lcPropName == 'MaxButton'
- lcPropName = 'A340' + lcPropName
- CASE lcPropName == 'MinButton'
- lcPropName = 'A345' + lcPropName
- CASE lcPropName == 'Movable'
- lcPropName = 'A350' + lcPropName
- CASE lcPropName == 'MaxHeight'
- lcPropName = 'A355' + lcPropName
- CASE lcPropName == 'MaxWidth'
- lcPropName = 'A360' + lcPropName
- CASE lcPropName == 'MinHeight'
- lcPropName = 'A365' + lcPropName
- CASE lcPropName == 'MinWidth'
- lcPropName = 'A370' + lcPropName
- CASE lcPropName == 'MaxTop'
- lcPropName = 'A375' + lcPropName
- CASE lcPropName == 'MaxLeft'
- lcPropName = 'A380' + lcPropName
- CASE lcPropName == 'MDIForm'
- lcPropName = 'A385' + lcPropName
- CASE lcPropName == 'MousePointer'
- lcPropName = 'A390' + lcPropName
- CASE lcPropName == 'MouseIcon'
- lcPropName = 'A395' + lcPropName
- CASE lcPropName == 'Visible'
- lcPropName = 'A400' + lcPropName
- CASE lcPropName == 'ClipControls'
- lcPropName = 'A405' + lcPropName
- CASE lcPropName == 'DrawMode'
- lcPropName = 'A410' + lcPropName
- CASE lcPropName == 'DrawStyle'
- lcPropName = 'A415' + lcPropName
- CASE lcPropName == 'DrawWidth'
- lcPropName = 'A420' + lcPropName
- CASE lcPropName == 'FillStyle'
- lcPropName = 'A425' + lcPropName
- CASE lcPropName == 'Enabled'
- lcPropName = 'A430' + lcPropName
- CASE lcPropName == 'Icon'
- lcPropName = 'A435' + lcPropName
- CASE lcPropName == 'KeyPreview'
- lcPropName = 'A440' + lcPropName
- CASE lcPropName == 'TabIndex'
- lcPropName = 'A445' + lcPropName
- CASE lcPropName == 'TabStop'
- lcPropName = 'A450' + lcPropName
- CASE lcPropName == 'TitleBar'
- lcPropName = 'A455' + lcPropName
- CASE lcPropName == 'WindowType'
- lcPropName = 'A460' + lcPropName
- CASE lcPropName == 'WindowState'
- lcPropName = 'A465' + lcPropName
- CASE lcPropName == 'LockScreen'
- lcPropName = 'A470' + lcPropName
- CASE lcPropName == 'AlwaysOnTop'
- lcPropName = 'A475' + lcPropName
- CASE lcPropName == 'AlwaysOnBottom'
- lcPropName = 'A480' + lcPropName
- CASE lcPropName == 'SizeBox'
- lcPropName = 'A485' + lcPropName
- CASE lcPropName == 'SpecialEffect'
- lcPropName = 'A490' + lcPropName
- CASE lcPropName == 'ZoomBox'
- lcPropName = 'A495' + lcPropName
- CASE lcPropName == 'ZOrderSet'
- lcPropName = 'A500' + lcPropName
- CASE lcPropName == 'HelpContextID'
- lcPropName = 'A505' + lcPropName
- CASE lcPropName == 'WhatsThisHelpID'
- lcPropName = 'A510' + lcPropName
- CASE lcPropName == 'WhatsThisHelp'
- lcPropName = 'A515' + lcPropName
- CASE lcPropName == 'WhatsThisButton'
- lcPropName = 'A520' + lcPropName
- CASE lcPropName == 'RightToLeft'
- lcPropName = 'A525' + lcPropName
- CASE lcPropName == 'DefOleLCID'
- lcPropName = 'A530' + lcPropName
- CASE lcPropName == 'MacDesktop'
- lcPropName = 'A535' + lcPropName
- CASE lcPropName == 'ColorSource'
- lcPropName = 'A540' + lcPropName
- CASE lcPropName == 'ForeColor'
- lcPropName = 'A545' + lcPropName
- CASE lcPropName == 'DisableForeColor'
- lcPropName = 'A550' + lcPropName
- CASE lcPropName == 'BackColor'
- lcPropName = 'A555' + lcPropName
- CASE lcPropName == 'FillColor'
- lcPropName = 'A560' + lcPropName
- CASE lcPropName == 'HScrollSmallChange'
- lcPropName = 'A565' + lcPropName
- CASE lcPropName == 'VScrollSmallChange'
- lcPropName = 'A570' + lcPropName
- CASE lcPropName == 'ContinuousScroll'
- lcPropName = 'A575' + lcPropName
- CASE lcPropName == 'Themes'
- lcPropName = 'A580' + lcPropName
- CASE lcPropName == 'BindControls'
- lcPropName = 'A585' + lcPropName
- CASE lcPropName == 'AllowOutput'
- lcPropName = 'A590' + lcPropName
- CASE lcPropName == 'Dockable'
- lcPropName = 'A595' + lcPropName
- CASE lcPropName == '_memberdata'
- lcPropName = 'A995' + lcPropName
- CASE lcPropName == 'Name' && System "Name" property
- lcPropName = 'A999' + lcPropName
- OTHERWISE && User Property
- lcPropName = 'A998' + lcPropName
- ENDCASE
+ TRY
+ LOCAL lcPropName, lnPos, loEx as Exception
+ lcPropName = tcPropName
+ tcOperation = UPPER(EVL(tcOperation,''))
+
+ DO CASE
+ CASE tcOperation == 'GETNAME'
+ lcPropName = SUBSTR(tcPropName,5)
+
+ CASE NOT tcOperation == 'SETNAME'
+ ERROR C_ONLY_SETNAME_AND_GETNAME_RECOGNIZED_LOC
+
+ CASE lcPropName == 'Name' && System "Name" property
+ lcPropName = 'A999' + lcPropName
+
+ OTHERWISE
+ lnPos = ASCAN( THIS.a_SpecialProps, lcPropName, 1, 0, 1, 1+2+4 )
+ lcPropName = 'A' + PADL( EVL(lnPos,998), 3, '0' ) + lcPropName
+ ENDCASE
+
+ CATCH TO loEx
+ IF THIS.l_Debug AND _VFP.STARTMODE = 0
+ SET STEP ON
+ ENDIF
+
+ THROW
+
+ ENDTRY
RETURN lcPropName
ENDPROC
@@ -2696,6 +2466,158 @@ DEFINE CLASS c_conversor_base AS SESSION
RETURN
ENDPROC
+
+
+
+ PROTECTED PROCEDURE SortSpecialProps_Add
+ LPARAMETERS tcPropName, I
+ I = I + 1
+ DIMENSION THIS.a_SpecialProps(I)
+ THIS.a_SpecialProps(I) = tcPropName
+ ENDPROC
+
+
+
+ PROCEDURE SortSpecialProps
+ LOCAL I
+ I = 0
+
+ WITH THIS AS conversor_base OF "FOXBIN2PRG.PRG"
+ .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
+ ENDWITH
+ ENDPROC
*******************************************************************************************************************
@@ -2718,12 +2640,14 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
#IF .F.
LOCAL THIS AS c_conversor_prg_a_bin OF 'FOXBIN2PRG.PRG'
#ENDIF
+
_MEMBERDATA = [] ;
+ [] ;
+ [] ;
+ [] ;
+ [] ;
+ [] ;
+ + [] ;
+ [] ;
+ [] ;
+ [] ;
@@ -3040,6 +2964,26 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
ENDPROC
+
+ PROCEDURE analizarBloque_LIBCOMMENT
+ *------------------------------------------------------
+ *-- Analiza el bloque *
+ *------------------------------------------------------
+ LPARAMETERS toModulo, tcLine, taCodeLines, I, tnCodeLines
+
+ LOCAL llBloqueEncontrado, laPropsAndValues(1,2), lnPropsAndValues_Count
+
+ IF LEFT( tcLine, LEN(C_LIBCOMMENT_I) ) == C_LIBCOMMENT_I
+ llBloqueEncontrado = .T.
+
+ *-- Metadatos del módulo
+ toModulo._Comment = ALLTRIM( STREXTRACT( tcLine, C_LIBCOMMENT_I, C_LIBCOMMENT_F ) )
+ ENDIF
+
+ RETURN llBloqueEncontrado
+ ENDPROC
+
+
*******************************************************************************************************************
PROCEDURE createProject
@@ -3161,15 +3105,22 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
*******************************************************************************************************************
PROCEDURE createClasslib_RecordHeader
+ LPARAMETERS toModulo
+
+ #IF .F.
+ LOCAL toModulo AS CL_MODULO OF 'FOXBIN2PRG.PRG'
+ #ENDIF
INSERT INTO TABLABIN ;
( PLATFORM ;
, UNIQUEID ;
- , RESERVED1 ) ;
+ , RESERVED1 ;
+ , RESERVED7 ) ;
VALUES ;
( 'COMMENT' ;
, 'Class' ;
- , 'VERSION = 3.00' )
+ , 'VERSION = 3.00' ;
+ , toModulo._Comment )
ENDPROC
@@ -3209,15 +3160,22 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
*******************************************************************************************************************
PROCEDURE createForm_RecordHeader
+ LPARAMETERS toModulo
+
+ #IF .F.
+ LOCAL toModulo AS CL_MODULO OF 'FOXBIN2PRG.PRG'
+ #ENDIF
INSERT INTO TABLABIN ;
( PLATFORM ;
, UNIQUEID ;
- , RESERVED1 ) ;
+ , RESERVED1 ;
+ , RESERVED7 ) ;
VALUES ;
( 'COMMENT' ;
, 'Screen' ;
- , 'VERSION = 3.00' )
+ , 'VERSION = 3.00' ;
+ , toModulo._Comment )
ENDPROC
@@ -4692,7 +4650,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
TRY
LOCAL I, loEx AS EXCEPTION ;
- , llFoxBin2Prg_Completed, llOLE_DEF_Completed, llINCLUDE_SCX_Completed ;
+ , llFoxBin2Prg_Completed, llOLE_DEF_Completed, llINCLUDE_SCX_Completed, llLIBCOMMENT_Completed ;
, lc_Comentario, lcProcedureAbierto, lcLine ;
, loClase AS CL_CLASE OF 'FOXBIN2PRG.PRG'
@@ -4719,6 +4677,9 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
CASE NOT llFoxBin2Prg_Completed AND .analizarBloque_FoxBin2Prg( toModulo, @lcLine, @taCodeLines, @I, tnCodeLines )
llFoxBin2Prg_Completed = .T.
+ CASE NOT llLIBCOMMENT_Completed AND .analizarBloque_LIBCOMMENT( toModulo, @lcLine, @taCodeLines, @I, tnCodeLines )
+ llLIBCOMMENT_Completed = .T.
+
CASE NOT llOLE_DEF_Completed AND .analizarBloque_OLE_DEF( @toModulo, @lcLine, @taCodeLines ;
, @I, tnCodeLines, @lcProcedureAbierto )
*-- Puede haber varios
@@ -4905,7 +4866,7 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin
loFSO = .oFSO
*-- Creo el registro de cabecera
- .createClasslib_RecordHeader()
+ .createClasslib_RecordHeader( toModulo )
*-- Recorro las CLASES
@@ -5196,7 +5157,7 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin
WITH THIS AS c_conversor_prg_a_scx OF 'FOXBIN2PRG.PRG'
*-- Creo el registro de cabecera
- .createForm_RecordHeader()
+ .createForm_RecordHeader( toModulo )
*-- El SCX tiene el INCLUDE en el primer registro
IF NOT EMPTY(toModulo._includeFile)
@@ -8783,6 +8744,17 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg
*----------------------------------------------
SELECT TABLABIN
SET ORDER TO PARENT_OBJ
+ GOTO RECORD 1 && Class Library Header/Form Header
+
+ SCATTER FIELDS RESERVED7 MEMO NAME loRegClass
+
+ IF NOT EMPTY(loRegClass.RESERVED7) THEN
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
+ <> <> <>
+ *
+ ENDTEXT
+ ENDIF
+
SCAN ALL FOR TABLABIN.PLATFORM = "WINDOWS" AND TABLABIN.RESERVED1=="Class"
SCATTER MEMO NAME loRegClass
@@ -8989,9 +8961,17 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg
*----------------------------------------------
SELECT TABLABIN
SET ORDER TO PARENT_OBJ
- GOTO RECORD 1
+ GOTO RECORD 1 && Class Library Header/Form Header
+
+ SCATTER FIELDS RESERVED8,RESERVED7 MEMO NAME loRegClass
+
+ IF NOT EMPTY(loRegClass.RESERVED7) THEN
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
+ <> <> <>
+ *
+ ENDTEXT
+ ENDIF
- SCATTER FIELDS RESERVED8 MEMO NAME loRegClass
IF NOT EMPTY(loRegClass.RESERVED8) THEN
TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
@@ -10465,8 +10445,9 @@ DEFINE CLASS CL_MODULO AS CL_CUS_BASE
+ [] ;
+ [] ;
+ [] ;
+ + [] ;
+ + [] ;
+ [] ;
- + [] ;
+ [] ;
+ [] ;
+ []
@@ -10478,6 +10459,7 @@ DEFINE CLASS CL_MODULO AS CL_CUS_BASE
_Ole_Obj_count = 0
_Clases_Count = 0
_includeFile = ''
+ _Comment = ''
************************************************************************************************