Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET: VB painikkeista

Sivun loppuun

Isoarska83 [26.04.2007 18:59:01]

#

Miten saisin tälläisen toteutettua:

Painonappi Hae! 1)joka arpoo valittavan kysymyksen (excel-rivin)
Painonappi Tarkasta 2) Esittää kysymyksen
Textbox 3) Käyttäjä kirjoittaa vastauksen
4) Tarkastaa onko vastaus oikein ja ilmoittaa sen

Vastaus tulisi sekä englanniksi että suomeksi

Grez [26.04.2007 23:07:11]

#

1) Arpoa voi rnd() -funktiolla.
2) InputBox -funktiolla voi "esittää kysymyksen".
4) Vertailuoperaattori on =.

Jos haluat tarkempia vastauksia, esitä tarkempia (yksilöidympiä) kysymyksiä. Myöskin jos saisit jonkinlaisen rungon tehtyä itse ja kysyisit sitten sen ongelmakohdista niin tulisi ehkä vähän vähemmän sellainen tunne, että toivotaan jälleen kerran muiden tekevän omat työt/koulutehtävät...

Isoarska83 [26.04.2007 23:32:29]

#

Pistelen tässä päivitystä koodiin kun olen saanut jonkilaista toimivaa versiota

Isoarska83 [27.04.2007 01:27:17]

#

'Jos valintaruutu painetaan asetetaan lomakkeen väri mustaksi
If (ctrlcheckbox1.CheckState = System.Windows.Forms.CheckState.Checked) Then
            Form1.BackColor() = System.Drawing.ColorTranslator.FromOle(RGB(255, 0, 0))

'Jos valintaruutua ei ole painettu pysyy lomakkeen värin tausta oletuksena
If (ctrlcheckbox1.CheckState = System.Windows.Forms.CheckState.Unchecked) Then
Form1.BackColor = System.Drawing.ColorTranslator.FromOle(RGB(210, 210, 210))

Mikäköhän tuossa mahtaa olla vikana kun näyttää herjaavan tuota ekaa IF riviä BackColor() asti samoin tuo alempi Form1.backColor tarkoituksena siis saada '-merkillä olevat komennot toimimaan.

Quirzo [27.04.2007 08:08:57]

#

End if?
Kokeile form1.backcolor = colors.blue jne.

Isoarska83 [27.04.2007 12:46:57]

#

Ei onnistunut, tuossa siis projekti:

http://img174.imageshack.us/my.php?image=vbio5.jpg

Pöytälamppu [27.04.2007 15:28:29]

#

Ilmeisesti ongelmasi on formin taustavärin vaihto. Se onnituu näin:

'valmiilla väreillä
Me.BackColor = Color.Black

'RGB:llä
Me.BackColor = Color.FromArgb(210, 210, 210)

Huomaa että tuossa kutsutaan Me.BackColor eikä Form1.BackColor

neau33 [27.04.2007 16:51:04]

#

Heppa Isoarska83!

Minusta olis ihan mahdottoman kiva tietää syy siihen, että miksi haluaisit käytää (vastioin kaikkien gurujen nevoja) ohjelmasi tietokantana juuri Excel'iä ..?

Grez [27.04.2007 17:47:28]

#

Minusta tuntuu että "Gurujen" neuvot on nyt ymmärretty lievästi sanoen väärin...

Toisaalta noiden esimerkkien perusteella voisin ymmärtää, että sovellus olisi tarkoitus tehdä VB.NETillä eikä Exceliin, joten sikäli on ihan hyvä kysymys miksi tiedot tallennettaisiin Exceliin.

neau33 [27.04.2007 21:42:08]

#

Heippa Grez!

Jaksas sä vääntää tosta "named" instaissin ja selitää mitä tapahtuu...(mua rupee ihan oikeesti jo ......n tää excel)

Grez [27.04.2007 22:19:58]

#

Sori, en ymmärrä mitä ajat takaa. Et muuten vastannut mitään mun mailiin niin en tiedä tuliko ees perille :(

neau33 [27.04.2007 23:34:08]

#

Heippa Grez!

Kiitos tuli perille:)

Isoarska83 [28.04.2007 00:21:26]

#

Juuri tuota siis tarkoitin mitä Grez tuossa sanoi eli sovellus tehdään VB:Netillä eli sori nuo sekoilut.

Isoarska83 [28.04.2007 01:04:06]

#

'Jos valintaruutua painetaan asetetaan lomakkeen väri mustaksi
ctrlcheckbox1.BackColor = Color.Black
'Jos valintaruutua ei ole painettu pysyy lomakkeen värin tausta oletuksena
ctrlcheckbox1.BackColor = Color.DarkGray


Miksi tuo nyt ei toimi:
ctrlcheckbox1.BackColor = Color.Black tai Me.BackColor = Color.Black

Me.BackColor = Color.FromArgb(210, 210, 210) tai ctrlcheckbox1.BackColor = Color.FromArrgb(210, 210, 210)

Ihan sama tulos rgb:llä tai suoraan väreillä eli ei toimi.

Eli tarkoitus checkboxin (ctrlcheckbox1) nappia painettaessa (rasti ruutuun) että väri vaihtuisi mustaksi jos ei paineta niin väri pysyy samana, tuo vaan ei ota onnistuakseen jostain ihme syystä.

Isoarska83 [28.04.2007 20:59:17]

#

ctrlcheckbox1.BackColor = Color.Black onnistuhan se tuolla mutta millä saan palautettua värin takaisin oletukseksi kun nappi ruksataan pois?

Grez [28.04.2007 21:55:53]

#

Katsot mikä sen napin väri on ennen muutosta ja laitat sen väriksi. Todennäköisesti saat sen ihan napin ominaisuuksia vilkuilemalla tai voit toki tallentaa sen johonkin muuttujaan ohjelmaa käynnistäessä tai mustaksi vaihtaessa.

Isoarska83 [28.04.2007 22:14:12]

#

Onnistui, mutta onnistuuko ihan satunnaisen värin käyttö joka kerta samoin vai onko tuolle jokin random komento erikseen?

Isoarska83 [30.04.2007 13:55:53]

#

Public Function RandomRGBColor() As Long
RandomRGBColor = RGB( _
Int(Rnd() * 256), _
Int(Rnd() * 256), _
Int(Rnd() * 256))
End Function

Onnistuuko tuon käyttö siten että aina ohjelmaa käynnistettäessä Formin väri vaihtuisi satunnaisesti? Nyt siis aliohjelma ja sen kertotauluohjelma käynnistyy ensin, mutta haluaisin homman niin että ensimmäisenä tulee funktio joka arpoo tuon formin värin sitten tuo kertotaulu, tarvittaessa saisin tuosta checkboxista formin värin palautettua oletusväriksi. Ei ota onnistuakseen

Dim kertoja As Short ' Muuttujan määrittely

    'Vaihdetaan näytettävää tekstiä laskee kun nappia painetaan eli kertoo painalluksen määrän
    Private Sub btnpainike_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnpainike.Click
        kertoja = kertoja + 1
        btnpainike.Text() = "Painoit minua ---painallus #" & kertoja
    End Sub

    ' Tämä suoritetaan kun hiiren kursori havaitsee liikettä
    ' Tekstiboxi näyttää hiiren x,y koordinaatit
    ' Hiiren kursori osoittaa hiiren liikkeen mutta ei painikkeiden päällä
    Private Sub Form1_MouseMove(ByVal eventSender As System.Object, ByVal eventArgs As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
        Dim Button As Short = eventArgs.Button \ &H100000
        Dim Shift As Short = System.Windows.Forms.Control.ModifierKeys \ &H10000
        Dim X As Single = (eventArgs.X)
        Dim Y As Single = (eventArgs.Y)
        ctrllabel.Text = "Mouse coordinates: (" & X & "," & Y & ")"
    End Sub

    'Aliohjelma joka näyttää MsgBoxissa halutun luvun kertotaulun 1-10
    Sub NaytaKertoTaulu(ByVal luku As Integer)
        Dim i As Integer, teksti As String
        For i = 1 To 10
            teksti = teksti & luku & "*" & i & "=" & (luku * i) & vbCrLf
        Next
        MsgBox(teksti)
    End Sub

    'Kertotaulu aliohjelman kutsu
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        NaytaKertoTaulu(2)
        NaytaKertoTaulu(5)
        NaytaKertoTaulu(10)
        NaytaKertoTaulu(20)

    End Sub

Public Function
        RandomRGBColor = RGB()As long
        Int(Rnd() * 256), _
        Int(Rnd() * 256), _
        Int(Rnd() * 256))
    End Function

    Private Sub chkbox_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkbox.CheckedChanged

    End Sub
End Class

Mod. edit: kooditagit

Isoarska83 [30.04.2007 16:01:07]

#

Pystyykö noita funktioiden järjestystä säätämään formin latauduttua? Jos haluan ensin 1) formilla on läpinäkyvyys timerin kanssa 2) Sen jälkeen tulee vasta tulee vasta kertolaskutoimitus.

Blaze [30.04.2007 16:07:46]

#

Isoarska83 kirjoitti:

Pystyykö noita funktioiden järjestystä säätämään formin latauduttua? Jos haluan ensin 1) formilla on läpinäkyvyys timerin kanssa 2) Sen jälkeen tulee vasta tulee vasta kertolaskutoimitus.

Varmistetaan nyt ensin, että ymmärsin oikein, jos tämä ei oo, mitä tarkotit, jätä loppuviesti lukematta ja tarkenna: haluat, että formi "feidaa" näkyviin, ja vasta kun se on kokonaan näkyvissä, voi sillä tehdä asioita?

Ota nuo kertotaulun näyttämiset pois tuolta Form_Loadista ja laita ne niin, että timer suorittaa ne kun formi on kokonaan näkyvissä.

Isoarska83 [30.04.2007 16:29:13]

#

Justiinsa noin, mutta tuossakin läpinäkyvyydessäkin on pakko käyttää timeria?
Ilman timeria ei feidannu kokonaan vaan jäi läpinäkyväksi

Isoarska83 [30.04.2007 18:00:24]

#

Millä saan arvottua lomakkeelle värit kun checkboxia painetaan ruksatuksi ja ruksaamattomana palauttaa kyseisen arvon lomakkeelle?

Isoarska83 [01.05.2007 19:12:13]

#

Private checkbox As Button


Private Sub randomBackColor(ByVal sender As Object, ByVal e As EventArgs)
     If GetType(System.Windows.Forms.Control).IsAssignableFrom(CType(Me.BackColor,
   Object).GetType()) Then
            '  Asettaa taustavärin jos kontrolloitavana on painike
            ' WindowsFormsComponentEditori asettaa random-värin
            Dim rnd As New Random
            CType(Me.ControlCollection, System.Windows.Forms.Control).BackColor = Color.FromArgb(rnd.Next(255), rnd.Next(255), rnd.Next(255))
            checkbox.Refresh()
        End If
    End Sub
End Class

Ainoa valitus tulee: "ControlCollection is a type in ohjelma.form and cannot be used in expression"

Eli mikäköhän tuossa on ongelmana

Isoarska83 [02.05.2007 18:04:15]

#

Sain sen random-värin onnistumaan.

Miten saan tehtyä nappulaan komennon joka tekee uusia formeja aina kun sitä painetaan?
Katselin tuolta oppaan tutoriaalista mallia, mutta kyseisellä esimerkillä ei näyttänyt onnistuvan. Lomake on nimeltään form1 ja toinen form2

neau33 [02.05.2007 20:13:39]

#

Heippa Isoarska83!

Private Sub Command1_Click()
 Dim UusiFormi As Form1: Set UusiFormi = New Form1
 UusiFormi.Caption = "UusiFormi": UusiFormi.Show
End Sub

Isoarska83 [03.05.2007 01:25:21]

#

UusiFormi.caption tuossa tulee virhettä: "caption is a member of form of 'ohjelma.form1'onko tuo caption jollain muulla nimellä/komennolla kun ei löydy valikosta?

Merri [03.05.2007 01:57:24]

#

Korjaa Dimistä Form1 -> Form.

Isoarska83 [03.05.2007 14:52:25]

#

caption onkin tässä VB.Netissä Name eli toimii nyt, mutta tuo tekee siis saman lomakkeen eli onnistuuko kokonaan tyhjän lomakkeen luominen?

Quirzo [03.05.2007 17:40:49]

#

Eikös caption ole vb.netissä text?

neau33 [03.05.2007 21:51:16]

#

Heippa taas Isoarska83!

tällä pitäs tulla uusi tyhjä formi...

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs)
 Dim uusiformi As Form = new Form
 uusiformi.Text="uusiformi" '(~caption)
 uusiformi.Name="uusiformi"
 uusiformi.Show()
End Sub

Sivun alkuun

Vastaus

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

Tietoa sivustosta