Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET: Visual Basic 2010 Express ongelmia

Sivun loppuun

Mope [16.12.2010 19:14:08]

#

Miten tehdään VB2010E:ssä saman nimisten olioiden indeksointi, jotta voidaan käyttää samaa nimeä useammalle oliolle?

Lisäksi onko jollakin tiedossa hyviä sivuja/sivustoja harjoituksia ja/tai tehtäviä/koodeja liittyen VB2010e:siin? jokin ohjekirja/koodikirja voisi myös olla hyvä.

neau33 [16.12.2010 20:12:14]

#

Moi Mope!

näin...

Public Class Form1

   Private Structure OlioStruct
      Dim xint As Integer
      Dim xlng As Long
      Dim xstr As String
     'jne.
   End Structure

   Private olio(10) As OlioStruct

  '...

End Class

Visual Basic 2010 Samples

Mope [19.12.2010 15:51:25]

#

HEPS!

Niin siis meinasin, että kun vanhassa VB6:ssä kun oli useampi saman niminen esim. tekstikenttä, niin täytyi ominaisuus ikkunassa laittaa indeksit (Index) jokaiselle erinumerot, niin ohjelma antoi olla täsmälleen samalla nimellä kaikki tekstikentät. Ja silloin pystyi sitten esim. satunnaslukuna arpomaan johonkin tekstikenttään tietoa.

Nyt siis yrittäisin samaa VB2010E:llä, esim vaikka noppaohjelma, jossa jokainen eri silmä luku koostetaan OvalShape1(i) "olioilla" ja niiden näkyvyyttä säädellään satunnaislukutyylillä, jossa i kuvaa "olion" ns. indeksiä, ainakin vanhassa käytettiin tätä nimeä.

Tässä linkki ohjelmankoodiin http://www.vbtutor.net/VB_Sample/dice1.htm , mutta jostakin pitää "olioiden" ominaisuuksia muuttaa sopiviksi

Antti Laaksonen [19.12.2010 16:27:38]

#

Tässä on yksi esimerkki asiasta:

Dim tekstit(2) As TextBox

Private Sub Form1_Load(ByVal sender As System.Object, _
                       ByVal e As System.EventArgs) Handles MyBase.Load
    Dim i As Integer
    ' luodaan kolme tekstikenttää
    For i = 0 To 2
        tekstit(i) = New TextBox
        tekstit(i).Left = 50
        tekstit(i).Top = 50 * i
        Controls.Add(tekstit(i))
    Next
    ' kirjoitetaan yhteen niistä teksti "ABC"
    Randomize()
    tekstit(Int(Rnd() * 3)).Text = "ABC"
End Sub

Mope [19.12.2010 17:25:16]

#

Miten nyt sitten tämän sivun http://www.vbtutor.net/VB_Sample/dice1.htm koodi tehtäisiin uudella VB:llä?

Ilmeisesti uudessa VB2010E:ssä ei voi ominausuuksissa enää indeksoida piirrettäviä kohteitä eri indekseillä, jotta nimi voisi olla sama?

Antti Laaksonen [19.12.2010 18:58:52]

#

Nopan voi piirtää esimerkiksi seuraavasti:

Private Sub Form1_Click(ByVal sender As Object, _
                        ByVal e As System.EventArgs) Handles MyBase.Click
    Dim kuva As Graphics = PictureBox1.CreateGraphics
    Dim viiva As New Pen(Color.Black)
    Dim taytto As New SolidBrush(Color.Black)
    kuva.DrawRectangle(viiva, 0, 0, 40, 40)
    kuva.FillEllipse(taytto, 5, 5, 10, 10)
    kuva.FillEllipse(taytto, 25, 5, 10, 10)
    kuva.FillEllipse(taytto, 5, 25, 10, 10)
    kuva.FillEllipse(taytto, 25, 25, 10, 10)
End Sub

Mope [19.12.2010 20:18:09]

#

Niin, itse nopan piirtäminen ei ole ongelma, kyllähän noita muotoja voi piirrellä kuten vanhallakin VB:llä.

Mutta niiden piirrettyjen kohteiden nimen antaminen ja jos sen pitäisi olla sama, niin jotenkin pitäisi saada annettua kohteille nimi suunnilleen tähän tyyliin: Shape1(i), jossa suluissa oleva i on ns. vanha indeksiluku (Index), mutta miten se Properties -ikkunassa asetetaan kohdekohtaisesti?

Olisiko tiedossa sivustoja, jossa on koodeja eri VB2010Express ohjelmiin?

Antti Laaksonen [19.12.2010 20:59:29]

#

VB.NETissä kontrolleilla ei ole Index-ominaisuutta, joten haluamasi asia ei ole mahdollinen. Kuitenkin kontrolleista voi tehdä taulukon ensimmäisen esimerkkini mukaisesti, jolloin niihin voi viitata samaan tapaan.

Myös formille piirretyistä kontrolleista voi tehdä taulukon:

Dim tekstit(2) As TextBox

Private Sub Form1_Load(ByVal sender As System.Object, _
                       ByVal e As System.EventArgs) Handles MyBase.Load
    tekstit(0) = TextBox1
    tekstit(1) = TextBox2
    tekstit(2) = TextBox3
    tekstit(1).Text = "ABC"
End Sub

Grez [20.12.2010 08:06:08]

#

Mope kirjoitti:

Olisiko tiedossa sivustoja, jossa on koodeja eri VB2010Express ohjelmiin?

Tuskin missään on nimenomaan VB2010Expressille, koska ei siinä olisi mitään järkeä. VB.Net -lähdekoodeja on netti pullollaan (ja lisäksi c#-koodit voi autokonvertoida VB.Netille ja päinvastoin).

Eli siis lähtökohtaisesti kaikki VB.netille (2002, 2003, 2005, 2008 ja 2010 versiot) kaikille editioille (Express, Professional, Enterprice etc.) tehdyt koodiesimerkit toimii VB2010Expressillä.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta