cnavarro wrote:Creo recordar que es la data aYVals, pero nunca la he tocado
oGraph:aData := { aPrecX } <-- array con los valores
oGraph:nMaxVal := 5000 <-- fijo el valor a este
oGraph:Refresh()
...
...
...
// Max, Min values
nMax := IF( ::nMaxVal <> 0 , ::nMaxVal , 0 )
FOR nJ := 1 TO Len( ::aSeries )
FOR nI :=1 TO Len( ::aData[nJ] )
nMax := Max( ::aData[nJ][nI], nMax )
NEXT nI
NEXT nJ
nMin := IF( ::nMinVal <> 0 , ::nMinVal , 0 )
FOR nJ := 1 TO Len( ::aSeries )
FOR nI :=1 TO Len( ::aData[nJ] )
nMin := Min( ::aData[nJ][nI], nMin )
NEXT nI
NEXT nJ
nXMax := IF( nMax > 0, DetMaxVal( nMax ), 0 )
nXMin := IF( nMin < 0, DetMaxVal( nMin ), 0 )
nHigh := nXMax + nXMin
nMax := Max( nXMax, nXMin )
nRel:= IF( nHigh>0, nMaxBar / nHigh , 1 )
nMaxBar := nMax * nRel
// Zero pos
//
nZero:=Max(nBottom+(nXMin*-1*nRel),IF(nXMax>0,nTop+(nXMax*nRel)+nDeep,0))
IF l3D
FOR nI := 1 TO nDeep+1
::DrawLine(nZero-nI+1, nLeft-nDeep+nI, nZero-nI+1, nRight-nDeep+nI, CLR_HGRAY)
NEXT nI
ENDIF
aPoint := Array( Len( ::aSeries ), Len( ::aData[1] ), 2 )
nRange := IF( ::nXRanges>0, nMax / ::nXRanges, 1)
// Calculate data ranges
FOR nI = 1 TO ::nXRanges
AAdd( aRange, nRange * nI )
NEXT nI
AAdd( aRange, nMax )
// xValues
//
nRPos := nRNeg := nZero - nDeep
FOR nI := 0 TO ::nXRanges
IF lxVal
IF nXMax >= nRange*nI
::Say( nRPos+nDeep-5, nLeft-nDeep-10, Tran( nRange* nI, ::cPicture ), ;
::aFont[2], ::nClrX, ::nTRight )
ENDIF
IF nXMin*-1 <= nRange*-nI
::Say( nRNeg+nDeep-5, nLeft-nDeep-10, Tran( nRange*-nI, ::cPicture ), ;
::aFont[2], ::nClrX, ::nTRight )
ENDIF
ENDIF
IF ::lxGrid
IF nXMax > nRange*nI
::DrawLine( nRPos+nDeep, nLeft-nDeep, nRPos, nLeft, ::nClrGrid, ::lDotted )
::DrawLine( nRPos, nLeft, nRPos, nRight, ::nClrGrid, ::lDotted )
ENDIF
IF nXMin*-1 < nRange*-nI
::DrawLine( nRNeg+nDeep, nLeft-nDeep, nRNeg, nLeft, ::nClrGrid, ::lDotted )
::DrawLine( nRNeg, nLeft, nRNeg, nRight, ::nClrGrid, ::lDotted )
ENDIF
ENDIF
nRPos -= ( nMaxBar / ::nXRanges )
nRNeg += ( nMaxBar / ::nXRanges )
NEXT nI
IF !lxVal
::Say( nZero-5, nLeft-nDeep-3, "0", ::aFont[8], ::nClrV, ::nTRight)
ENDIF
...
...
oGraph:nXRanges := 6
@ nT, nL GRAPH oGraph SIZE Int( nW / 2 ) - 2, nH PIXEL OF oP ;
TITLE "Sales and Costs" ;
XVALUES YVALUES LEGENDS
// pon esto nada más definir el gráfico
// si lo pones después de definir las series no te va a funcionar
oGraph:lViewVal := .T.
oGraph:nXRanges := 8
// Esto
oGraph:nMaxVal := 3000
cnavarro wrote:Bien, como te he dicho, intentemos ir solucionando temas paso a paso
Ahora, a continuación de la definición del gráfico, pon esto
- Code: Select all Expand view
@ nT, nL GRAPH oGraph SIZE Int( nW / 2 ) - 2, nH PIXEL OF oP ;
TITLE "Sales and Costs" ;
XVALUES YVALUES LEGENDS
// pon esto nada más definir el gráfico
// si lo pones después de definir las series no te va a funcionar
oGraph:lViewVal := .T.
Prueba y dime
Error occurred at: 24/07/2019, 14:40:10
Error description: Error BASE/1066 Error de argumento: condicional
Args:
[ 1] = U
Stack Calls
===========
Called from: .\source\classes\TGRAPH.PRG => TGRAPH:PAINT( 1289 )
Called from: .\source\classes\TGRAPH.PRG => (b)TGRAPH( 135 )
Called from: .\source\classes\TGRAPH.PRG => TGRAPH:DISPLAY( 0 )
Called from: .\source\classes\CONTROL.PRG => TGRAPH:HANDLEEVENT( 1767 )
Called from: .\source\classes\WINDOW.PRG => _FWH( 3541 )
cnavarro wrote:Qué versión de Fw utilizas?, porque a mi me funciona correctamente y no entiendo por qué te da error
Precisamente porque es utilizada como parámetro en el ADDSeries es por lo que hay que darle ese valor antes que nada
oGraph:lViewVal := .t. // SUGERIDO X NAVARRO - 24/07/2019
oGraph:cTitle := "METROS VENTAS MENSUALES " + cValToChar( Year( Date() ) ) // 19/06/2019
oGraph:cTitX := "Montos Metros" // TITULO VER. - 19/06/2019
oGraph:cTitY := "Meses" // TITULO HOR. - 19/06/2019
oGraph:nBarSep := 10 // Separador entre barras 1 - 19/06/2019
oGraph:lxGrid := .t. // Rejilla en X .t. - 19/06/2019
oGraph:lyGrid := .t. // Rejilla en Y .t. - 19/06/2019
oGraph:nClrX := CLR_GREEN // COLOR TEXTO X
oGraph:nClrY := CLR_RED // COLOR TEXTO Y
oGraph:lLegends := .t. // MOSTRAR O NO LEYENDA - 19/06/2019
oGraph:lxVal := .t. // Mostrar valores en X .t. - 21/06/2019
oGraph:lyVal := .t. // Mostrar etiquetas en Y .t. - 19/06/2019
oGraph:lBorders := .f. // Bordes en gráfico de barras .f. - 19/06/2019
oGraph:lSelView := .f. // Seleccionar opción 'Ver' .t. - EN EL MENU POPUOP - 19/06/2019
oGraph:lSelBack := .f. // Seleccionar opción 'Fondo' .t.
Return to FiveWin para Harbour/xHarbour
Users browsing this forum: Rick Lipkin and 89 guests