Archief - weer een vb6 probleem :p

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Darth-Falcon

Legacy Member
om mijn code zo kort mogelijk te maken heb ik het volgende bedacht om 9 objecten van kleur te laten veranderen naargelang een andere optie

Dim varname As Variant
Dim intcounter As Integer
For intcounter = 1 To 9

varname = "imgr" & intcounter
varname(intcounter).Picture = LoadPicture(App.Path & "\images\rood.bmp")
Next

ik probeer dus varname naar de objecten imgr1 tot imgr9 te linken, probleem is dat het niet lukt, ik krijg de error type mismatch, hij herkent dus niet wat er in varname zit, hoe krijg ik dees opgelost :help:

ps die objecten zitten ook nog s in een control array

Asshen

Legacy Member
Je kan niet zomaar een object naar keuze maken van een Variant...
Jij stelt varname gelijk aan een string, maar direct daarna maak je er een array objecten van die een Picture property hebben of zo !?

K.

Darth-Falcon

Legacy Member
neenee die objecten bestaan al ze



wa in die varname variablen zit zijn de namen van de objecten die al op de form staan, der word nix bijgemaakt, ik wil gewoon da die varname variablen doorverwijzen naar een ander object om zo de code een pakske korter te kunnen maken

ik heb functies gemaakt ook waar variant variabelen mee in den titel zetten, en daar werkt het wel.

Function disc_click(intindex As Integer, varname As Variant)
If intindex = 1 Then
Else
Load varname(intindex - 1)
varname(intindex - 1).Visible = True

End If
varname(intindex).Top = 50 + 50 * intindex
varname(intindex).Enabled = False
End Function

e n word zo opgeroepen

disc_click Index, imgr1

(imgr1 is een object op het form met control array)

Darth-Falcon

Legacy Member
wa ik dus basic wil is da variable varname doorverwijst naar een object of andere variable

Asshen

Legacy Member
Begrijp niet goed wat je wil doen, maar then again.. mijn VB6 suckt heden wel al ferm.

Als je je variant doorgeeft aan je methode, al eens geprobeerd met een ByRef of zo ?

K

Darth-Falcon

Legacy Member
kijk ik heb 9 images staan op men form die gaan van imgr1 tem imgr9
als ik nu in varname de naam van eerste image imgr1 steek
en dan met die varname verder werk om de property's te veranderen bv
varname.picture = .... (in dees geval imgr1.picture dus)
als ik in varname imgr9 steek verander ik met dezelfde regel als hierboven de picture property van object imgr9 (dus imgr9.picture)

hetzelfde voor variablen bv intblabla1 tem intblabla9

varname moet dus kunnen doorverwijzen naar andere variablen of objecten

alleen wilt het dus nie werken :sad:

Cakeman

Legacy Member
Maak control arrays van uw pictures?

For intCounter = 0 To UBound(picImage)
picImage(intCounter).Picture = LoadPicture(App.Path & "bla.gif")
Next intCounter

Kn0t

Legacy Member
Kan zijn dat ik niet helemaal mee ben, maar moet je nie gewoon arrays gebruiken?
Dan kan je via de index die je als parameter van je function meekrijgt toch aan
de image / variabele. via imageArr(index) dus

Darth-Falcon

Legacy Member
zucht lees s int begin imgr1 tem imgr9 zijn al control arrays, anders zouden het 54 images zijn.

nu zijn het 9 rijen me ieders nen control array waar ik max 6 images uit laat komen

ik ben bezig me 4 op een rij spelleke te maken, boven het spelraam hangen 9 schijven die naargelang wie aan de beurt is van kleur moeten veranderen. wa dus imgr1 tem imgr9 is me nen bepaalden index (hangt er vanaf hoeveel schijven er al geworpen zijn in iedere rij, ma da indexen lezen enz moet k nog doen

Kn0t

Legacy Member
In dat geval gebruik je best een multidimensionele array (meerbepaald een 2D array in dit geval dus, van 9 op 6)
En indien vb6 geen zuiver multidimensionele arrays zou ondersteunen (geen idee), kan je altijd een array van arrays maken.

Darth-Falcon

Legacy Member
Kn0t zei:
In dat geval gebruik je best een multidimensionele array (meerbepaald een 2D array in dit geval dus, van 9 op 6)
En indien vb6 geen zuiver multidimensionele arrays zou ondersteunen (geen idee), kan je altijd een array van arrays maken.

gaat da voor controll arrays ? :eek:

Asshen

Legacy Member
zou kunnen, maar controls zijn toch ook maar objecten, en multidimensionele arrays van objecten kunnen toch...
Tenzij VB6 toch minder OO is dan men ons wil doen geloven :)

Cakeman

Legacy Member
Asshen zei:
zou kunnen, maar controls zijn toch ook maar objecten, en multidimensionele arrays van objecten kunnen toch...
Tenzij VB6 toch minder OO is dan men ons wil doen geloven :)
VB6 is niet OO, maar OB... Object Based...

Ik vind het vroeger een leuke taal... Als je Engels kan, dan kan je VB6.0.
Sinds ik vorig jaar op mijn stage 3 maand in VB6 heb moeten werken, heb ik er een enorme afkeer van gekregen... Brrrr

UniKorn

Legacy Member
Jullie zoeken het allemaal veel te ver.

1) Maak je controlarray met al je "vakjes" voor vier op een rij (bijvoorbeeld van 1 tot 90, 9 rijen van 10 vakjes
2) Maak een functie showfour die aan de hand van een 2dimensionele array je controlarray opvult (zijnde als [1,1] kleur x heeft, geef dan controlarrray(10) kleur x)
3) Werk verder met je 2dimensionele array om je logica te bepalen, en voer iedere keer nadat je logica gedaan is je functie showfour uit

Zo werk je logisch gezien gewoon met je 2dimensionele array, en gebruik je showfour om die array om te zetten naar vbcontrols

Darth-Falcon

Legacy Member
UniKorn zei:
Jullie zoeken het allemaal veel te ver.

1) Maak je controlarray met al je "vakjes" voor vier op een rij (bijvoorbeeld van 1 tot 90, 9 rijen van 10 vakjes
2) Maak een functie showfour die aan de hand van een 2dimensionele array je controlarray opvult (zijnde als [1,1] kleur x heeft, geef dan controlarrray(10) kleur x)
3) Werk verder met je 2dimensionele array om je logica te bepalen, en voer iedere keer nadat je logica gedaan is je functie showfour uit

Zo werk je logisch gezien gewoon met je 2dimensionele array, en gebruik je showfour om die array om te zetten naar vbcontrols

ik gebruik 9 control arrays voor de schijven die op de form staan (klik ik er op dan wordt die schijf gecopierd en in naar beneden geworpen), die control arrays van die images zijn alleen maar voor het visuele aspect te regelen. voor de rest heb ik een multidimensionale array om op te slagen op welk vakske welke kleur ligt, en met een apparte functie check ik na iedere worp wanneer het 4 op een rij is, dus ong wa ge zegt, ma da was men vraag eigelijk nie hier :lol: .
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan