home *** CD-ROM | disk | FTP | other *** search
/ BUG 4 / BUGCD1997_05.BIN / aplic / clip4win / clip4win.exe / C4W30E.HUF / SOURCE / BLISTBFN.PRG < prev    next >
Text File  |  1996-04-26  |  4KB  |  113 lines

  1. //    blistbfn.prg - BLISTBOX dialog functions
  2. //
  3. //    Written by:    John M. Skelton,  Jun/Sep-95.
  4. //
  5. //    Copyright (C) 1995 Skelton Software, Kendal Cottage, Hillam, Leeds LS25 5HP, UK.
  6. //    All Rights Reserved.
  7. //
  8. //    Part of Clip-4-Win.
  9.  
  10. #define    WIN_WANT_ALL
  11. #include "windows.ch"
  12. #include "topclass.ch"
  13.  
  14.  
  15. FUNCTION C4W_BListBox(hDlg, nId, a)
  16. local   hWnd    := GetDlgItem(hDlg, nId)   ,;  // Handle to listbox control
  17.         aFlds   := a[1] ,;  // fields/codeblocks for browse
  18.         bTop    := a[2],;
  19.         bBottom := a[3],;
  20.         bSkip   := a[4],;
  21.         cAlias  := a[5],;  // name of database/alias
  22.         hBFont  := a[6],;  // Optional font for listbox
  23.         aUpdate := a[7],;  // Optional array of dialgo controls
  24.         lShow   := a[8]
  25.  
  26.         LOCAL aRect, hInst, nCtr, oB, cOldAlias
  27.  
  28.         aRect     := GetClientRect(hWnd)
  29.  
  30.         IF cAlias != NIL
  31.            cOldAlias := DBSELECTAREA( cAlias )
  32.         ENDIF
  33.  
  34.         oB := WBrowse{hWnd,0,0,aRect[3]-1, aRect[4]-1,;
  35.                         "",;
  36.                         WS_CHILD+WS_BORDER+WS_VISIBLE,hWnd}
  37.  
  38.         oB:autoSize := .T.
  39.         FOR nCtr := 1 TO LEN(aFlds)
  40.             ASIZE(aFlds[nCtr],13)
  41.             IF aFlds[ nCtr ][ 7 ] != NIL
  42.                oB:autoSize := .F.
  43.             ENDIF
  44.         NEXT
  45.  
  46.         FOR nCtr := 1 TO LEN(aFlds)
  47.             oB:addColumn(WBColumn{aFlds[nCtr][1],;  // acHeading
  48.                                   aFlds[nCtr][2],;  // bGetData
  49.                                   aFlds[nCtr][3],;  // cPicture
  50.                                   aFlds[nCtr][4],;  // nFgColor
  51.                                   aFlds[nCtr][5],;  // nBgColor
  52.                                   aFlds[nCtr][6],;  // nAlign
  53.                                   aFlds[nCtr][7],;  // nWidth
  54.                                   aFlds[nCtr][8],;  // nBmpResId
  55.                                   aFlds[nCtr][9],;  // nBmpAlign
  56.                                   aFlds[nCtr][10],; // bHeadBlock
  57.                                   aFlds[nCtr][11],; // xCargo
  58.                                   aFlds[nCtr][12],; // hFont
  59.                                   aFlds[nCtr][13]}) // nHeadColor
  60.         NEXT
  61.         oB:userSize      := .F.
  62.         oB:userMove      := .F.
  63.         oB:goTopBlock    := IIF( bTop    == NIL, oB:goTopBlock, bTop)
  64.         oB:goBottomBlock := IIF( bBottom == NIL, oB:goBottomBlock, bBottom)
  65.         oB:skipBlock     := IIF( bSkip   == NIL, oB:skipBlock, bSkip)
  66.         oB:alias         := IIF( cAlias  == NIL, NIL, cAlias )
  67.         lShow            := IIF( lShow   == NIL, .T., lShow )
  68.         IF aUpdate != NIL
  69.            oB:selectBlock := {||UpdateDlg(hDlg,aUpdate)}
  70.         ENDIF
  71.         IF hBFont != NIL
  72.            oB:ColFont := hBFont
  73.         ENDIF
  74.         oB:ShowFocus := .T.
  75.         IF lShow
  76.            oB:goTop()
  77.         ENDIF
  78.         IF cAlias != NIL
  79.            DBSELECTAREA( cOldAlias )
  80.         ENDIF
  81.         DoSubCl(oB,hWnd)
  82. RETURN(oB)
  83.  
  84. STATIC FUNCTION UpdateDlg(hDlg,aUpdate)
  85.        LOCAL nCtr
  86.  
  87.        FOR nCtr := 1 TO LEN(aUpdate)
  88.            EVAL(aUpdate[nCtr])
  89.        NEXT
  90. RETURN(NIL)
  91.  
  92. STATIC FUNCTION DoSubCl(oB,hWnd)
  93.        LOCAL nProc
  94.  
  95.        nProc := SubClassWindow(hWnd,;
  96.                 {|hWnd, nMsg, nWparam, nLparam|;
  97.                 oB:__SubWndProc(nProc, hWnd, nMsg, nWparam, nLparam)},;
  98.                 {WM_PAINT,;
  99.                  WM_ERASEBKGND ,;
  100.                  WM_MOUSEMOVE,;
  101.                  WM_LBUTTONUP,;
  102.                  WM_LBUTTONDOWN,;
  103.                  WM_LBUTTONDBLCLK,;
  104.                  WM_KEYDOWN,;
  105.                  WM_SYSKEYDOWN,;
  106.                  WM_COMMAND,;
  107.                  WM_DESTROY,;
  108.                  WM_HSCROLL,;
  109.                  WM_SETFOCUS,;
  110.                  WM_KILLFOCUS,;
  111.                  WM_VSCROLL})
  112. RETURN(NIL)
  113.