home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 16 / CD_ASCQ_16_0994.iso / news / 4611 / fw16d.ins / SAMPLES / IDXBUILD.PRG < prev    next >
Text File  |  1994-02-10  |  4KB  |  119 lines

  1. #include "FiveWin.ch"
  2. #include "IdxBuild.ch"
  3.  
  4. #define TAB    Chr(9)
  5.  
  6. //----------------------------------------------------------------------------//
  7.  
  8. function Main()
  9.  
  10.    local oDlg, oLbxFields
  11.    local cIndex  := PadR( "*.ntx", 50 )
  12.    local cDbf    := ""
  13.    local cField  := ""
  14.    local cDriver := "DbfNtx"
  15.  
  16.    SET 3DLOOK ON
  17.  
  18.    DEFINE DIALOG oDlg RESOURCE "IdxBuilder"
  19.  
  20.    REDEFINE GET cIndex ID ID_NAME OF oDlg
  21.  
  22.    REDEFINE BUTTON ID ID_PATH OF oDlg ACTION cGetFile( "*.ntx", "Select Indexes path" )
  23.  
  24.    REDEFINE LISTBOX cDbf FILES "*.dbf" ID ID_DBFS OF oDlg ;
  25.       ON CHANGE ShowFields( cDbf, oLbxFields )
  26.  
  27.    REDEFINE LISTBOX oLbxFields VAR cField ID ID_FIELDS OF oDlg
  28.  
  29.    REDEFINE BUTTON ID ID_MATH OF oDlg ;
  30.       ACTION ExprSelect( "Math Expression",;
  31.                          { "Abs()" + TAB + "Absolute value",;
  32.                            "Int()" + TAB + "Int value",;
  33.                            "<  Less than",;
  34.                            ">  More than",;
  35.                            "== Equal to",;
  36.                            "<> Not equal to",;
  37.                            "*", "/" } )
  38.  
  39.    REDEFINE BUTTON ID ID_LOGICAL OF oDlg ;
  40.       ACTION ExprSelect( "Logical expression",;
  41.                          { "()"  + TAB + "Grouping indicator",;
  42.                            "AND" + TAB + ".and. expression",;
  43.                            "OR"  + TAB + ".or.  expression",;
  44.                            "NOT" + TAB + ".not. expression",;
  45.                            "<"   + TAB + "Less than",;
  46.                            ">"   + TAB + "More than",;
  47.                            "=="  + TAB + "Equal to",;
  48.                            "<>"  + TAB + "Not equal to" } )
  49.  
  50.    REDEFINE BUTTON ID ID_STRING OF oDlg ;
  51.       ACTION ExprSelect( "Character expression",;
  52.                          { "AllTrim()" + TAB + "Remove blanks",;
  53.                            "Chr()"     + TAB + "Chr from ascii",;
  54.                            "PadC()"    + TAB + "Fill center",;
  55.                            "PadL()"    + TAB + "Fill left side",;
  56.                            "PadR()"    + TAB + "Fill right side",;
  57.                            "RTrim()"   + TAB + "Remove right blanks",;
  58.                            "SubStr()"  + TAB + "Extract from",;
  59.                            "==" + TAB + "Equal to",;
  60.                            "<>" + TAB + "Not equal to" } )
  61.  
  62.    REDEFINE BUTTON ID ID_DATE OF oDlg ;
  63.       ACTION ExprSelect( "Date expression",;
  64.                          { "Date()" + TAB + "Today date",;
  65.                            "DoM()"  + TAB + "Day of month",;
  66.                            "DoW()"  + TAB + "Day of week",;
  67.                            "/"  + TAB + "Divide" } )
  68.  
  69.    REDEFINE COMBOBOX cDriver ITEMS { "DbfNtx", "DbfCdx", "DbPdx" } ;
  70.       ID ID_DRIVER OF oDlg
  71.  
  72.    REDEFINE BUTTON ID ID_EXIT OF oDlg ACTION oDlg:End()
  73.  
  74.    ACTIVATE DIALOG oDlg CENTERED
  75.  
  76. return
  77.  
  78. //----------------------------------------------------------------------------//
  79.  
  80. static function ExprSelect( cType, aSymbols )
  81.  
  82.    local oDlg
  83.    local cExpr := ""
  84.  
  85.    DEFINE DIALOG oDlg RESOURCE "ExpBuilder"
  86.  
  87.    REDEFINE SAY PROMPT cType ID ID_EXPTYPE OF oDlg
  88.  
  89.    REDEFINE LISTBOX cExpr ITEMS aSymbols ID ID_LSTEXPR OF oDlg
  90.  
  91.    ACTIVATE DIALOG oDlg CENTERED
  92.  
  93. return
  94.  
  95. //----------------------------------------------------------------------------//
  96.  
  97. static function ShowFields( cDbf, oLbx )
  98.  
  99.    local aFields
  100.    local n
  101.  
  102.    USE ( cDbf )
  103.  
  104.    aFields = ( cDbf )->( DbStruct() )
  105.    oLbx:Reset()
  106.  
  107.    for n = 1 to Len( aFields )
  108.       oLbx:Add( PadR( aFields[ n ][ 1 ], 12 ) + TAB + ;
  109.                 aFields[ n ][ 2 ] + ;
  110.                 xPadL( Str( aFields[ n ][ 3 ], 3 ), 40 ) + ;
  111.                 xPadL( Str( aFields[ n ][ 4 ], 1 ), 20 ) )
  112.    next
  113.  
  114.    USE
  115.  
  116. return
  117.  
  118. //----------------------------------------------------------------------------//
  119.