我读过一些关于周末问题的文章,建议是愚弄的步骤:
-
TChart1.Series(0).XValues.DateTime = False
- 使用连续数作为 X 值
- 将 X 标签替换为日期时间。
问题是:我根据日期,小时和分钟绘制实时烛台,并且必须保留TChart1.Series(0)。XValues.DateTime = true
那么有什么方法可以摆脱空周末(不仅是周末,甚至一天中的某个时间,如 5:15 到 6:00 都需要删除),以便连续显示烛台(X 值必须始终保持日期时间样式)?
谢谢。
(顺便说一句,我使用 Teechart2011 Eval & VB6)
TeeChart根据其关联轴中的X和Y值绘制每个点。可以使用"中断轴"工具在轴上获得不连续效果,但在水平轴上连续绘制点的最简单方法是具有连续的 X 值。所以我建议你使用TChart1.Series(i).asCandle.AddCandle XVal, OpenVal, HighVal, LowVal, CloseVal, Label, clTeeColor
函数,即:
- XVal:
TChart1.Series(i).Count
,而不是从系统中检索到的日期 - 标签:从系统中检索到的日期,转换为字符串
如果这不能解决问题,因为您仍然认为您必须拥有日期时间 XValues,请解释原因。
从这里截取您的代码片段,我创建了一个简单的例子,似乎在这里对我来说效果很好。在下面找到它:
Private Sub Form_Load()
Dim month, day, year, hour, minute, second, nums As Integer
Dim tmpDate As Date
month = 6
day = 7
year = 2012
hour = 6
minute = 15
second = 0
nums = 10
TChart1.Aspect.View3D = False
TChart1.AddSeries scCandle
TChart1.Axis.Bottom.Labels.Angle = 90
For i = 1 To nums
tmpDate = (DateValue(day & "," & month & "," & year) + TimeValue(hour & ":" & minute & ":" & second))
If Not IsWeekend(tmpDate) Then
With TChart1.Series(0)
.asCandle.AddCandle .Count, 5, 15, 0, 10, tmpDate, clTeeColor
End With
End If
day = day + 1
Next i
End Sub
Public Function IsWeekend(InputDate As Date) As Boolean
Select Case Weekday(InputDate)
Case vbSaturday, vbSunday
IsWeekend = True
Case Else
IsWeekend = False
End Select
End Function