login  Naam:   Wachtwoord: 
Registreer je!
 Forum

vb.net verkorten code mogelijk? (Opgelost)

Offline zwobbel - 26/11/2007 18:43
Avatar van zwobbelPHP gevorderde Hallo ik heb hier een private sub code ik vroeg mij af of deze korter kan? Is het meschien mogelijk dat de knop die word ingegeven bij het aanroepen van de sub in de btX plaats neemt ?
Dit zou enorm!!! veel schillen in code en kan ik meer automatiseren in de toekomst ook...

Code:
  1. Private Sub KaartOptie(ByVal knop As Integer, ByVal weergave As Boolean)
  2. 'Kaarten verbergen
  3. Select Case knop
  4. Case 1
  5. Me.bt1.Visible = weergave
  6. Case 2
  7. Me.bt2.Visible = weergave
  8. Case 3
  9. Me.bt3.Visible = weergave
  10. Case 4
  11. Me.bt4.Visible = weergave
  12. Case 5
  13. Me.bt5.Visible = weergave
  14. Case 6
  15. Me.bt6.Visible = weergave
  16. Case 7
  17. Me.bt7.Visible = weergave
  18. Case 8
  19. Me.bt8.Visible = weergave
  20. Case 9
  21. Me.bt9.Visible = weergave
  22. Case 10
  23. Me.bt10.Visible = weergave
  24. Case 11
  25. Me.bt11.Visible = weergave
  26. Case 12
  27. Me.bt12.Visible = weergave
  28. Case 13
  29. Me.bt13.Visible = weergave
  30. Case 14
  31. Me.bt14.Visible = weergave
  32. Case 15
  33. Me.bt15.Visible = weergave
  34. Case 16
  35. Me.bt16.Visible = weergave
  36. End Select
  37. End Sub

24 antwoorden

Gesponsorde links
Offline jvs - 26/11/2007 18:51 (laatste wijziging 26/11/2007 18:54)
Avatar van jvs HTML beginner ik denk dat dit juist moet zijn. Ik heb zelf ook nog niet zoveel ervaring met .NET dus het is niet 100% zeker

me.ctype(sender, button).visible = weergave

succes!
Offline JBke - 26/11/2007 19:16 (laatste wijziging 26/11/2007 19:22)
Avatar van JBke PHP gevorderde Ben zelf een aantal maanden omwille van een nieuw project op het werk met VB .Net begonnen met visual studio 2005 had wel ervaring met C++ en OOP programming en een 2 tal jaar PHP en andere webtalen maar probeer eens het volgende al vermoed ik dat er nog wel andere manieren zijn zoals hierboven reeds aangehaald werd.

je kan het in een lus steken

  1. Dim x As Integer
  2.  
  3. For x = 1 To 16 Do
  4. Case x
  5. Me.bt & x & .Visible = weergave
  6. Next


of doe het met een if vergelijking en zonder case maar met de For en een If.

En je kan eventueel met weergave hetzelfde doen, voeg een y aan je weergave toe en definieer eerst al je weergave velden.


Try it
Zou moeten lukken.
Offline zwobbel - 26/11/2007 19:31 (laatste wijziging 26/11/2007 19:32)
Avatar van zwobbel PHP gevorderde @JBke jou oplossing is niet strict...
@jvs ook niet strict...

En het probleem zegt dat die variables niet gedeclaired zijn...
Offline JBke - 26/11/2007 19:33 (laatste wijziging 26/11/2007 19:34)
Avatar van JBke PHP gevorderde met de case erin niet maar gebruik een if vergelijking in de plaats??
Gebruik een soortgelijke constructie in een windows applicatie voor textconversie en werkt. Strict mja denk het idd niet.

Variabelen niet gedeclareerd en de Dim dan?? en de eerste toewijzing is in de For loop?? Wat is dan niet gedeclareerd??
Offline Wim - 26/11/2007 19:38
Avatar van Wim Crew algemeen met CType en naar het type button mss? zo krijg je al je buttons als objecten...
Offline Sitebase - 26/11/2007 19:40
Avatar van Sitebase PHP expert Dit misschien?
  1. Me.bt & knop & .Visible = weergave


Tis maar een gokje want het is al eeuwen geleden dat ik nog iets met VB gedaan heb.
Offline JBke - 26/11/2007 19:46 (laatste wijziging 26/11/2007 19:51)
Avatar van JBke PHP gevorderde dat heb ik reeds voorgesteld x mag je vervangen met wat je wil he??
draai je gedachte om en voeg reeds een functie toe aan je button/kaart vooralleer je het opbouwd.

en mss tip: titjes heeft me zeer goed geholpen met een soortgelijk probleem waar ik anders een case van 100 of 1000 elementen nodig zou hebben???? anders eens post aan hem?? Hij de .NET expert   zie antwoord van titjes op mijn laatste post bij overige op het forum over VB .NET.
Offline Abbas - 26/11/2007 20:22 (laatste wijziging 26/11/2007 20:23)
Avatar van Abbas Gouden medaille

Crew .NET
Waarom met al die cases en loops werken. Bij het aanroepen van de Sub geef je een nummer en een boolean mee die je daarna gaat gebruiken in de functie. Dus de code moet zo kunnen werken:
  1. Private Sub KaartOptie(ByVal knop As Integer, ByVal weergave As Boolean)
  2. Dim x As Integer = knop
  3. Dim flag As Boolean = weergave
  4.  
  5. Me.Controls("bt" & x).Visible = flag
  6.  
  7. End Sub

Ik heb deze code getest en ze werkt zoals het hoort. 
Offline zwobbel - 26/11/2007 20:45 (laatste wijziging 26/11/2007 20:53)
Avatar van zwobbel PHP gevorderde Oooh geweldig danku titjes... ik zit hier al zo lang op te google en dan is het zo simpel.. zucht bedankt
Offline Abbas - 26/11/2007 20:51
Avatar van Abbas Gouden medaille

Crew .NET
Geen probleem! That's what i'm here for... 
Offline zwobbel - 26/11/2007 20:53
Avatar van zwobbel PHP gevorderde Nu nog mess ik toch met die sub bezig ben...
Ook heb ik een zelfde sub geschreve die alles bijna het zelfde doet maar enkel dan met de optie dat hij die kaart verandert naar een standaard enkel krijg ik hier een error dat hij de image functie plots niet meer kent.

Code:
  1. Private Sub KaartOptie(ByVal knop As Integer, ByVal weergave As Boolean, ByVal standaard As Boolean)
  2.  
  3. Dim x As Integer = knop
  4. Dim flag As Boolean = weergave
  5. Dim reset As Boolean = standaard
  6.  
  7. If reset = True Then
  8. Me.Controls("bt" & knop).Image = Image.FromFile("memory-back.png")
  9. Else
  10. Me.Controls("bt" & knop).Visible = flag
  11. End If
  12.  
  13. End Sub
Offline JBke - 26/11/2007 21:35
Avatar van JBke PHP gevorderde Lol die Titjes toch he, goede referentie. Open Favorites, Add.... Added......No More Needed.... 
Offline Stijn - 26/11/2007 21:49
Avatar van Stijn PHP expert Ik zie aan de highlighting dat reset een statement is... Probeer het eens met een andere naam.
Offline zwobbel - 26/11/2007 21:55
Avatar van zwobbel PHP gevorderde Neen de reset heeft geen belang hij toont de error dat hij de image bij de Controls optie niet herkent. Voor deze zoek ik dus een alternatief.
Offline Abbas - 26/11/2007 22:43
Avatar van Abbas Gouden medaille

Crew .NET
Die 'reset' maakt inderdaad niets uit hoor stijn, al lijkt het inderdaad aan de kleur verdacht. Daarom dat ik dus vind dat die highlighter niet deugt. Met mijn highlighter heb ik dat dus niet! 

Voor het probleem:

- Ben je zeker dat je wel een ImageButton hebt gebruikt want bij een gewone Button kan je dit niet toepassen.

- Heb je de "System.Drawing" library ingeladen, anders kent hij misschien de Image.FromFile("...") niet. Bovenaan de code-file zet je dit:
  1. Imports System.Drawing


- Refereer je naar de juiste locatie want ik zie alleen een bestandsnaam en dan moet de afbeelding in dezelfde folder als de code-file staan.

Kan je een duidelijkere foutmelding geven, wat hij precies zegt dat er misgaat? Misschien dat het toch ergens anders ligt, maar dan heb ik meer info over die fout nodig. Hopelijk ben je hier al wat mee! 
Offline zwobbel - 27/11/2007 19:00 (laatste wijziging 27/11/2007 19:02)
Avatar van zwobbel PHP gevorderde Die import helpt niet de andere functie die ik dus in de huidige sub wou bij schrijven werkt als volgt:

  1. Public StartKaart As Image
  2.  
  3. 'Kaarten terug naar blank plaatsen
  4. StartKaart = Image.FromFile("memory-back.png")
  5.  
  6. For keuze = 1 To 16
  7. resetKaart(keuze, StartKaart)
  8. Next
  9.  
  10. Private Sub resetKaart(ByVal knop As Integer, ByVal kaart As Image)
  11. 'Kaarten resetten
  12. Select Case knop
  13. Case 1
  14. bt1.Image = StartKaart
  15. Case 2
  16. bt2.Image = StartKaart
  17. Case 3
  18. bt3.Image = StartKaart
  19. Case 4
  20. bt4.Image = StartKaart
  21. Case 5
  22. bt5.Image = StartKaart
  23. Case 6
  24. bt6.Image = StartKaart
  25. Case 7
  26. bt7.Image = StartKaart
  27. Case 8
  28. bt8.Image = StartKaart
  29. Case 9
  30. bt9.Image = StartKaart
  31. Case 10
  32. bt10.Image = StartKaart
  33. Case 11
  34. bt11.Image = StartKaart
  35. Case 12
  36. bt12.Image = StartKaart
  37. Case 13
  38. bt13.Image = StartKaart
  39. Case 14
  40. bt14.Image = StartKaart
  41. Case 15
  42. bt15.Image = StartKaart
  43. Case 16
  44. bt16.Image = StartKaart
  45. End Select
  46. End Sub
Offline Abbas - 27/11/2007 19:15
Avatar van Abbas Gouden medaille

Crew .NET
Die code zou ook weer enorm kunnen verkort worden zoals ik al aantoonde in m'n vorige reactie, maar inderdaad zal hij de Image-functie niet herkennen want op een knop kan je geen achtergrondafbeelding zetten...
Offline zwobbel - 27/11/2007 19:17
Avatar van zwobbel PHP gevorderde En hoe in welke mannier kan ik dit verkorten?
Mja mijn ervaring is nog niet zo groot ik ben nog maar een maand bezig +- met vb.net

Volgende week begin ik classes te leren op school.
Offline Abbas - 27/11/2007 19:24
Avatar van Abbas Gouden medaille

Crew .NET
  1. Private Sub resetKaart(ByVal knop As Integer, ByVal kaart As Image)
  2.  
  3. 'Kaarten resetten
  4. Dim x As Integer = knop
  5. Dim krt As Image = kaart
  6.  
  7. Me.Controls("bt" & x).Image = krt
  8.  
  9. End Sub

Zoals ik dat daarvoor al had gedaan dus! Maar zoals ik al zei, een afbeelding kan je niet opde achtergrond van een Button plaatsen...
Offline zwobbel - 27/11/2007 19:32 (laatste wijziging 27/11/2007 19:33)
Avatar van zwobbel PHP gevorderde Ik krijg de error:
Error 1 'Image' is not a member of 'System.Windows.Forms.Control'. G:\VB.NET\GoMemory\GoMemory\part1.vb 199 9 GoMemory

En waarom krijg ik die error dat niet als ik die case select gebruik want jij zegt dat dat niet gaat?
Offline Abbas - 27/11/2007 20:04
Avatar van Abbas Gouden medaille

Crew .NET
Wat voor Control is dan die bt1, bt2, ...? Want anders zou het ook niet mogen werken met die Case-Switch! 
Offline zwobbel - 27/11/2007 20:11
Avatar van zwobbel PHP gevorderde Wacht :
http://zwobbel.webvisual.be/GoMemory.zip

Hier heb je het project code das meschien beter want is nogal moeilijk om zo uit te leggen.

Owja ik ben een beginner dus as je dingen ziet die nogal stom en omslachtig zijn en je hebt tijd om comments erbij te schrijven wat ik beter kan proberen zou ik dit leuk vinden.

Zo kan ik verder prutse ;)
Offline Abbas - 27/11/2007 20:23
Avatar van Abbas Gouden medaille

Crew .NET
Ik ik zal er naar kijken, maar ik kan je niet binnen de vijf minuten verder helpen aangezien ik ook nog andere dingen te doen heb maar ik laat je zo snel mogelijk iets weten, goed? 
Offline zwobbel - 27/11/2007 21:01
Avatar van zwobbel PHP gevorderde allemaal goed hoor, ik ben al blij dat je wilt kijken maar ik heb alle tijd danku alvast voor een beginner zoals ik te helpe ;)
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.217s