home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 16 / CD_ASCQ_16_0994.iso / news / 4611 / fw16d.ins / IDE / SOURCE / INDEX.PRG < prev    next >
Text File  |  1994-06-05  |  2KB  |  88 lines

  1. #include "FiveWin.ch"
  2.  
  3. #define ID_NAME     110
  4. #define ID_FIND     120
  5. #define ID_EXPR     130
  6. #define ID_BUILD    140
  7. #define ID_WORKAREA 150
  8. #define ID_METER    160
  9. #define ID_START    180
  10.  
  11. #define ID_EXPTYPE  240
  12. #define ID_LSTEXPR  250
  13.  
  14. #define TAB      Chr(9)
  15.  
  16. //----------------------------------------------------------------------------//
  17.  
  18. function IdxBuilder()
  19.  
  20.    local oDlg, oIndex, oExpr
  21.    local cIndex  := PadR( "*.ntx", 50 )
  22.    local cExpr   := Space( 100 )
  23.    local cArea   := Alias()
  24.    local nPos, oMeter
  25.  
  26.    DEFINE DIALOG oDlg RESOURCE "IdxBuilder"
  27.  
  28.    REDEFINE GET oIndex VAR cIndex ID ID_NAME OF oDlg
  29.  
  30.    REDEFINE GET oExpr  VAR cExpr  ID ID_EXPR OF oDlg
  31.  
  32.    REDEFINE BUTTON ID ID_FIND OF oDlg ;
  33.       ACTION ( cIndex := PadR( cGetFile( "*.ntx",;
  34.                "Select Index file" ), 50 ),;
  35.                If( ! Empty( cIndex ) .and. File( cIndex ),;
  36.                oExpr:VarPut( cNtxKey( cIndex ) ),),;
  37.                oExpr:Refresh(), oIndex:Refresh() )
  38.  
  39.    REDEFINE BUTTON ID ID_BUILD OF oDlg ;
  40.       ACTION ( cExpr := cGetExpression( cExpr ), oExpr:Refresh() )
  41.  
  42.    REDEFINE COMBOBOX cArea ITEMS aGetWorkAreas() ID ID_WORKAREA OF oDlg
  43.  
  44.    REDEFINE METER oMeter VAR nPos ID ID_METER OF oDlg
  45.  
  46.    REDEFINE BUTTON ID ID_START OF oDlg ;
  47.       ACTION If( ! Empty( cArea ) .and. ! Empty( cExpr ),;
  48.                  ( cArea )->( BuildIndex( cIndex, cExpr, oMeter ) ),)
  49.  
  50.    ACTIVATE DIALOG oDlg CENTERED
  51.  
  52. return nil
  53.  
  54. //----------------------------------------------------------------------------//
  55.  
  56. static function ExprSelect( cType, aSymbols )
  57.  
  58.    local oDlg
  59.    local cExpr := ""
  60.  
  61.    DEFINE DIALOG oDlg RESOURCE "Functions"
  62.  
  63.    REDEFINE SAY PROMPT cType ID ID_EXPTYPE OF oDlg
  64.  
  65.    REDEFINE LISTBOX cExpr ITEMS aSymbols ID ID_LSTEXPR OF oDlg
  66.  
  67.    ACTIVATE DIALOG oDlg CENTERED
  68.  
  69. return nil
  70.  
  71. //----------------------------------------------------------------------------//
  72.  
  73. static function BuildIndex( cFile, cExpr, oMeter )
  74.  
  75.    local bExpr  := &( "{||" + cExpr + "}" )
  76.    local bIndex := { || oMeter:VarPut( RecNo() ),;
  77.                         oMeter:Refresh( .f. ), SysRefresh(), Eval( bExpr ) }
  78.  
  79.    oMeter:nTotal = RecCount()
  80.  
  81.    DbCreateIndex( cFile, cExpr, bIndex, If( .f., .t.,) )
  82.  
  83.    MsgInfo( "Index successfully created" )
  84.  
  85. return nil
  86.  
  87. //----------------------------------------------------------------------------//
  88.