MSChart и события PointUpdated, SeriesUpdated, DataUpdated

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
stex
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 24.06.2011 (Пт) 16:05

MSChart и события PointUpdated, SeriesUpdated, DataUpdated

Сообщение stex » 15.07.2011 (Пт) 16:06

Здравствуйте!!! Вопрос возник по использованию событий MSChart_PointUpdated, MSChart_SeriesUpdated, MSChart_DataUpdated. Данные события происходят при изменении(обновлении) данных (например, в гриде), на основании которых строится график. За обновление графика отвечают встроенные константы updateFlags(VtChUpdateFlags). Вопрос в том, как использовать данные константы и как использовать сами события MSChart_PointUpdated, MSChart_SeriesUpdated, MSChart_DataUpdated, чтобы при изменении значений в ячейках грида, график обновлялся(перерисовывался). Вот код проекта:
Код: Выделить всё
Option Explicit

Dim i As Integer
Dim ChartsValue() As String
Dim Period As Integer

Private Sub Command1_Click()
'Обновляем значения в последней последней строки
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 1) = InputBox("Введите значение ряда")
'Перерисовываем График
'MakeChart ' - ТАК НЕ ПОЙДЕТ НУЖНО ЧТОБЫ ОБНОВЛЯЛСЯ ГРАФИК ЧЕРЕЗ СОБЫТИЯ  MSChart_PointUpdated, MSChart_SeriesUpdated, MSChart_DataUpdated
End Sub

Private Sub Command2_Click()
'Смещаем все строки вверх
For i = 2 To MSFlexGrid1.Rows - 1
   MSFlexGrid1.TextMatrix(i - 1, 0) = MSFlexGrid1.TextMatrix(i, 0)
   MSFlexGrid1.TextMatrix(i - 1, 1) = MSFlexGrid1.TextMatrix(i, 1)
Next i
'Вставляем новые значения в последнюю строку
   MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 0) = "Строка " & 1 + (Replace(MSFlexGrid1.TextMatrix(i - 1, 0), "Строка", ""))
   MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 1) = Int((100 * Rnd) + 1)
'Перерисовываем График
'MakeChart ' - ТАК НЕ ПОЙДЕТ НУЖНО ЧТОБЫ ОБНОВЛЯЛСЯ ГРАФИК ЧЕРЕЗ СОБЫТИЯ  MSChart_PointUpdated, MSChart_SeriesUpdated, MSChart_DataUpdated
End Sub

Private Sub Form_Load()
Command1.Caption = "Обновить значение"
Command2.Caption = "Добавить значение"
' Заполняем таблицу
MSFlexGrid1.TextMatrix(0, 0) = "Строка"
MSFlexGrid1.TextMatrix(0, 1) = "Значение"
For i = 1 To MSFlexGrid1.Rows - 1
   MSFlexGrid1.TextMatrix(i, 0) = "Строка " & i
   MSFlexGrid1.TextMatrix(i, 1) = Int((100 * Rnd) + 1)
  Next i
'Рисуем график
MakeChart
End Sub

Sub MakeChart()
Dim i As Integer, j As Integer
'On Error Resume Next
Period = MSFlexGrid1.Rows - 1
ReDim ChartsValue(Period, 1)
  For i = 0 To Period
    ChartsValue(i, 0) = MSFlexGrid1.TextMatrix(i, 0)
    ChartsValue(i, 1) = MSFlexGrid1.TextMatrix(i, 1)
  Next i
MSChart1.chartType = VtChChartType2dLine
MSChart1.ChartData = ChartsValue
End Sub

hclubmk
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 240
Зарегистрирован: 19.06.2009 (Пт) 14:23
Откуда: От-туда

Re: MSChart и события PointUpdated, SeriesUpdated, DataUpdat

Сообщение hclubmk » 16.07.2011 (Сб) 15:18

Вопрос в том, как использовать данные константы и как использовать сами события MSChart_PointUpdated, MSChart_SeriesUpdated, MSChart_DataUpdated, чтобы при изменении значений в ячейках грида, график обновлялся(перерисовывался)
Никак.
При изменении значений в ячейках грида необходимо изменять соответствующие/сопоставленные им MSChart1.Data. В результате чего будут подниматься указанные события, а упомянутая константа обозначит причину обновления.
Научились ли Вы радоваться трудностям?

stex
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 24.06.2011 (Пт) 16:05

Re: MSChart и события PointUpdated, SeriesUpdated, DataUpdat

Сообщение stex » 16.07.2011 (Сб) 18:16

Никак.
При изменении значений в ячейках грида необходимо изменять соответствующие/сопоставленные им MSChart1.Data. В результате чего будут подниматься указанные события, а упомянутая константа обозначит причину обновления.

Если это так, что никак нельзя воспользоваться этими событиями для обновления графика, то это очень плохо. Но..., существует событие MSChart1_PointActivated, которое происходит, когда на графике выбирается точка и при этом, можно изменить значение этой точки на любое так, что значение в гриде почему то не изменяется, а вот график обновляется(перерисовывается) с новым значением. Вот код этого события:
Код: Выделить всё
Private Sub MSChart1_PointActivated(Series As Integer, DataPoint As Integer, MouseFlags As Integer, Cancel As Integer)
MSChart1.Column = Series
MSChart1.Row = DataPoint
MSChart1.Data = InputBox("Введите значение выбранной точки")
End Sub

hclubmk
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 240
Зарегистрирован: 19.06.2009 (Пт) 14:23
Откуда: От-туда

Re: MSChart и события PointUpdated, SeriesUpdated, DataUpdat

Сообщение hclubmk » 16.07.2011 (Сб) 22:40

stex писал(а):Если это так, что никак нельзя воспользоваться этими событиями для обновления графика, то это очень плохо.
Ещё раз говорю, что поднятие события есть следствие, а не причина изменения данных.
stex писал(а): значение в гриде почему то не изменяется
А почему оно должно меняться? Каким образом в твоем коде участвует грид? И судя по контексту, график ли тебе нужно обновлять, или таблицу данных?
Научились ли Вы радоваться трудностям?

stex
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 24.06.2011 (Пт) 16:05

Re: MSChart и события PointUpdated, SeriesUpdated, DataUpdat

Сообщение stex » 18.07.2011 (Пн) 14:17

спасибо за помощь, вроде разобрался


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 58

    TopList