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


Hur föra vidare värden från en knapp-procedur till en annan?

Postades av 2005-11-18 15:17:45 - Pia Alexandra Malmström, i forum visual basic - allmänt, Tråden har 3 Kommentarer och lästs av 611 personer

Hej!

Jag sitter och jobbar med att skapa ett litet program som fyller en matris med värden från textrutor. Jag bemästrar ännu inte så bra den ädla konsten att programmera i Visual Basic och har stött på ett problem.

PROGRAMBESKRIVNING: Jag har tre textrutor, en där man ska skriva in rad, en för kolumn och en för vilket värde positionen ska ha. Detta ska sedan in i en matris á 4 x 4, alltså om man skriver in rad 2, kolumn 4 och värdet 10, ska siffran 10 hamna på rätt position i en lable i matrisen. Jag har gjort en kontrollarray av lables, lblCArrayRK (0-15), i en Picturebox, där siffrorna ska hamna när man trycker på knappen "Uppdatera" (cmdUppdatera).
Genom att klicka på knappen "Lägg till" (cmdLaggTill), har jag lagt till värdena från textboxarna till en array som jag kallar arrintMatris(1 to 4, 1 to 4). Se nedan:

Sub LaggTill(ByRef intRad As Integer, ByRef intKolumn As Integer, _
ByRef intVarde As Integer, arrintMatris() As Integer)

arrintMatris(intRad, intKolumn) = intVarde

End Sub

PROBLEMET: När jag skriver in t.ex. 2 i textrutan för Rad, 3 för Kolumn och 10 för Värde, så visas det i matrisen om jag har följande kod (se nedan) inne i cmdLaggTill_Click() istället för i cmdUppdatera_Click(). Problemet är då, att så fort jag skriver in nya värden i textrutorna, så skrivs det gamla talet i matrisen över och ersätts med det nya (resten av de icke ifyllda fälten blir 0:or).

Mina variabler lever ju bara inne i sub:en, och jag vet inget sätt att föra vidare dem till Sub cmdUppdatera_Click(), så att jag kan skilja på procedurerna. (Jag har nämligen fått instruktioner om att helst inte använda globala variabler.) Så här ser koden i cmdLaggTill ut just nu:

Private Sub cmdLaggTill_Click()
Dim arrintMatris(1 To 4, 1 To 4) As Integer 'Array
Dim intRad As Integer
Dim intKolumn As Integer
Dim intVarde As Integer
Dim dblMedel As Double


If LasIndata(intRad, intKolumn, intVarde) Then
Call LaggTill(intRad, intKolumn, intVarde, arrintMatris)
End If
Call Uppdatera(intRad, intKolumn, intVarde, arrintMatris())

txtRad.Text = ""
txtKolumn.Text = ""
txtVarde.Text = ""


End Sub


...och såhär ser Sub Uppdatera ut:

Sub Uppdatera(ByVal intRad As Integer, ByVal intKolumn As Integer, ByVal intVarde As Integer, arrintMatris() As Integer)
Dim Pos As Integer

'Pos = (intRad - 1) * 4 + intKolumn - 1

For intRad = 1 To 4
For intKolumn = 1 To 4
lblCArrayRK((intRad - 1) * 4 + intKolumn - 1) = arrintMatris(intRad, intKolumn)
Next intKolumn
Next intRad

End Sub

Är det någon som vet hur jag borde gå till väga för att föra vidare variabler med värden till den andra knappens klick-procedur? Alt. hur gör jag för att inte skriva över de gamla värdena i cmdLaggTill_Click()?

Tacksam för svar,

/ Pia M


Svara

Sv: Hur föra vidare värden från en knapp-procedur till en annan?

Postades av 2005-11-18 16:36:18 - Andreas Hillqvist

Matrisen bör ligga på modulnivån:

Private arrintMatris(1 To 4, 1 To 4) As Integer 'Array

Private Sub cmdLaggTill_Click()
Dim intRad As Integer
Dim intKolumn As Integer
Dim intVarde As Integer
Dim dblMedel As Double

    If LasIndata(intRad, intKolumn, intVarde) Then
        Call LaggTill(intRad, intKolumn, intVarde, arrintMatris)
    End If
    Call Uppdatera(intRad, intKolumn, intVarde, arrintMatris())

    txtRad.Text = ""
    txtKolumn.Text = ""
    txtVarde.Text = ""


End Sub


Sub Uppdatera(ByVal intRad As Integer, ByVal intKolumn As Integer, ByVal intVarde As Integer, arrintMatris() As Integer)
Dim Pos As Integer

    'Pos = (intRad - 1) * 4 + intKolumn - 1

    For intRad = 1 To 4
        For intKolumn = 1 To 4
            lblCArrayRK((intRad - 1) * 4 + intKolumn - 1) = arrintMatris(intRad, intKolumn)
        Next intKolumn
    Next intRad

End Sub


Svara

Sv: Hur föra vidare värden från en knapp-procedur till en annan?

Postades av 2005-11-18 16:45:02 - Åsa Holmgren

Behöver du verkligen matrisen? Räcker det inte lika bra med:

<code>
Private Sub cmdLaggTill_Click()
Dim lIdx As Long

lIdx = (CLng(Me.txtRad) - 1) * 4 + CLng(Me.txtKolumn) - 1
Me.lblCArrayRK(lIdx).Caption = Me.txtVarde

Me.txtKolumn = ""
Me.txtRad = ""
Me.txtVarde = ""
End Sub
</code>

Om du behöver värdena för uträkningar så har du dem ju i kontrollarrayen.


Svara

Sv:Hur föra vidare värden från en knapp-procedur till en annan?

Postades av 2005-11-18 16:54:21 - Pia Alexandra Malmström

Det fungerar säkert också!

Men jag var lite trög och insåg inte att jag hade lagt läggTill i en loop, och därför skrevs värdena över.
Typiskt.

Tack för hjälpen :-)

Mvh,

Pia


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 722
27 958
271 751
421
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