Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Kuva näkyviin listboxista

Pyltsä [22.12.2004 01:29:12]

#

Pitääs saada tietyn auton kuva näkyviin pictureboxissa ku klikkaa tietyn auton merkkiä listboxissa.
En osaa sen ku if-lauseella muttaku jos autoja on palio nii
tuloo liikaa "koodia" eikä jaksa kirioottaa.
Mikä olis paree???????
Mulla oli tälläänen listboxis:

if list1.text="auton merkki" then
picture1.picture=loadpicture ("c:\jotaki\jotaki.jpg")
end if

nomic [22.12.2004 02:06:01]

#

itelläni kävi mielessä tämmöinen tapa:
luo lomakkeelle seuraavat lelut:
List1
Picture1
File1

Dim määrä As Integer
Dim a As String
Private Sub Form_Load()
    File1.Visible = False 'piilotetaan kun käyttäjä  halusi leikkiä vain list1:llä
    määrä = File1.ListCount - 1
    For i = 0 To määrä  'käydään joka tiedosto läpi
        a = File1.List(i) 'a:n arvoksi  tiedoston nimi
        List1.AddItem a   'vipataan se listiin
    Next i
End Sub

Private Sub List1_Click()
    Picture1.Picture = LoadPicture(App.Path & "\" & List1.Text) 'kuva haetaan ohjelman omasta kansiosta
End Sub

Varmasti saa tehtyä vielä helpommin, mutta tämä tuli nyt ekana mieleen. :)

NixDu [22.12.2004 08:55:52]

#

En osaa nyt kirjoittaa parempaa koodia, mutta tässä tulis tämmöinen helppi jolla ainakin itse tein yhden tuon tyylisen jutun.

Visual Basic -ohjelman lauseiden suoritusta voidaan ohjata myös Select Case -ehtorakenteilla.
Select Case -rakenne muistuttaa If..Then...ElseIf-rakennetta, mutta on tehokkaampi, kun haarautuminen riippuu vain yhdestä muuttujasta.
Select Case -rakenne näyttää tällaiselta:

Select Case muuttuja
Case arvo1
lauseet, jotka suoritetaan, jos muuttuja on yhtä kuin arvo1
Case arvo2
lauseet, jotka suoritetaan, jos muuttuja on yhtä kuin arvo2
Case arvo3
lauseet, jotka suoritetaan, jos muuttuja on yhtä kuin arvo3
Case else
lauseet, jotka suoritetaan, jos mikään ehdoista ei ole tosi
End Select
Select Case Auto
Case Is Mersu
Label1.Text = "Autojen auto (Ainakin rikkaille)"
Case Mazda
Label1.Text = "Parempaa autoa saa hakea"
End Select

En ole varma tuleeko tuohon ensimmäiseen Is sanaa tuossa lauseessa, mutta jos teet tämmöisen niin silloin ainakin tulee

Select Case Ika
Case Is < 13
Label1.Text = "Nuoruuden kulta-aikaa!"
Case 13 To 19
Label1.Text = "Nauti teini-iästä!"
End Select

Antti Laaksonen [22.12.2004 09:33:18]

#

Auton valinta kannattaa toteuttaa suunnilleen näin:

' 1. indeksi: auton järjestysnumero
' 2. indeksi: auton nimi / tiedostonimi
Dim autot(1 To 3, 1 To 2) As String
Dim automaara As Integer

' lataa autot taulukkoon
Sub LataaAutot()
    ' paras tapa olisi ladata nämä tiedostosta
    autot(1, 1) = "Audi"
    autot(1, 2) = "audi.bmp"
    autot(2, 1) = "BMW"
    autot(2, 2) = "bmw.bmp"
    autot(3, 1) = "Chevrolet"
    autot(3, 2) = "chevrolet.bmp"

    automaara = 3
End Sub

' lisää autot listalle
Sub ListaaAutot()
    Dim i As Integer

    For i = 1 To automaara
        List1.AddItem autot(i, 1)
    Next
End Sub

Private Sub Form_Load()
    LataaAutot
    ListaaAutot
End Sub

' näyttää auton kuvan listasta painettaessa
Private Sub List1_Click()
    ' App.Path on ohjelman oma hakemisto
    ' List1.ListIndex on listalta valittu kohta (ylin kohta on 0)
    Picture1.Picture = LoadPicture(App.Path + "\" + autot(List1.ListIndex + 1, 2))
End Sub

Pyltsä [22.12.2004 15:37:16]

#

En tajunnu kuinka sen saa lataamaan tekstitiedoston tietystä sijainnista mutta aiva sama pitää yrittää soveltaa...

Vastaus

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

Tietoa sivustosta