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ä.
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
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
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
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?
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
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?
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
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ä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.