Miten voin Visual Basic 2005:llä tehdä ohjelmallisesti esimerkiksi PictureBoxin?
Kokonaan koskematta designeriin siis. Olisi tarvetta tollaiselle, koska tarvittavien picture boksien määrä saadaan selville vasta kun ohjelmaa ajetaan.
Kontrollien tekeminen ohjelmallisesti
8
564
Vastaukset
- xxxxx
Tee formille yksi kontrolli, jonka indeksiksi annat nollan. Tämän jälkeen voit kopioida sitä ajoaikana.
Esim. tee KuvaKontrolli(0)
Sitä saat kopioitua halutun määrän:
For i=1 to LKM
Load Kuvakontrolli(i)
next- Kysymyksen esittäjä
Hmm tajusinkohan nyt oikein.. Mihin tuo indeksi pitäisi laittaa? Ainakaan en voi tehdä pictureboxia jonka nimen perässä olisi indeksi tuolla tavalla.
- xxxxx
Kysymyksen esittäjä kirjoitti:
Hmm tajusinkohan nyt oikein.. Mihin tuo indeksi pitäisi laittaa? Ainakaan en voi tehdä pictureboxia jonka nimen perässä olisi indeksi tuolla tavalla.
Kun olet lisänyt formiin pictureboxisi. Paina sitten f4, jolloin ruudun oikeaan reunaan tulee pictureboxin propertiesit (=ominaisuudet), kuten visible, top/left ym. asetukset. Siellä on myös Index-ominaisuus. Se on aluksi tyhjä. Laita siihen nolla. Voit myös ruudussa kopioida pictureboxisi ja liittää sen samaan formiin, jolloin vb kysyy tehdäänkö siitä index-kontrolli vai annetaanko uusi nimi. Tämän jälkeen sinulla tosin on indeksit 0 ja 1, joten poista 1-indeksin kontrolli.
- Kysymyksen esittäjä
xxxxx kirjoitti:
Kun olet lisänyt formiin pictureboxisi. Paina sitten f4, jolloin ruudun oikeaan reunaan tulee pictureboxin propertiesit (=ominaisuudet), kuten visible, top/left ym. asetukset. Siellä on myös Index-ominaisuus. Se on aluksi tyhjä. Laita siihen nolla. Voit myös ruudussa kopioida pictureboxisi ja liittää sen samaan formiin, jolloin vb kysyy tehdäänkö siitä index-kontrolli vai annetaanko uusi nimi. Tämän jälkeen sinulla tosin on indeksit 0 ja 1, joten poista 1-indeksin kontrolli.
Oletko varma että se toimii VB 2005:ssä noin? Siellä propertiesseissa ei nimittäin ole indeksiä, ja jos kontrollia yrittää kopioida sille annetaan automaattisesti uusi nimi.
- xxxxx
Kysymyksen esittäjä kirjoitti:
Oletko varma että se toimii VB 2005:ssä noin? Siellä propertiesseissa ei nimittäin ole indeksiä, ja jos kontrollia yrittää kopioida sille annetaan automaattisesti uusi nimi.
Näköjään se ei onnistu tuolla tavalla VB 2005:ssä.
Itse käytän VB 6:sta.
Microsoft antaa näköjään ilmaiseksi ladata VB 2005:n. Joten latasin sen ja ihmettelin.
Siinä ei tarvitsekaan olla ruudussa kontrollia etukäteen, sillä sen voi kokonaan lisätä ajoaikana.
Se täytyy määritellä: Dim Testiobjekti As New Label()
Ja sitten lisätä formin kontrolleihin: Me.Controls.Add(Testiobjekti)
Tein ensimmäisen ohjelmani VB 2005:llä. Loin formiin suunniteluvaiheessa yhden labelin (Label1) ja kirjoitin siihen koodin. Aina kun labelia klikkaa, niin tehdään yksi uusi Label.
Tässä on koodi:
Public Class Form1
Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click
Static LKM
LKM = LKM 1
Dim Testiobjekti As New Label()
Me.Controls.Add(Testiobjekti)
Testiobjekti.Top = Label1.Top Label1.Height * LKM
Testiobjekti.Left = Label1.Left
Testiobjekti.AutoSize = True
Testiobjekti.Text = "Lisätty" Str$(LKM)
End Sub
End Class - Kysymyksen esittäjä
xxxxx kirjoitti:
Näköjään se ei onnistu tuolla tavalla VB 2005:ssä.
Itse käytän VB 6:sta.
Microsoft antaa näköjään ilmaiseksi ladata VB 2005:n. Joten latasin sen ja ihmettelin.
Siinä ei tarvitsekaan olla ruudussa kontrollia etukäteen, sillä sen voi kokonaan lisätä ajoaikana.
Se täytyy määritellä: Dim Testiobjekti As New Label()
Ja sitten lisätä formin kontrolleihin: Me.Controls.Add(Testiobjekti)
Tein ensimmäisen ohjelmani VB 2005:llä. Loin formiin suunniteluvaiheessa yhden labelin (Label1) ja kirjoitin siihen koodin. Aina kun labelia klikkaa, niin tehdään yksi uusi Label.
Tässä on koodi:
Public Class Form1
Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click
Static LKM
LKM = LKM 1
Dim Testiobjekti As New Label()
Me.Controls.Add(Testiobjekti)
Testiobjekti.Top = Label1.Top Label1.Height * LKM
Testiobjekti.Left = Label1.Left
Testiobjekti.AutoSize = True
Testiobjekti.Text = "Lisätty" Str$(LKM)
End Sub
End ClassKiitoksia, sain toimimaan :)
- Kysymyksen esittäjä
Nyt ilmaantui sellainen ongelma että pitäisi saada tehtyä subi joka ajetaan kun tuosta ajon aikana tehdystä kontrollista painaa, mutta se ei tunnu onnistuvan ainakaan niin että yksinkertaisesti laittaa Handles kontrollinNimi.Click. Mikä neuvoksi?
- xxxxx
Voit määritellä kontrollin eventille (esim. Click) halutun Subin näin: AddHandler Testiobjekti.Click, New EventHandler(AddressOf Testi)
Parantelin edellistä ohjelmapätkääni. Nyt aina kun lisättyä labelia klikataan, niin sen teksin perään lisätään uusi "x".
Public Class Form1
Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click
Static LKM
LKM = LKM 1
Dim Testiobjekti As New Label()
Me.Controls.Add(Testiobjekti)
Testiobjekti.Top = Label1.Top Label1.Height * LKM
Testiobjekti.Left = Label1.Left
Testiobjekti.AutoSize = True
Testiobjekti.Text = "Lisätty" Str$(LKM)
'tämä suorittaa kontrollin (tai olion) eventissä Click ohjelman Testi
AddHandler Testiobjekti.Click, New EventHandler(AddressOf Testi)
End Sub
Public Sub Testi(ByVal sender As System.Object, ByVal e As System.EventArgs)
'lisätään kontrollin (eli labelin tekstin perään x)
sender.text = sender.text "x"
End Sub
End Class
Ihan tässä harjoittelun ja mielenkiinnon vuoksi vastailen. VB 2005 käsitteet poikkeavat VB6:sta melkoisesti, joten ei heti löydä vastauksia. Nyt syötin quukleen näin: vb 2005 handles runtime "as new"
VB 2005 on ihan eri tuote kuin VB6. Todellakin sitä on parannettu todella paljon. Siirtyisin itsekin siihen, mutta kun ylläpidettävää VB6 koodia on niin paljon etten voi :(
VB 2005 vaatii ohjelmoijalta enemmän tietoa ja taitoa kuin VB6, mutta sillä myös voi ilmeisesti tehdä vapaammin mitä tahansa. Se myös pikaisen tutustumisen aikana vaikuttaa täydelliseltä oliokieleltä (mitä VB6 ei ollut).
Joten jos joku koodaaja tai yritys miettii millä kielellä alkaa tekemään uusia ohjelmia, niin suosittelen kyllä Visual Basic 2005:tä. Tai VB.NET-kieltä (josta en kyllä tiedä mitään).
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Säästäminen on typerää, muistakaa äänestää demareita
Säästäminen on typerää, koska aiheuttaa vain talouden taantumista ja lopulta tappaa potilaan. Demareiden tapa on satsat1027767Olli Rehn: Eläkkeistä pitää leikata. Nyt tuli Lindtmanille kauhun paikka
jos johtaa seuraavaa hallitusta. Purra: eläkkeisiin ei kosketa. Eikä tällä hallituskaudella varmasti kosketa, mutta seur4176917SDP:n budjetin peruskivi: "Rahaa nimittäin on!"
Demarien talouspolitiikan ydin on usein tiivistetty klassiseen meemiin: rahaa on, kunhan se on jonkun muun rahaa. Vuoden1625182Poliisien suosikkipuolueet ylivoimaisesti: Kokoomus ja persut
samoin on armeijan henkilöstön kanssa. Sen sijaan sekä vihreät, vasliitto ja SDP ovat hyljeksittyjä puolueita poliisien994107Sdp, Vihreät ja vasemmistoliitto muuttumassa naisten puolueiksi?
Sdp 64 % naisia, vihreät 70 % naisia ja vasemmistoliitto 60 % naisia. Ilmankos ne puolueet ajaa autoilevien kantasuomal954026Kun täällä kysytään aina vaan naisilta
Niin nyt kysytään miehiltä. Mies, voisitko ottaa kumppaniksesi naisen joka nostaa enemmän penkistä kuin sinä? Tienaa en723987Hatunnosto! Mari Hynynen (os. Perankoski) ja Jouni Hynynen auttavat vähäosaisia upealla tavalla!
Hatunnosto! Mari ja Jouni Hynynen ovat Vailla vakinaista asuntoa ry:n uudet kummit. Hynysiä motivoi halu lisätä ymmärr103752Tiesitkö? Tämä suomalainen keksi Elämäni biisi -sarjan - Viinin lipittely mainittu!
Tiesitkö? Elämäni biisi on suomalainen formaatti ja sen takana on Petja Peltomaa. Hänen kynästä ovat lähtöisin myös mm.03450Epäonnistunut "Tuppurais-operaatio" kaatoi Purran hallituksen
Persut yrittivät viimemetreillä häivyttää omaa täydellistä epäonnistumistaan syyttämällä opposition edustajaa nimettömil92296Ostaisitko sinä rempattavan asunnon Italiasta tai jostain muualta ulkomailta, mistä?
Ella Kanninen on tehnyt Italiassa asuntokaupat. Hän kertoo Instagramissa kierrelleensä viime kesänä Toscanassa katselema161879