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...
Private Sub KaartOptie(ByVal knop As Integer, ByVal weergave As Boolean)
'Kaarten verbergen
Select Case knop
Case 1
Me.bt1.Visible = weergave
Case 2
Me.bt2.Visible = weergave
Case 3
Me.bt3.Visible = weergave
Case 4
Me.bt4.Visible = weergave
Case 5
Me.bt5.Visible = weergave
Case 6
Me.bt6.Visible = weergave
Case 7
Me.bt7.Visible = weergave
Case 8
Me.bt8.Visible = weergave
Case 9
Me.bt9.Visible = weergave
Case 10
Me.bt10.Visible = weergave
Case 11
Me.bt11.Visible = weergave
Case 12
Me.bt12.Visible = weergave
Case 13
Me.bt13.Visible = weergave
Case 14
Me.bt14.Visible = weergave
Case 15
Me.bt15.Visible = weergave
Case 16
Me.bt16.Visible = weergave
End Select
End Sub
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.
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??
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.
Abbas - 26/11/2007 20:22 (laatste wijziging 26/11/2007 20:23)
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:
Private Sub KaartOptie(ByVal knop As Integer, ByVal weergave As Boolean)
Dim x As Integer = knop
Dim flag As Boolean = weergave
Me.Controls("bt" & x).Visible = flag
End Sub
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.
Private Sub KaartOptie(ByVal knop As Integer, ByVal weergave As Boolean, ByVal standaard As Boolean)
Dim x As Integer = knop
Dim flag As Boolean = weergave
Dim reset As Boolean = standaard
If reset = True Then
Me.Controls("bt" & knop).Image = Image.FromFile("memory-back.png")
Else
Me.Controls("bt" & knop).Visible = flag
End If
End Sub
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:
- 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!
Public StartKaart As Image
'Kaarten terug naar blank plaatsen
StartKaart = Image.FromFile("memory-back.png")
For keuze = 1 To 16
resetKaart(keuze, StartKaart)
Next
Private Sub resetKaart(ByVal knop As Integer, ByVal kaart As Image)
'Kaarten resetten
Select Case knop
Case 1
bt1.Image = StartKaart
Case 2
bt2.Image = StartKaart
Case 3
bt3.Image = StartKaart
Case 4
bt4.Image = StartKaart
Case 5
bt5.Image = StartKaart
Case 6
bt6.Image = StartKaart
Case 7
bt7.Image = StartKaart
Case 8
bt8.Image = StartKaart
Case 9
bt9.Image = StartKaart
Case 10
bt10.Image = StartKaart
Case 11
bt11.Image = StartKaart
Case 12
bt12.Image = StartKaart
Case 13
bt13.Image = StartKaart
Case 14
bt14.Image = StartKaart
Case 15
bt15.Image = StartKaart
Case 16
bt16.Image = StartKaart
End Select
End Sub
Public StartKaart As Image
'Kaarten terug naar blank plaatsen
StartKaart = Image.FromFile("memory-back.png")
For keuze =1To16
resetKaart(keuze, StartKaart)
Next
PrivateSub resetKaart(ByVal knop AsInteger, ByVal kaart As Image)
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...
Private Sub resetKaart(ByVal knop As Integer, ByVal kaart As Image)
'Kaarten resetten
Dim x As Integer = knop
Dim krt As Image = kaart
Me.Controls("bt" & x).Image = krt
End Sub
PrivateSub resetKaart(ByVal knop AsInteger, ByVal kaart As Image)
'Kaarten resetten
Dim x AsInteger= knop
Dim krt As Image = kaart
Me.Controls("bt"& x).Image= krt
EndSub
Zoals ik dat daarvoor al had gedaan dus! Maar zoals ik al zei, een afbeelding kan je niet opde achtergrond van een Button plaatsen...
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.
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?