CLIPPER nStrColor( void ) // ( szColor, nClrIndex ) { PCLIPVAR pClr = _param( 1, CHARACTER ); BOOL bNeedUnLock; char * szColor; WORD wStart = 0; WORD wEnd = 0; BYTE bEnd; WORD wAtt; if( ! pClr || _parclen( 1 ) == 0 ) { _retni( 0 ); // Default Color. return; } bNeedUnLock = _VSTRLOCK( pClr ); szColor = _VSTR( pClr ); wEnd = wStart = wScanSep( szColor, _parni( 2 ) ); while( szColor[ wEnd ] && szColor[ wEnd ] != ',' ) wEnd++; bEnd = szColor[ wEnd ]; szColor[ wEnd ] = 0; _retni( ucColor2N( szColor + wStart ) ); szColor[ wEnd ] = bEnd; if( bNeedUnLock ) _VSTRUNLOCK( pClr ); }
// -------------------------------------------------------------------------- // CLIPPER aStr2Memo() // ( acItems ) ->cBuffer { PCLIPVAR pArray; WORD wArrayLen; LONG lSize; PCLIPVAR pLine; LPBYTE lpLine; WORD wItem; LPBYTE lpBuffer; BOOL bBuffer; pArray = _param( 1, ARRAY ); if( pArray ) { wArrayLen = _VARRAYLEN( pArray ); if( wArrayLen ) { lSize = 0; for( wItem = 1; wItem <= wArrayLen; wItem++ ) { _cAt( pArray, wItem, CHARACTER, _eval ); if( _eval ) { lpLine = _VSTRX( _eval ); lSize += strlen( lpLine ) + 2; // CR + LF } } _BYTESNEW( lSize ); _bcopy( ( LPBYTE ) ++_tos, ( LPBYTE ) _eval, sizeof( CLIPVAR ) ); bBuffer = _VSTRLOCK( _eval ); lpBuffer = _VSTRX( _eval ); for( wItem = 1; wItem <= wArrayLen; wItem++ ) { _cAt( pArray, wItem, CHARACTER, _eval ); if( _eval ) { lpLine = _VSTRX( _eval ); lSize = strlen( lpLine ); _bcopy( lpBuffer, lpLine, lSize ); lpBuffer += lSize; * lpBuffer++ = CR; * lpBuffer++ = LF; } } if( bBuffer ) { _VSTRUNLOCK( _tos ); } _bcopy( ( LPBYTE ) _eval, ( LPBYTE ) _tos--, sizeof( CLIPVAR ) ); } } }
CLIPPER WBRWSELBOX( PARAMS ) // ( hWnd, hDC, nRow, nFirstCol, nCurCol,; // lFocus, aSizes, hFont) #endif { HWND hWnd = (HWND) _parnl( 1 ); HDC hDC = (HDC) _parnl( 2 ); WORD wRow = _parni( 3 ); WORD wIndex = _parni( 4 ); WORD wCol = _parni( 5 ); BOOL bFocused = _parl( 6 ); PCLIPVAR pAsizes = _param( 7, -1 ); HFONT hFont = (HFONT) _parnl( 8 ); BOOL bDestroyDC = FALSE; TEXTMETRIC tm; RECT rct; HFONT hOldFont; if( ! hDC ) { bDestroyDC = TRUE; hDC = GetDC( hWnd ); } if( hFont ) hOldFont = SelectObject( hDC, hFont ); GetClientRect( hWnd, &rct ); GetTextMetrics( hDC, &tm ); if( hFont ) SelectObject( hDC, hOldFont ); tm.tmHeight += 1; if ( ! bDrawHeaders ) // By CeSoTech wRow-- ; rct.top = tm.tmHeight * wRow ; rct.bottom = tm.tmHeight * ( wRow + 1) - 1; rct.left = 0; while( wIndex < wCol ) rct.left += GetInt( pAsizes, wIndex++ ); rct.right = rct.left+GetInt( pAsizes, wCol ) - 1; MaskRegion( hDC, &rct, GetBkColor( hDC ), GetSysColor(COLOR_ACTIVECAPTION) ); if( bFocused ) DrawFocusRect( hDC, &rct ); if( bDestroyDC ) ReleaseDC( hWnd, hDC ); }
std::string zpt::rest::authorization::extract(zpt::json _envelope) { if (_envelope["headers"]["Authorization"]->ok()) { return std::string(zpt::split(_envelope["headers"]["Authorization"], " ")[1]); } if (_envelope["payload"]["access_token"]->ok()) { std::string _param(_envelope["payload"]["access_token"]); zpt::url::decode(_param); return _param; } if (_envelope["headers"]["Cookie"]->ok()) { return std::string(zpt::split(_envelope["headers"]["Cookie"], ";")[0]); } return zpt::undefined; }
CLIPPER TimerNew( void ) // ( nTicks, bEvent ) -> nTimerHandle { _retni( hTimerNew( _parni( 1 ), _param( 2, BLOCK ) ) ); }
//---------------------------------------------------------------------------// CLIPPER WBRWPANE( void ) // ( hWnd, hDC, Self, bLine, aSizes, nFirstItem, // nClrFore, nClrBack, hFont, aJustify, nStyle // lCellStyle, lFocused ) -> nRowsSkipped // bTextColor, bBkColor, nClrLine, nColorFondo, bFont ) // New's by CesoTech { HWND hWnd = ( HWND ) _parnl( 1 ); HDC hDC = ( HDC ) _parnl( 2 ); WORD wRows; WORD wLastBottom = 0; WORD wRow = 1; WORD wSkipped = 1; void * Self = _param( 3, -1 ); void * bLine = _param( 4, -1 ); void * pASizes = _param( 5, -1 ); HFONT hFont = ( HFONT ) _parnl( 9 ); HFONT hOldFont; BOOL bDestroyDC = FALSE; WORD wHeight ; RECT rct, box, client; WORD wIndex = _parni( 6 ); void * bClrFore = 0; void * bClrBack = 0; COLORREF clrFore = 0; COLORREF clrBack = 0; HPEN hGrayPen = CreatePen( PS_SOLID, 1, GetSysColor( COLOR_BTNSHADOW ) ) ; // RGB( 128, 128, 128 ) ); HPEN hWhitePen = CreatePen( PS_SOLID, 1, GetSysColor( COLOR_BTNHIGHLIGHT ) ); // GetStockObject( WHITE_PEN ); BOOL bColBlock = ( _itemType( pASizes ) & BLOCK ); void * pAJustify = ISARRAY( 10 ) ? _param( 10, -1 ): 0; WORD nHeightCtrl ; // by CeSoTech WORD nStyle = _parni( 11 ); if( PCOUNT() > 6 ) { if( ISBLOCK( 7 ) ) bClrFore = _param( 7, -1 ); else clrFore = _parnl( 7 ); } if( PCOUNT() > 7 ) { if( ISBLOCK( 8 ) ) { bClrBack = _param( 8, -1 ); _cEval0( bClrBack ); clrBack = _parnl( -1 ); } else clrBack = _parnl( 8 ); } if( ! hDC ) { bDestroyDC = TRUE; hDC = GetDC( hWnd ); } if( ! pSkip ) pSkip = _get_sym( "SKIP" ); if( hFont ) hOldFont = SelectObject( hDC, hFont ); ///////////////////////// // Borremos el Area de la derecha no coubierta if ( !bAdjBrowse && !bAdjLastCol ) { GetClientRect( hWnd, &rct ); SetBkColor( hDC, _parnl( 17 ) ) ; for( wIndex=wIndex ; wIndex <= (WORD) _parinfa( 5, NULL); wIndex++ ) { rct.left += _parni( 5, wIndex ) ; } if ( !(nStyle == 0 || nStyle == 7 || nStyle == 8 || nStyle == 3) ) rct.left++; ExtTextOut( hDC, rct.left, rct.top, ETO_OPAQUE | ETO_CLIPPED, &rct, "", 0, 0 ); wIndex = _parni( 6 ); GetClientRect( hWnd, &rct ); } ///////////////////////// GetClientRect( hWnd, &client ); nHeightCtrl = client.bottom-client.top ; // by CeSoTech wHeight = wLineHeight + 1 ; wRows = WBrwRowsC( hWnd, hDC, hFont ); if( ! bClrFore ) SetTextColor( hDC, clrFore ); SetBkColor( hDC, clrBack ); while( wRow <= wRows && wSkipped == 1 ) { rct.top = client.top + ( bDrawHeaders ? wHeaderHeight+1 : 0 ) + (wHeight * (wRow-1) ) ; rct.bottom = rct.top + wHeight; rct.left = 0; rct.right = client.right; _cEval0( bLine ); _xpushm( _eval ); if( bClrFore ) { _cEval0( bClrFore ); SetTextColor( hDC, _parnl( -1 ) ); } if( bClrBack ) { _cEval0( bClrBack ); SetBkColor( hDC, _parnl( -1 ) ); } if( bColBlock ) _cEval0( pASizes ); PaintTheLine( hDC, &rct, wIndex, _tos, ( bColBlock ? _eval : pASizes ), hWhitePen, hGrayPen, bColBlock, pAJustify, 0, FALSE, _parni( 11 ), _parni ( 12 ), _parl( 13 ), ISBLOCK( 14 ) ? _param( 14, -1 ) : 0, // CeSoTech ISBLOCK( 15 ) ? _param( 15, -1 ) : 0, // CeSoTech wRow, nHeightCtrl, // CeSoTech ISNUM( 16 ) ? _parnl( 16 ) : -1, // CeSoTech FALSE, FALSE, // CeSoTech ISBLOCK( 18 ) ? _param( 18, -1 ) : 0, // CeSoTech FALSE ) ; _0POP(); _putsym( pSkip ); _xpushm( Self ); _putq( 1 ); _xsend( 1 ); wLastBottom = rct.bottom ; wSkipped = _parni( -1 ); if( wSkipped == 1 ) wRow++; } //////////////////////// // Borremos el Area de Abajo no cubierta GetClientRect( hWnd, &rct ); SetBkColor( hDC, _parnl( 17 ) ) ; rct.top = wLastBottom + 1 ; if ( wLastBottom == 0 ) // No Mostro Registros rct.top = ( bDrawHeaders ? wHeaderHeight+1 : 0 ) ; rct.bottom-= 1 + ( bDrawFooters ? wFooterHeight+1 : 0 ) ; if (nStyle == 0 || nStyle == 5 || nStyle == 6 || nStyle == 9 || nStyle == 10 || nStyle == 3 ) rct.top--; if ( !bDrawFooters ) rct.bottom++; if ( rct.top < rct.bottom ) { ExtTextOut( hDC, rct.left, rct.top, ETO_OPAQUE | ETO_CLIPPED, &rct, "", 0, 0 ); } //////////////////////// DeleteObject( hGrayPen ); DeleteObject( hWhitePen ); if( hFont ) SelectObject( hDC, hOldFont ); if( bDestroyDC ) ReleaseDC( hWnd, hDC ); _retni( wRow ); }
//---------------------------------------------------------------------------// CLIPPER WBRWRECT( void ) // ( hWnd, nRow, aSizes, nFirstItem, nCol, // nLineStyle, nWidthVScroll ) { HWND hWnd = ( HWND ) _parnl( 1 ); HDC hDC = GetDC( hWnd ); WORD wRow = _parni( 2 ); WORD wHeight ; RECT rct; WORD nStyle = ISNUM( 6 ) ? _parni( 6 ) : -1 ; // CeSoTech void * paSizes = _param( 3, S_ARRAY ); WORD wLen = _VARRAYLEN( paSizes ); WORD wIndex = _parni( 4 ); WORD wCol = _parni( 5 ); WORD wMaxRight; LONG l; if( !wCol || wCol > wLen ) return; GetWindowRect( hWnd, &rct ); wMaxRight = rct.right - 2; wHeight = wLineHeight + 1 ; rct.top = rct.top + ( bDrawHeaders ? wHeaderHeight+1 : 0 ) + (wHeight * (wRow-1) ) ; rct.bottom = rct.top + wHeight; rct.right = rct.left; while( wIndex <= wCol ) { rct.left = rct.right; rct.right = ( wIndex == wLen && bAdjLastCol ? wMaxRight : rct.left + GetInt( paSizes, wIndex ) ); if( rct.right >= wMaxRight ) { wIndex = wCol + 1; // ya no pintamos m s rct.right = wMaxRight; } else wIndex++; } ReleaseDC( hWnd, hDC ); _reta( 4 ); // Si es un estilo sin separadores horizontales, pintar uno mas arriba //CeSoTech para que que bien completa el area !!! if (nStyle == 0 || nStyle == 5 || nStyle == 6 || nStyle == 9 || nStyle == 10) rct.top-- ; // Las coord.de edicion deberan ser mas arriba tambien !!! _storni( rct.top, -1, 1 ); _storni( rct.left, -1, 2 ); _storni( rct.bottom, -1, 3 ); _storni( ( wMaxRight <= rct.right ) ? wMaxRight - _parni( 7 ) : rct.right, -1, 4 ); }
//---------------------------------------------------------------------------// CLIPPER WBRWLINE( void ) // ( hWnd, hDC, nRow, aText, aSizes, nFirstItem, ; // nClrFore, nClrBack, hFont, lTree, aJustify, nPressed, // nStyle, nColAct, lFocused ) // bTextColor, bBkColor, nClrLine, lFooter, lSelect, // bFont, lDrawFocusRect ) // New's by CesoTech { HWND hWnd = (HWND) _parnl( 1 ); HDC hDC = (HDC) _parnl( 2 ); WORD wRow = _parni( 3 ); BOOL bDestroyDC = FALSE; WORD wHeight; RECT rct, box; void * bClrFore; void * bClrBack; COLORREF clrFore = 0; COLORREF clrBack = 0; HPEN hGrayPen ; HPEN hWhitePen ; HFONT hFont = (HFONT) _parnl( 9 ); HFONT hOldFont; BOOL bTree = _parl( 10 ); BOOL bFooter = ISLOGICAL( 19 ) ? _parl( 19 ) : FALSE ; // CeSoTech WORD nHeightCtrl ; // by CeSoTech hGrayPen = CreatePen( PS_SOLID, 1, GetSysColor( COLOR_BTNSHADOW ) ) ; // RGB( 128, 128, 128 ) ); hWhitePen = CreatePen( PS_SOLID, 1, GetSysColor( COLOR_BTNHIGHLIGHT ) ); // GetStockObject( WHITE_PEN ); if( PCOUNT() > 6 ) { if( ISBLOCK( 7 ) ) { bClrFore = _param( 7, -1 ); _cEval0( bClrFore ); clrFore = _parnl( -1 ); } else { clrFore = _parnl( 7 ); } } if( PCOUNT() > 7 ) { if( ISBLOCK( 8 ) ) { bClrBack = _param( 8, -1 ); _cEval0( bClrBack ); clrBack = _parnl( -1 ); } else { clrBack = _parnl( 8 ); } } if( ! hDC ) { bDestroyDC = TRUE; hDC = GetDC( hWnd ); } if( hFont ) hOldFont = SelectObject( hDC, hFont ); GetClientRect( hWnd, &rct ); nHeightCtrl = rct.bottom-rct.top ; // by CeSoTech SetTextColor( hDC, clrFore ); SetBkColor( hDC, clrBack ); wHeight = wLineHeight + 1 ; if ( ( wRow == 0 ) && bDrawHeaders ) // Es una Cabecera wHeight = wHeaderHeight + 1 ; if ( ! bFooter ) { if ( ( wRow == 0 ) && bDrawHeaders ) // Es una Cabecera { rct.top = 0 ; rct.bottom = wHeaderHeight + 1 ; } else { rct.top = ( bDrawHeaders ? wHeaderHeight+1 : 0 ) + (wHeight * (wRow-1) ) ; rct.bottom = ( bDrawHeaders ? wHeaderHeight+1 : 0 ) + (wHeight * wRow) ; } } else { rct.top = rct.bottom - (wFooterHeight+1) ; } rct.left = 0; PaintTheLine( hDC, &rct, _parni( 6 ), _param( 4, -1 ), _param( 5, -1 ), hWhitePen, hGrayPen, bTree, ISARRAY(11) ? _param( 11, -1 ) : 0, _parni( 12 ), (wRow == 0), _parni( 13 ), _parni( 14 ), _parl( 15 ), ISBLOCK( 16 ) ? _param( 16, -1 ) : 0, // CeSoTech ISBLOCK( 17 ) ? _param( 17, -1 ) : 0, // CeSoTech wRow, nHeightCtrl, // CeSoTech ISNUM( 18 ) ? _parnl( 18 ) : -1, // CeSoTech bFooter, // CeSoTech ISLOGICAL( 20 ) ? _parl( 20 ) : FALSE, // CeSoTech ISBLOCK( 21 ) ? _param( 21, -1 ) : 0, // CeSoTech ISLOGICAL( 22 ) ? _parl( 22 ) : FALSE );// CeSoTech DeleteObject( hGrayPen ); DeleteObject( hWhitePen ); if( hFont ) SelectObject( hDC, hOldFont ); if( bDestroyDC ) ReleaseDC( hWnd, hDC ); _reta( 2 ); _storni( rct.top, -1, 1 ); _storni( rct.bottom, -1, 2 ); }
CLIPPER WBRWPANE( PARAMS ) // ( hWnd, hDC, Self, bLine, aSizes, nFirstItem, // nClrFore, nClrBack, hFont, aJustify, nStyle // lCellStyle, lFocused ) -> nRowsSkipped // bTextColor, bBkColor, nClrLine, nColorFondo, bFont ) // New's by CesoTech #endif { HWND hWnd = ( HWND ) _parnl( 1 ); HDC hDC = ( HDC ) _parnl( 2 ); WORD wRows; WORD wLastBottom = 0; WORD wRow = 1; WORD wSkipped = 1; PCLIPVAR Self = _param( 3, -1 ); PCLIPVAR bLine = _param( 4, -1 ); PCLIPVAR pASizes = _param( 5, -1 ); HFONT hFont = ( HFONT ) _parnl( 9 ); HFONT hOldFont; BOOL bDestroyDC = FALSE; WORD wHeight ; RECT rct, box, client; WORD wIndex = _parni( 6 ); PCLIPVAR bClrFore = 0, bClrBack = 0; COLORREF clrFore = 0; COLORREF clrBack = 0; HPEN hGrayPen = CreatePen( PS_SOLID, 1, GetSysColor( COLOR_BTNSHADOW ) ) ; // RGB( 128, 128, 128 ) ); HPEN hWhitePen = CreatePen( PS_SOLID, 1, GetSysColor( COLOR_BTNHIGHLIGHT ) ); // GetStockObject( WHITE_PEN ); #ifndef __HARBOUR__ BOOL bColBlock = pASizes->wType & BLOCK; #else BOOL bColBlock = hb_itemType( pASizes ) & BLOCK; PHB_ITEM aLine = hb_itemNew( NULL ); #endif PCLIPVAR pAJustify = ISARRAY( 10 ) ? _param( 10, -1 ): 0; WORD nHeightCtrl ; // by CeSoTech WORD nStyle = _parni( 11 ); if( PCOUNT() > 6 ) { if( ISBLOCK( 7 ) ) bClrFore = _param( 7, -1 ); else clrFore = _parnl( 7 ); } if( PCOUNT() > 7 ) { if( ISBLOCK( 8 ) ) { bClrBack = _param( 8, -1 ); _cEval0( bClrBack ); clrBack = _parnl( -1 ); } else clrBack = _parnl( 8 ); } if( ! hDC ) { bDestroyDC = TRUE; hDC = GetDC( hWnd ); } if( ! pSkip ) pSkip = _Get_Sym( "SKIP" ); if( hFont ) hOldFont = SelectObject( hDC, hFont ); ///////////////////////// // Borremos el Area de la derecha no coubierta if ( !bAdjBrowse && !bAdjLastCol ) { GetClientRect( hWnd, &rct ); SetBkColor( hDC, _parnl( 17 ) ) ; for( wIndex=wIndex ; wIndex <= (WORD) _parinfa( 5, NULL); wIndex++ ) { rct.left += _parni( 5, wIndex ) ; } if ( !(nStyle == 0 || nStyle == 7 || nStyle == 8 || nStyle == 3) ) rct.left++; ExtTextOut( hDC, rct.left, rct.top, ETO_OPAQUE | ETO_CLIPPED, &rct, "", 0, 0 ); wIndex = _parni( 6 ); GetClientRect( hWnd, &rct ); } ///////////////////////// GetClientRect( hWnd, &client ); nHeightCtrl = client.bottom-client.top ; // by CeSoTech wHeight = wLineHeight + 1 ; wRows = WBrwRowsC( hWnd, hDC, hFont ); if( ! bClrFore ) SetTextColor( hDC, clrFore ); SetBkColor( hDC, clrBack ); while( wRow <= wRows && wSkipped == 1 ) { rct.top = client.top + ( bDrawHeaders ? wHeaderHeight+1 : 0 ) + (wHeight * (wRow-1) ) ; rct.bottom = rct.top + wHeight; rct.left = 0; rct.right = client.right; #ifndef __HARBOUR__ _cEval0( bLine ); _xPushM( _eval ); if( bClrFore ) { _cEval0( bClrFore ); SetTextColor( hDC, _parnl( -1 ) ); } if( bClrBack ) { _cEval0( bClrBack ); SetBkColor( hDC, _parnl( -1 ) ); } if( bColBlock ) _cEval0( pASizes ); PaintTheLine( hDC, &rct, wIndex, _tos, ( bColBlock ? _eval : pASizes ), hWhitePen, hGrayPen, bColBlock, pAJustify, 0, FALSE, _parni( 11 ), _parni ( 12 ), _parl( 13 ), ISBLOCK( 14 ) ? _param( 14, -1 ) : 0, // CeSoTech ISBLOCK( 15 ) ? _param( 15, -1 ) : 0, // CeSoTech wRow, nHeightCtrl, // CeSoTech ISNUM( 16 ) ? _parnl( 16 ) : -1, // CeSoTech FALSE, FALSE, // CeSoTech ISBLOCK( 18 ) ? _param( 18, -1 ) : 0, // CeSoTech FALSE ) ; _tos--; _PutSym( pSkip ); _xPushM( Self ); _PutQ( 1 ); _xSend( 1 ); #else { // aLine.type = HB_IT_NIL; // Esta extension de xHarbour no se puede aplicar en Harbour // hb_itemForwardValue( aLine, hb_vmEvalBlock( bLine ) ); hb_itemCopy( aLine, hb_vmEvalBlock( bLine ) ); if( bClrFore ) { _cEval0( bClrFore ); SetTextColor( hDC, _parnl( -1 ) ); } if( bClrBack ) { _cEval0( bClrBack ); SetBkColor( hDC, _parnl( -1 ) ); } PaintTheLine( hDC, &rct, wIndex, aLine, ( bColBlock ? hb_vmEvalBlock( pASizes ) : pASizes ), hWhitePen, hGrayPen, bColBlock, pAJustify, 0, FALSE, _parnl( 11 ), _parnl ( 12 ), _parl( 13 ), ISBLOCK( 14 ) ? _param( 14, -1 ) : 0, // CeSoTech ISBLOCK( 15 ) ? _param( 15, -1 ) : 0, // CeSoTech wRow, nHeightCtrl, // CeSoTech ISNUM( 16 ) ? _parnl( 16 ) : -1, // CeSoTech FALSE, FALSE, // CeSoTech ISBLOCK( 18 ) ? _param( 18, -1 ) : 0, // CeSoTech FALSE ) ; if ( pSkip ) { hb_vmPushSymbol( hb_dynsymSymbol( pSkip ) ); hb_vmPush( Self ); hb_vmPushLong( 1 ); hb_vmDo( 1 ); } } #endif wLastBottom = rct.bottom ; wSkipped = _parni( -1 ); if( wSkipped == 1 ) wRow++; } //////////////////////// // Borremos el Area de Abajo no cubierta GetClientRect( hWnd, &rct ); SetBkColor( hDC, _parnl( 17 ) ) ; rct.top = wLastBottom + 1 ; if ( wLastBottom == 0 ) // No Mostro Registros rct.top = ( bDrawHeaders ? wHeaderHeight+1 : 0 ) ; rct.bottom-= 1 + ( bDrawFooters ? wFooterHeight+1 : 0 ) ; if (nStyle == 0 || nStyle == 5 || nStyle == 6 || nStyle == 9 || nStyle == 10 || nStyle == 3 ) rct.top--; if ( !bDrawFooters ) rct.bottom++; if ( rct.top < rct.bottom ) { ExtTextOut( hDC, rct.left, rct.top, ETO_OPAQUE | ETO_CLIPPED, &rct, "", 0, 0 ); } //////////////////////// DeleteObject( hGrayPen ); DeleteObject( hWhitePen ); if( hFont ) SelectObject( hDC, hOldFont ); if( bDestroyDC ) ReleaseDC( hWnd, hDC ); _retni( wRow ); }
CLIPPER WBrwRect( PARAMS ) // ( hWnd, nRow, aSizes, nFirstItem, nCol, // nLineStyle, nWidthVScroll ) #endif { HWND hWnd = ( HWND ) _parnl( 1 ); HDC hDC = GetDC( hWnd ); WORD wRow = _parni( 2 ); WORD wHeight ; RECT rct; WORD nStyle = ISNUM( 6 ) ? _parni( 6 ) : -1 ; // CeSoTech #ifdef __CLIPPER__ PCLIPVAR paSizes = _param( 3, 0x8000 ); WORD wLen = _VARRAYLEN( paSizes ); #else #ifdef __HARBOUR__ // void * paSizes = ( void * ) _param( 3, HB_IT_ARRAY ); WORD wLen = _parinfa( 3, 0 ); #else void * paSizes = ( void * ) _param( 3, 0x8000 ); WORD wLen = _VARRAYLEN( paSizes ); #endif #endif WORD wIndex = _parni( 4 ); WORD wCol = _parni( 5 ); WORD wMaxRight; LONG l; if( !wCol || wCol > wLen ) return; GetWindowRect( hWnd, &rct ); wMaxRight = rct.right - 2; wHeight = wLineHeight + 1 ; rct.top = rct.top + ( bDrawHeaders ? wHeaderHeight+1 : 0 ) + (wHeight * (wRow-1) ) ; rct.bottom = rct.top + wHeight; rct.right = rct.left; while( wIndex <= wCol ) { rct.left = rct.right; #ifndef __FLAT__ rct.right = ( wIndex == wLen && bAdjLastCol ? wMaxRight : rct.left + GetInt( paSizes, wIndex ) ); #else #ifndef __HARBOUR__ #define _parnl(x,y) PARNL(x,params,y); #endif l = _parnl( 3, wIndex ); rct.right = ( wIndex == wLen && bAdjLastCol ? wMaxRight : rct.left + l ); #endif if( rct.right >= wMaxRight ) { wIndex = wCol + 1; // ya no pintamos m s rct.right = wMaxRight; } else wIndex++; } ReleaseDC( hWnd, hDC ); _reta( 4 ); #ifdef __XPP__ #define _storni( x, y, z ) STORNI( x, params, y, z ) #endif // Si es un estilo sin separadores horizontales, pintar uno mas arriba //CeSoTech para que que bien completa el area !!! if (nStyle == 0 || nStyle == 5 || nStyle == 6 || nStyle == 9 || nStyle == 10) rct.top-- ; // Las coord.de edicion deberan ser mas arriba tambien !!! _storni( rct.top, -1, 1 ); _storni( rct.left, -1, 2 ); _storni( rct.bottom, -1, 3 ); _storni( ( wMaxRight <= rct.right ) ? wMaxRight - _parni( 7 ) : rct.right, -1, 4 ); }