home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
BUG 4
/
BUGCD1997_05.BIN
/
aplic
/
clip4win
/
clip4win.exe
/
C4W30E.HUF
/
SOURCE
/
BLISTBFN.PRG
< prev
next >
Wrap
Text File
|
1996-04-26
|
4KB
|
113 lines
// blistbfn.prg - BLISTBOX dialog functions
//
// Written by: John M. Skelton, Jun/Sep-95.
//
// Copyright (C) 1995 Skelton Software, Kendal Cottage, Hillam, Leeds LS25 5HP, UK.
// All Rights Reserved.
//
// Part of Clip-4-Win.
#define WIN_WANT_ALL
#include "windows.ch"
#include "topclass.ch"
FUNCTION C4W_BListBox(hDlg, nId, a)
local hWnd := GetDlgItem(hDlg, nId) ,; // Handle to listbox control
aFlds := a[1] ,; // fields/codeblocks for browse
bTop := a[2],;
bBottom := a[3],;
bSkip := a[4],;
cAlias := a[5],; // name of database/alias
hBFont := a[6],; // Optional font for listbox
aUpdate := a[7],; // Optional array of dialgo controls
lShow := a[8]
LOCAL aRect, hInst, nCtr, oB, cOldAlias
aRect := GetClientRect(hWnd)
IF cAlias != NIL
cOldAlias := DBSELECTAREA( cAlias )
ENDIF
oB := WBrowse{hWnd,0,0,aRect[3]-1, aRect[4]-1,;
"",;
WS_CHILD+WS_BORDER+WS_VISIBLE,hWnd}
oB:autoSize := .T.
FOR nCtr := 1 TO LEN(aFlds)
ASIZE(aFlds[nCtr],13)
IF aFlds[ nCtr ][ 7 ] != NIL
oB:autoSize := .F.
ENDIF
NEXT
FOR nCtr := 1 TO LEN(aFlds)
oB:addColumn(WBColumn{aFlds[nCtr][1],; // acHeading
aFlds[nCtr][2],; // bGetData
aFlds[nCtr][3],; // cPicture
aFlds[nCtr][4],; // nFgColor
aFlds[nCtr][5],; // nBgColor
aFlds[nCtr][6],; // nAlign
aFlds[nCtr][7],; // nWidth
aFlds[nCtr][8],; // nBmpResId
aFlds[nCtr][9],; // nBmpAlign
aFlds[nCtr][10],; // bHeadBlock
aFlds[nCtr][11],; // xCargo
aFlds[nCtr][12],; // hFont
aFlds[nCtr][13]}) // nHeadColor
NEXT
oB:userSize := .F.
oB:userMove := .F.
oB:goTopBlock := IIF( bTop == NIL, oB:goTopBlock, bTop)
oB:goBottomBlock := IIF( bBottom == NIL, oB:goBottomBlock, bBottom)
oB:skipBlock := IIF( bSkip == NIL, oB:skipBlock, bSkip)
oB:alias := IIF( cAlias == NIL, NIL, cAlias )
lShow := IIF( lShow == NIL, .T., lShow )
IF aUpdate != NIL
oB:selectBlock := {||UpdateDlg(hDlg,aUpdate)}
ENDIF
IF hBFont != NIL
oB:ColFont := hBFont
ENDIF
oB:ShowFocus := .T.
IF lShow
oB:goTop()
ENDIF
IF cAlias != NIL
DBSELECTAREA( cOldAlias )
ENDIF
DoSubCl(oB,hWnd)
RETURN(oB)
STATIC FUNCTION UpdateDlg(hDlg,aUpdate)
LOCAL nCtr
FOR nCtr := 1 TO LEN(aUpdate)
EVAL(aUpdate[nCtr])
NEXT
RETURN(NIL)
STATIC FUNCTION DoSubCl(oB,hWnd)
LOCAL nProc
nProc := SubClassWindow(hWnd,;
{|hWnd, nMsg, nWparam, nLparam|;
oB:__SubWndProc(nProc, hWnd, nMsg, nWparam, nLparam)},;
{WM_PAINT,;
WM_ERASEBKGND ,;
WM_MOUSEMOVE,;
WM_LBUTTONUP,;
WM_LBUTTONDOWN,;
WM_LBUTTONDBLCLK,;
WM_KEYDOWN,;
WM_SYSKEYDOWN,;
WM_COMMAND,;
WM_DESTROY,;
WM_HSCROLL,;
WM_SETFOCUS,;
WM_KILLFOCUS,;
WM_VSCROLL})
RETURN(NIL)