Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: FOR NEXT DLA Panela
Hubert




Typ: neutral
Postów: 20
Zarejestrowany: Apr 2004
FOR NEXT DLA Panela

Mój problem jest następujący .(VB.net)

Po analizie danych wczytanych z pliku chce aby te dane pokazały się w formie graficznej .Wykorzystałem w tym celu kontrolkę Panel . No i mam teraz tych paneli 40 w postaci słupków które wraz ze zmianą wartości zmiennej powinny zwiększać lub zmniejszać swój rozmiar konkretnie wysokość .

No i mogę to zrobić tak :

Panel1.Height = (liniawynik(1))
Panel2.Height = (liniawynik(2))
Panel3.Height = (liniawynik(3))
Panel4.Height = (liniawynik(4))
Panel5.Height = (liniawynik(5))

Czy istniej możliwość wrzucenia tego do jakiejś pętli .

22-09-2004 20:55
Pokaż profil Hubert  Wyślij email do Hubert   
Chudy
[TLHW]Wiktor



Typ: moderator
Postów: 574
Zarejestrowany: Aug 2002

Na VB.NET się nie znam ale w VB6 można było by zrobić to w taki sposób:

For I = 1 To 5
Controls("Panel" & I).Height = (liniawynik(I))
Next I


_____________________________________________
Projekt "Thunder Cannons" nadchodzi...

23-09-2004 14:47
Pokaż profil Chudy  Wyślij email do Chudy   Odwiedź stronę Chudy       1220895
anonim




Typ: Nie zarejestrowany
Podobny temat

Czy można też zastosować pętle do Combo i Label ?
I jak by wyglądał kod przykładowo.

24-11-2004 20:45
  
Piotr T




Typ: neutral
Postów: 176
Zarejestrowany: May 2004


Mój problem jest następujący .(VB.net)

Po analizie danych wczytanych z pliku chce aby te dane pokazały się w formie graficznej .Wykorzystałem w tym celu kontrolkę Panel . No i mam teraz tych paneli 40 w postaci słupków które wraz ze zmianą wartości zmiennej powinny zwiększać lub zmniejszać swój rozmiar konkretnie wysokość .

No i mogę to zrobić tak :

Panel1.Height = (liniawynik(1))
Panel2.Height = (liniawynik(2))
Panel3.Height = (liniawynik(3))
Panel4.Height = (liniawynik(4))
Panel5.Height = (liniawynik(5))

Czy istniej możliwość wrzucenia tego do jakiejś pętli .


I tylko tak to możesz zrobić po rolniczemu VB.NET nie indeksuje automatycznie kontrolek do tablicy tak jak to mozna zrobić w VB6
jutro w pracy spróbuję ci to napisac

[Post edytowany dnia 25-11-2004 15:35 przez Piotr T]


_____________________________________________
Visual Basic.NET - Mercedes dla programistów

24-11-2004 22:36
Pokaż profil Piotr T  Wyślij email do Piotr T   Odwiedź stronę Piotr T  
Piotr T




Typ: neutral
Postów: 176
Zarejestrowany: May 2004

Dobra dzisiaj ma dostęp do VS.NET ( w pracy ) więc mogę ci podpowiedzieć co nieco - otóż Twoje rozwiązanie za pomocą paneli jest z lekka pamięciożerne - ja ci pokażę inny sposób:

Stwórz formę i wstaw do niej Button i GroupBox i skorzystaj z ponizszego rozwiązania:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Me.GroupBox1.Refresh() ' czyszczenie groupbox z grafiki

        Dim A, B, C, D, F As Integer
        A = Me.GroupBox1.Top
        B = Me.GroupBox1.Height
        C = 10 ' lewa współrzędna pierwszego słupka
        For D = 1 To 40
            F = (Rnd() * 300) ' losowanie przykładowych wysokości
            Rysuj(C + 2, (A + B - F), 10, (A + B - 20), Color.Gray) ' efekt cienia
            Rysuj(C, (A + B - (F - 2)), 9, (A + B - 18), Color.Black) ' normalny słupek
            C += 15 ' przesunięcie współrzednych
        Next
    End Sub



Private Sub Rysuj _
    (ByVal X As Integer, ByVal Y As Integer, _
    ByVal SZEROKOSC As Integer, ByVal WYSOKOSC As Integer, ByVal KOLOR As Color)
        ' deklaracje zmiennych
        Dim PEDZEL As New System.Drawing.SolidBrush(KOLOR)
        Dim PLANSZA As System.Drawing.Graphics

        PLANSZA = Me.GroupBox1.CreateGraphics()

        ' tu jest rysowany kwadrat
        PLANSZA.FillRectangle(PEDZEL, New Rectangle _
        (X, Y, SZEROKOSC, WYSOKOSC))

        ' zwolnienie zmiennych
        PEDZEL.Dispose()
        PLANSZA.Dispose()
        ' i  to nie wszystko tzw;garbage collector
        ' czyli - czyszczenie pamięci ze zbędnych śmieci
        PEDZEL = Nothing
        PLANSZA = Nothing
    End Sub


Oczywiście zmodyfikuj ten kod odpowiednio do twoich potrzeb i jeszcze jedno jesli chcesz aby na słupkach pokazywał się tekst to skorzystaj z metody DrawText()

A ten kod zrobi ci tablicę dla Paneli

Public Class Form1
    Inherits System.Windows.Forms.Form

    Private PANELS() As System.Windows.Forms.Panel


Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _
    Handles MyBase.Load
        BUDUJ()
    End Sub

Private Sub BUDUJ()
        Dim panelNR As Byte
        ReDim PANELS(5)
        'utworzenie tablicy
        For panelNR = 1 To 5
            PANELS(panelNR) = New System.Windows.Forms.Panel
            With PANELS(panelNR)
                .Size() = New Size(10, 5)
            End With
        Next
        'dodanie do formy
        Me.Controls.AddRange(PANELS)

    End Sub

Private Sub MALUJ()
        Dim i, j, x, y As Integer
        y = Me.Height - 30
        x = 10
        For i = 1 To 5
            j = (Rnd() * 100)
            PANELS(i).Location = New Point(x, y - j)
            PANELS(i).BorderStyle = BorderStyle.FixedSingle
            PANELS(i).BackColor = Color.RosyBrown
            PANELS(i).Height = j
            x = x + 11
        Next

    End Sub

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        MALUJ()
    End Sub

I tu jeszcze należy programowo usunąć kontrolki dynamicznie za pomocą metody Dispose() lub Finalize
End Class


[Post edytowany dnia 25-11-2004 15:37 przez Piotr T]


_____________________________________________
Visual Basic.NET - Mercedes dla programistów

25-11-2004 11:51
Pokaż profil Piotr T  Wyślij email do Piotr T   Odwiedź stronę Piotr T  
Wszystkich odpowiedzi: 4 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1