компонент Chart

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Anta
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 106
Зарегистрирован: 19.08.2012 (Вс) 22:00

компонент Chart

Сообщение Anta » 12.10.2012 (Пт) 4:47

Здраствуйте, вопрос относится к компоненту Chart.
Строю график, данные к которому служат переменные- результаты вычислений datatable (table1)суммы по столбца.Вариант у пользователя такой:
(используемые переменные для графика заранее посчитаны, но используются по очередно зависят от того какой чекбокс выбран)
1-если выбрал checkbox1- нажал на кнопку построить график , получили график в Chart1
2-если выбрал checkbox2 - нажал на кнопку построить график , получили график в Chart1
3-если выбрал checkbox3 - нажал на кнопку построить график , получили график в Chart1,

графики строятся правильно, но проблема в том что график визуально уменьшается в размере при каждом нажатии на кнопку..., не компонет, а именно картинка графика.
С чем это может быть связанно?

Anta
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 106
Зарегистрирован: 19.08.2012 (Вс) 22:00

Re: компонент Chart

Сообщение Anta » 12.10.2012 (Пт) 4:50

Вопрос в догонку. Имеется ли возможность вывести значение текущей даты в компонете Chart? Пользователь может распечатать график и хотелось бы иметь на графике знаяение текущей даты. или имеется какой то другой способ вывести текущую дату на печать вместе с графиком? Спасибо.

Anta
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 106
Зарегистрирован: 19.08.2012 (Вс) 22:00

Re: компонент Chart

Сообщение Anta » 01.11.2012 (Чт) 1:13

Всем привет! Вопрос еще актуален... возможно найдутся зантоки впроса?Спасибо!

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: компонент Chart

Сообщение FireFenix » 01.11.2012 (Чт) 1:37

Если я ещё не отстал от жизни, то Chart - не дефолтный компонент VS -> нужно спрашивать на форуме его создателей.

Anta писал(а):графики строятся правильно, но проблема в том что график визуально уменьшается в размере при каждом нажатии на кнопку..., не компонет, а именно картинка графика.
С чем это может быть связанно?

Если включить голову, то возможно предположить, что при построении следующих графиков если после очистки не сбрасывать координаты. Если второй график влезает в координаты первого по некоторой оси, то он не масштабируется, а масштабируется только там где не влезает => нужно самому вызывать AutoSize для второго графика или очищать сетку перед постройкой графика.

Anta писал(а):. Имеется ли возможность вывести значение текущей даты в компонете Chart?

Очевидно зависит от того какого производителя Chart использован. Открываем документацию и читаем по возможностям! Или спрашиваем на форуме создателя...
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Anta
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 106
Зарегистрирован: 19.08.2012 (Вс) 22:00

Re: компонент Chart

Сообщение Anta » 04.11.2012 (Вс) 17:45

Здравствуйте,вот код построения графика, возможно вы увидите ошибку:
Код: Выделить всё
Private Chart_Cadastre As New Chart
Private Sub btnSommaire_Click(sender As Object, e As EventArgs) Handles btnSommaire.Click
        Dim table As DataTable
       Dim ChartArea1 As New ChartArea()

        Dim series1 As New Series()
        Dim series2 As New Series()

        Dim sumTR As Object
        Dim sumNonTR As Object

        Dim sumComp As Object
        Dim sumNonComp As Object

        Dim sumFact As Object
        Dim sumNonFact As Object



        Dim legendEtat As New Legend


        btnExcelGraph.Visible = True
        btnExcelGraph.Location = New Point(340, 235)

        btnPrintGraph.Visible = True
        btnPrintGraph.Location = New Point(380, 235)

       

        Chart_Cadastre.Visible = True


        Chart_Cadastre.Series.Clear()
        'Chart2.Dispose()
        'Chart_Cadastre.Update()
        'Chart_Cadastre.Invalidate()



       
        Chart_Cadastre.ChartAreas.Add(ChartArea1)

        If rbToutesMUN.Checked = True Or rbMRC.Checked = True Or rbMemoMAJ.Checked = True Then
            table = LBPA_CMD_CADASTRE_All
        Else
            table = ObjDataTable
        End If

        sumTR = table.Compute("SUM(NB_LOT)", "STATUT_TRAITEMENT=1")
        sumNonTR = table.Compute("SUM(NB_LOT)", "STATUT_TRAITEMENT=0")

        sumComp = table.Compute("SUM(NB_LOT)", "STATUT_COMPLETE=1")
        sumNonComp = table.Compute("SUM(NB_LOT)", "STATUT_COMPLETE=0")

        sumFact = table.Compute("SUM(NB_LOT)", "STATUT_FACTURATION=1")
        sumNonFact = table.Compute("SUM(NB_LOT)", "STATUT_FACTURATION=0")


        If Convert.IsDBNull(sumTR) Then
            sumTR = 0
        End If

        If Convert.IsDBNull(sumNonTR) Then
            sumNonTR = 0
        End If
        If Convert.IsDBNull(sumComp) Then
            sumComp = 0
        End If

        If Convert.IsDBNull(sumNonComp) Then
            sumNonComp = 0
        End If

        If Convert.IsDBNull(sumFact) Then
            sumFact = 0
        End If

        If Convert.IsDBNull(sumNonFact) Then
            sumNonFact = 0
        End If




        series1.Points.AddXY("Traitement des mises à jour", sumTR)
        series1.Points.AddXY("Création des dossier", sumComp)
        series1.Points.AddXY("Facturation", sumFact)

        series2.Points.Add(sumNonTR)
        series2.Points.Add(sumNonComp)
        series2.Points.Add(sumNonFact)

        series1.Points(0).Color = Color.Green
        series1.Points(1).Color = Color.Green
        series1.Points(2).Color = Color.Green

        series2.Points(0).Color = Color.Red
        series2.Points(1).Color = Color.Red
        series2.Points(2).Color = Color.Red



        Chart_Cadastre.Location = New System.Drawing.Point(12, 278)
       
        Chart_Cadastre.Size = New System.Drawing.Size(980, 280)


       
        series2.ChartArea = "ChartArea1"

        Chart_Cadastre.Series.Add(series1)
        Chart_Cadastre.Series.Add(series2)

       
        Me.Controls.Add(Chart_Cadastre)
 
        Dim choix As String

        If rbToutesMUN.Checked = True Then
            choix = "Вся БД"
        Else
            If rbChoixMUN.Checked = True Then
                choix = CB_MUN.Text
            Else
                If rbMRC.Checked = True Then
                    choix = cbMRC.Text
                Else
                    If rbMRC.Checked = True Then
                        choix = cbMemoMAJ.Text
                    End If
                End If
            End If
        End If

        Dim tHeader As New Title



        Chart_Cadastre.Titles.Add("")
        Chart_Cadastre.Titles(0).Text = " Sommaire des mises à jour: " + ControlChars.NewLine + " Critères: " + ControlChars.NewLine + " Municipalité: " + choix + " " + ControlChars.NewLine + " Mises à jour:  toutes" + ControlChars.NewLine + " Date:" + Date.Today + ""
        Chart_Cadastre.Titles(0).Font = New Font("Arial", 8, FontStyle.Bold)
        Chart_Cadastre.Titles(0).BackColor = Color.White
        Chart_Cadastre.Titles(0).Alignment = System.Drawing.ContentAlignment.MiddleCenter




        Chart_Cadastre.ChartAreas(0).AxisX.Title = "Status"
        Chart_Cadastre.ChartAreas(0).AxisY.Title = "Nombre de lot"


        Chart_Cadastre.Series(0).ChartType = SeriesChartType.StackedColumn
        Chart_Cadastre.Series(1).ChartType = SeriesChartType.StackedColumn

        legendEtat.Title = "L'État"

        Chart_Cadastre.Series(0).IsValueShownAsLabel = True
        Chart_Cadastre.Series(1).IsValueShownAsLabel = True



        Chart_Cadastre.Series(0).Name = "кадастр готов"
        Chart_Cadastre.Series(1).Name = "кадастр не готов"

        Chart_Cadastre.Series(0).Color = Color.Green
        Chart_Cadastre.Series(1).Color = Color.Red

       

        legendEtat.LegendStyle = LegendStyle.Column

       Chart_Cadastre.Legends.Add(legendEtat)

       
        Chart_Cadastre.Legends(0).BackColor = Color.Beige
        Chart_Cadastre.Legends(0).BackSecondaryColor = Color.Beige
        Chart_Cadastre.Legends(0).BackGradientStyle = GradientStyle.DiagonalLeft
        Chart_Cadastre.Legends(0).BorderColor = Color.Black
        Chart_Cadastre.Legends(0).BorderWidth = 2
        Chart_Cadastre.Legends(0).BorderDashStyle = ChartDashStyle.Solid
        Chart_Cadastre.Legends(0).ShadowOffset = 2




        Dim critere() As String = {choix}
        Dim LOTS_TR() As Integer = {sumTR}
        Dim LOTS_NonTR() As Integer = {sumNonTR}
        Dim LOTS_Complet() As Integer = {sumComp}
        Dim LOTS_NonComplet() As Integer = {sumNonComp}
        Dim LOTS_Factur() As Integer = {sumFact}
        Dim LOTS_NonFactur() As Integer = {sumNonFact}

        Dim dt As New DataTable


        dt.Clear()
        dgv1Graph.DataSource = Nothing
        dgv1Graph.Rows.Clear()

        dt.Columns.Add("Critère")
        dt.Columns.Add("Commandes traités")
        dt.Columns.Add("Commandes NON traitées")
        dt.Columns.Add("Dossiers completées")
        dt.Columns.Add("Dossiers NON completées")
        dt.Columns.Add("Dossiers facturées")
        dt.Columns.Add("Dossiers NON facturées")


        dt.Rows.Add(choix, sumTR, sumNonTR, sumComp, sumNonComp, sumFact, sumNonFact)

        dgv1Graph.DataSource = dt
        Chart_Cadastre.Series(0).Points.Clear()



Вернуться в Visual Basic .NET

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

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

    TopList