Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


skapa / anropa subrutin?

Postades av 2005-08-09 23:10:45 - Anders Hydén, i forum vb.net, Tråden har 4 Kommentarer och lästs av 609 personer

Så här ser en typisk bit ut i min kod som jag använder på 44st(har jag för mig) checkChanged på radiobuttons...

    Private Sub rb1c_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rb1c.CheckedChanged
        strCard1Color = Microsoft.VisualBasic.Right(rb1c.Name, 1)
        lblCard1Color.Text = strCard1Color
        If strCard1Color = "" Or strCard2Color = "" Then
            Exit Sub
        Else
            If strCard1Color = strCard2Color Then
                strSuite = "s"
            Else
                strSuite = "o"
            End If
        End If
        lblSuited.Text = strSuite
        If strCard1Value = "" Or strCard2Value = "" Or strSuite = "" Then
            Exit Sub
        Else
            lblCard.Text = strCard1Value & strCard2Value & strSuite
        End If
    End Sub


Det verkar ju lite onödigt att upprepa detta hela tiden då det enda som ändras är:
    Private Sub rb1c_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rb1c.CheckedChanged
        strCard1Color = Microsoft.VisualBasic.Right(rb1c.Name, 1)
... och
End Sub


Jag misstänker att man kan skapa en subrutin som innehåller:
        If strCard1Color = "" Or strCard2Color = "" Then
            Exit Sub
        Else
            If strCard1Color = strCard2Color Then
                strSuite = "s"
            Else
                strSuite = "o"
            End If
        End If
        lblSuited.Text = strSuite
        If strCard1Value = "" Or strCard2Value = "" Or strSuite = "" Then
            Exit Sub
        Else
            lblCard.Text = strCard1Value & strCard2Value & strSuite
        End If

... och sen anropa den i varje checkChanged för varje radiobutton sen...
Då måste det ju bli mycket enklare att ev. ändra om det behövs, och framför allt så blir koden mycket mindre...

Men hur gör man för att anropa den?
Säg att ex. gör en subrutin som ser ut så här:
    Private Sub SetVariables(ByVal sender As System.Object, ByVal e As System.EventArgs)
        If strCard1Color = "" Or strCard2Color = "" Then
            Exit Sub
        Else
            If strCard1Color = strCard2Color Then
                strSuite = "s"
            Else
                strSuite = "o"
            End If
        End If
        lblSuited.Text = strSuite
        If strCard1Value = "" Or strCard2Value = "" Or strSuite = "" Then
            Exit Sub
        Else
            lblCard.Text = strCard1Value & strCard2Value & strSuite
        End If
    End Sub

Hur anropar jag den rätt i koden som mao skulle se ut något liknande:
    Private Sub rb1c_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rb1c.CheckedChanged
        strCard1Color = Microsoft.VisualBasic.Right(rb1c.Name, 1)
        lblCard1Color.Text = strCard1Color
 'setVariables <-- här måste den ju in...?
    End Sub


Ps. Är "SetVariables" subrutinen rätt skriven?
/Anders


Svara

Sv: skapa / anropa subrutin?

Postades av 2005-08-10 06:44:55 - Andreas Hillqvist

Varför har flera event procedurer?

JAg är osäker på om man kan lägga till fler i Handles. Men det kan gå med:

 Private Sub rb1c_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rb1c.CheckedChanged, rb2c.CheckedChanged, rb3c.CheckedChanged, ...
        Dim chkbox as CheckBox = CType(sender, CheckBox)
        strCard1Color = Microsoft.VisualBasic.Right(rb1c.Name, 1)
        lblCard1Color.Text = strCard1Color
        If strCard1Color = "" Or strCard2Color = "" Then
            Exit Sub
        Else
            If strCard1Color = strCard2Color Then
                strSuite = "s"
            Else
                strSuite = "o"
            End If
        End If
        lblSuited.Text = strSuite
        If strCard1Value = "" Or strCard2Value = "" Or strSuite = "" Then
            Exit Sub
        Else
            lblCard.Text = strCard1Value & strCard2Value & strSuite
        End If
    End Sub


 Private Sub rb1c_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) 
        strCard1Color = Microsoft.VisualBasic.Right(sender.Name, 1)
        lblCard1Color.Text = strCard1Color
        If strCard1Color = "" Or strCard2Color = "" Then
            Exit Sub
        Else
            If strCard1Color = strCard2Color Then
                strSuite = "s"
            Else
                strSuite = "o"
            End If
        End If
        lblSuited.Text = strSuite
        If strCard1Value = "" Or strCard2Value = "" Or strSuite = "" Then
            Exit Sub
        Else
            lblCard.Text = strCard1Value & strCard2Value & strSuite
        End If
    End Sub

'Lägg koden i intierings koden.
AddHandler rb1c.CheckedChanged, AddressOf rb1c_CheckedChanged
AddHandler rb2c.CheckedChanged, AddressOf rb1c_CheckedChanged
AddHandler rb3c.CheckedChanged, AddressOf rb1c_CheckedChanged
AddHandler rb4c.CheckedChanged, AddressOf rb1c_CheckedChanged
'...


Svara

Sv:skapa / anropa subrutin?

Postades av 2005-08-10 10:44:49 - Anders Hydén

Hej Andreas!

Om du tittar på följande bild:
<img src="http://www.hyden.nu/poker/snapshot1.gif">

Varje val påverkar sqlfrågan

    Private Sub rbCard12_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rbCard12.CheckedChanged
        strCard1Value = Microsoft.VisualBasic.Right(rbCard12.Name, 1)
        If strCard1Color = "" Or strCard2Color = "" Then
            Exit Sub
        Else
            If strCard1Color = strCard2Color Then
                strSuite = "s"
            Else
                strSuite = "o"
            End If
        End If
        If strCard1Value = "" Or strCard2Value = "" Or strSuite = "" Then
            Exit Sub
        Else
            strCard = strCard1Value & strCard2Value & strSuite
            strSql = "SELECT " & strPlayers & " FROM holecards WHERE cards = '" & strCard & "'"
        End If
    End Sub

Det enda som skiljer alla procedurer ifrån varandra är
strCard1Value = Microsoft.VisualBasic.Right(rbCard12.Name, 1)

Nästa i ordningen heter rbCard13, rbCard14.. ovs...

Vad jag menar är att man borde kunna skapa en subrutin eller något som man anropar direkt efter strCard1Value...

Det är möjligt att det var precis det du beskrev, men isf förstod jag inte hur du menar.

Jag skulle vilja att subrutinen, eller vad det heter, är döpt till "setCard1Value"


Svara

Sv: skapa / anropa subrutin?

Postades av 2005-08-10 10:47:36 - Anders Henriksson

Du skulle kunna skapa en sub som du sedan kallar på i stället för att ha koden på 44 ställen.

Du lägger alltså den kod som inte ändras i en subrutin och läggaer bara till den kod som ändras på varje av de 44 ställena.

Skapa sub

sub setCard1Value()

lblCard1Color.Text = strCard1Color
        If strCard1Color = "" Or strCard2Color = "" Then
            Exit Sub
        Else
            If strCard1Color = strCard2Color Then
                strSuite = "s"
            Else
                strSuite = "o"
            End If
        End If
        lblSuited.Text = strSuite
        If strCard1Value = "" Or strCard2Value = "" Or strSuite = "" Then
            Exit Sub
        Else
            lblCard.Text = strCard1Value & strCard2Value & strSuite
        End If

End sub


Kalla på subrutinen
'ev kod som skall köras innan
call setCard1Value()


Svara

Sv:skapa / anropa subrutin?

Postades av 2005-08-10 12:40:31 - Anders Hydén

tackar!
Det var precis så jag menade!


Svara

Nyligen

  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 724
27 958
271 751
405
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies