11
май
If is less than the number of decimal digits required for the decimal portion of the returned string, CA-Clipper rounds the number to the available number of decimal places. If is specified but is omitted (no decimal places), the return value is rounded to an integer.
1. Mouse support
2. No more limits to string and array size
3. You can call any 32bit DLL
4. You can start to convert bits and pieces of the app to GUI. This is
important, think about it.. you don't have to wait for the entire app to
be converted for it to be usable! In fact, you may not wish to convert
everything to GUI.
Egx 30 engraver. 5. Full SQL support using SQLExpress (you can download SQLExpress from:
ftp://afaonline.com/sqlexpress/ file name SQLXPP02-1.ZIP).
Second point, Xbase++ includes 3 browse classes: TBrowse (100% Clipper
compatible), XbpBrowse (GUI version of TBrowse), and XbpQuickBrowse.
Converting a TBrowse to a full GUI XbpBrowse is (IMHO <g>) trivial since
XbpBrowse has many of the same methods including a :skipBlock. Below is an
example (taken from the online help).
Best regards,
Boris Borzic
-------------------------------------------------------------------------
#include 'Appevent.ch'
#include 'Common.ch'
#pragma Library( 'XppUi2.lib' )
PROCEDURE AppSys
// Desktop remains application window
RETURN
PROCEDURE Main
LOCAL nEvent, mp1, mp2, oXbp, oBrowse, cField, i
USE Customer NEW
// Create a hidden dialog window
oXbp := GuiStdDialog( 'Standard GUI Browser for DBF' )
// Create browser in the window
oBrowse := GuiBrowseDb( oXbp:drawingArea )
// Add columns for all fields of the database
FOR i:=1 TO FCount()
cField := FieldName( i )
oBrowse:addColumn( FieldBlock(cField), , cField )
NEXT
// The browser always fills the entire window after :resize()
oXbp:drawingArea:resize := ;
{ mp1,mp2,obj obj:childList()[1]:setSize(mp2) }
oXbp:show()
oBrowse:show()
SetAppFocus( oBrowse )
DO WHILE nEvent <> xbeP_Close
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
******************************************************************
* Create a GUI browser with navigation code blocks for a database
******************************************************************
FUNCTION GuiBrowseDB( oParent, aPos, aSize )
LOCAL oBrowse
oBrowse := XbpBrowse():new( oParent, aPos, aSize ):create()
// Navigation code blocks for the browser
oBrowse:skipBlock := { n DbSkipper(n) }
oBrowse:goTopBlock := { DbGoTop() }
oBrowse:goBottomBlock := { DbGoBottom() }
oBrowse:phyPosBlock := { Recno() }
// Navigation code blocks for the vertical scroll bar
oBrowse:posBlock := { OrdKeyNo() }
oBrowse:lastPosBlock := { LastRec() }
oBrowse:firstPosBlock := { 1 }
RETURN oBrowse
******************************************************************
* Create a hidden dialog window
******************************************************************
FUNCTION GuiStdDialog( cTitle )
LOCAL oDlg
DEFAULT cTitle TO 'Standard Dialog Window'
oDlg := XbpDialog():new( ,{10,10}, {600,400}, .F. )
oDlg:icon := 1
oDlg:taskList := .T.
oDlg:title := cTitle
oDlg:create()
oDlg:drawingArea:setFontCompoundName( '8.Helv' )
RETURN oDlg
If is less than the number of decimal digits required for the decimal portion of the returned string, CA-Clipper rounds the number to the available number of decimal places. If is specified but is omitted (no decimal places), the return value is rounded to an integer.
1. Mouse support
2. No more limits to string and array size
3. You can call any 32bit DLL
4. You can start to convert bits and pieces of the app to GUI. This is
important, think about it.. you don\'t have to wait for the entire app to
be converted for it to be usable! In fact, you may not wish to convert
everything to GUI.
Egx 30 engraver. 5. Full SQL support using SQLExpress (you can download SQLExpress from:
ftp://afaonline.com/sqlexpress/ file name SQLXPP02-1.ZIP).
Second point, Xbase++ includes 3 browse classes: TBrowse (100% Clipper
compatible), XbpBrowse (GUI version of TBrowse), and XbpQuickBrowse.
Converting a TBrowse to a full GUI XbpBrowse is (IMHO <g>) trivial since
XbpBrowse has many of the same methods including a :skipBlock. Below is an
example (taken from the online help).
Best regards,
Boris Borzic
-------------------------------------------------------------------------
#include \'Appevent.ch\'
#include \'Common.ch\'
#pragma Library( \'XppUi2.lib\' )
PROCEDURE AppSys
// Desktop remains application window
RETURN
PROCEDURE Main
LOCAL nEvent, mp1, mp2, oXbp, oBrowse, cField, i
USE Customer NEW
// Create a hidden dialog window
oXbp := GuiStdDialog( \'Standard GUI Browser for DBF\' )
// Create browser in the window
oBrowse := GuiBrowseDb( oXbp:drawingArea )
// Add columns for all fields of the database
FOR i:=1 TO FCount()
cField := FieldName( i )
oBrowse:addColumn( FieldBlock(cField), , cField )
NEXT
// The browser always fills the entire window after :resize()
oXbp:drawingArea:resize := ;
{ mp1,mp2,obj obj:childList()[1]:setSize(mp2) }
oXbp:show()
oBrowse:show()
SetAppFocus( oBrowse )
DO WHILE nEvent <> xbeP_Close
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
******************************************************************
* Create a GUI browser with navigation code blocks for a database
******************************************************************
FUNCTION GuiBrowseDB( oParent, aPos, aSize )
LOCAL oBrowse
oBrowse := XbpBrowse():new( oParent, aPos, aSize ):create()
// Navigation code blocks for the browser
oBrowse:skipBlock := { n DbSkipper(n) }
oBrowse:goTopBlock := { DbGoTop() }
oBrowse:goBottomBlock := { DbGoBottom() }
oBrowse:phyPosBlock := { Recno() }
// Navigation code blocks for the vertical scroll bar
oBrowse:posBlock := { OrdKeyNo() }
oBrowse:lastPosBlock := { LastRec() }
oBrowse:firstPosBlock := { 1 }
RETURN oBrowse
******************************************************************
* Create a hidden dialog window
******************************************************************
FUNCTION GuiStdDialog( cTitle )
LOCAL oDlg
DEFAULT cTitle TO \'Standard Dialog Window\'
oDlg := XbpDialog():new( ,{10,10}, {600,400}, .F. )
oDlg:icon := 1
oDlg:taskList := .T.
oDlg:title := cTitle
oDlg:create()
oDlg:drawingArea:setFontCompoundName( \'8.Helv\' )
RETURN oDlg
If is less than the number of decimal digits required for the decimal portion of the returned string, CA-Clipper rounds the number to the available number of decimal places. If is specified but is omitted (no decimal places), the return value is rounded to an integer.
1. Mouse support
2. No more limits to string and array size
3. You can call any 32bit DLL
4. You can start to convert bits and pieces of the app to GUI. This is
important, think about it.. you don\'t have to wait for the entire app to
be converted for it to be usable! In fact, you may not wish to convert
everything to GUI.
Egx 30 engraver. 5. Full SQL support using SQLExpress (you can download SQLExpress from:
ftp://afaonline.com/sqlexpress/ file name SQLXPP02-1.ZIP).
Second point, Xbase++ includes 3 browse classes: TBrowse (100% Clipper
compatible), XbpBrowse (GUI version of TBrowse), and XbpQuickBrowse.
Converting a TBrowse to a full GUI XbpBrowse is (IMHO <g>) trivial since
XbpBrowse has many of the same methods including a :skipBlock. Below is an
example (taken from the online help).
Best regards,
Boris Borzic
-------------------------------------------------------------------------
#include \'Appevent.ch\'
#include \'Common.ch\'
#pragma Library( \'XppUi2.lib\' )
PROCEDURE AppSys
// Desktop remains application window
RETURN
PROCEDURE Main
LOCAL nEvent, mp1, mp2, oXbp, oBrowse, cField, i
USE Customer NEW
// Create a hidden dialog window
oXbp := GuiStdDialog( \'Standard GUI Browser for DBF\' )
// Create browser in the window
oBrowse := GuiBrowseDb( oXbp:drawingArea )
// Add columns for all fields of the database
FOR i:=1 TO FCount()
cField := FieldName( i )
oBrowse:addColumn( FieldBlock(cField), , cField )
NEXT
// The browser always fills the entire window after :resize()
oXbp:drawingArea:resize := ;
{ mp1,mp2,obj obj:childList()[1]:setSize(mp2) }
oXbp:show()
oBrowse:show()
SetAppFocus( oBrowse )
DO WHILE nEvent <> xbeP_Close
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
******************************************************************
* Create a GUI browser with navigation code blocks for a database
******************************************************************
FUNCTION GuiBrowseDB( oParent, aPos, aSize )
LOCAL oBrowse
oBrowse := XbpBrowse():new( oParent, aPos, aSize ):create()
// Navigation code blocks for the browser
oBrowse:skipBlock := { n DbSkipper(n) }
oBrowse:goTopBlock := { DbGoTop() }
oBrowse:goBottomBlock := { DbGoBottom() }
oBrowse:phyPosBlock := { Recno() }
// Navigation code blocks for the vertical scroll bar
oBrowse:posBlock := { OrdKeyNo() }
oBrowse:lastPosBlock := { LastRec() }
oBrowse:firstPosBlock := { 1 }
RETURN oBrowse
******************************************************************
* Create a hidden dialog window
******************************************************************
FUNCTION GuiStdDialog( cTitle )
LOCAL oDlg
DEFAULT cTitle TO \'Standard Dialog Window\'
oDlg := XbpDialog():new( ,{10,10}, {600,400}, .F. )
oDlg:icon := 1
oDlg:taskList := .T.
oDlg:title := cTitle
oDlg:create()
oDlg:drawingArea:setFontCompoundName( \'8.Helv\' )
RETURN oDlg