Nouvelle page 1

Example VML graph generator in VBScript

  <% @Language="VBScript" %>
  <% option explicit %>
  <%
  'on error resume next

  Dim mintMaxVert
  Dim mintMaxHorz
  Dim mintVertScale
  Dim mintHorzScale

  Sub DrawLine(intWidth, strColor, fx, fy, tx, ty)

  Dim strToWrite

  ' init string
  strToWrite = "" & vbCRLF
  Response.Write(strToWrite)

  End Sub

  Sub DrawAxes()

  Dim i

  ' max coordinate values
  mintMaxVert = 200
  mintMaxHorz = 480

  ' set scale values
  mintVertScale = 10
  mintHorzScale = 10

  ' draw horizontal lines (vertical scale)
  For i = 0 to mintMaxVert / mintVertScale
  If i Mod 4 = 0 Then
  DrawLine 2, "gray", 0, i * mintVertScale, mintMaxHorz, i * mintVertScale
  Else
  DrawLine 1, "gray", 0, i * mintVertScale, mintMaxHorz, i * mintVertScale
  End If

  Next

  ' draw vertical lines (horizontal scale)
  For i = 0 to mintMaxHorz / mintHorzScale
  If i Mod 4 = 0 Then
  DrawLine 2, "gray", i * mintHorzScale, 0, i * mintHorzScale, mintMaxVert
  Else
  DrawLine 1, "gray", i * mintHorzScale, 0, i * mintHorzScale, mintMaxVert
  End If
  Next

  End Sub

  Sub DrawLabel(strToDraw, intSize, strColor, x, y)

  Dim strToWrite
  ' textbox element needs to be associated with a shape element.
  strToWrite = ""
  strToWrite = strToWrite & ""
  strToWrite = strToWrite & ""
  strToWrite = strToWrite & ""
  strToWrite = strToWrite & ""

  ' output label
  Response.Write(strToWrite)

  End Sub

  Sub DrawDataLines(arrVal1, arrVal2)

  Dim i

  ' draw red data line
  For i = 0 to UBound(arrVal1) - 1
  DrawLine 2, "red", i * mintHorzScale, mintMaxVert - arrVal1(i), _
  (i * mintHorzScale) + mintHorzScale, mintMaxVert - arrVal1(i + 1)
  Next

  ' draw blue data line
  For i = 0 to UBound(arrVal2) - 1
  DrawLine 2, "blue", i * mintHorzScale, mintMaxVert - arrVal2(i), _
  (i * mintHorzScale) + mintHorzScale, mintMaxVert - arrVal2(i + 1)
  Next

  End Sub

  Sub DrawPercentBars(arrVal1, arrVal2)

  Dim i
  Dim intResult
  Call DrawLabel ("Ubound1 = " & UBound(arrVal1) & ", Ubound2 = " & UBound(arrVal2), "black", 20, 300, 20)
  For i = 0 to Ubound(arrVal1) - 1
  'calculate absolute differences
  Call DrawLabel (i, "black", 20, 0, 20*i)
  Call DrawLabel (arrVal1(i), 20, "black", 100, 20*i)
  Call DrawLabel (arrVal2(i), 20, "black", 200, 20*i)
  If arrVal1(i) >= arrVal2(i) Then
  intResult = 1 - arrVal2(i) / arrVal1(i)
  Else
  intResult = 1 - arrVal1(i) / arrVal2(i)
  End If

  ' subtract max vertical value, bar will be drawn from
  ' max veritcal value to this value
  intResult = mintMaxVert - Int(intResult * mintMaxVert)

  ' draw bar
  DrawLine 4, "#ff69b4", i * mintHorzScale, mintMaxVert + 1, _
  i * mintHorzScale, intResult
  Next

  End Sub

  %>
  

Read page source to see the VML listing.

?>
  <%
  Call DrawAxes
  Dim ar1(6),ar2(6)
  ar1(0) = 1
  ar1(1) = 1
  ar1(2) = 4
  ar1(3) = 9
  ar1(4) = 16
  ar1(5) = 25
  ar2(0) = 1
  ar2(1) = 1
  ar2(2) = 8
  ar2(3) = 27
  ar2(4) = 64
  ar2(5) = 125
  Call DrawPercentBars (ar1, ar2)
  Call DrawDataLines (ar1, ar2) %>