Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

crëeren van controls in een array en op een form

1 view
Skip to first unread message

petert

unread,
May 16, 2009, 5:14:01 PM5/16/09
to
sIn vb6 kon je in de formload controls toevoegen met een indexnummer zodat
automatisch een array werd gemaakt van de controls.
Hoe kan je dat in vb2008 doen. Ik heb een form met een matrix van labels
die gemaakt worden als het formulier word displayed. De matrix bestaat uit 7
bij 38 labels die een bepaalde status weergeeft. Deze labels zitten in één
array.
In vb2008 moet je, voor zover ik heb kunnen vinden, eerst de labels maken
(dim) en dan toevoegen aan het form en dan aan een control collection. Voor
een paar objects is dat geen probleem maar bij een groter aantal is dat niet
handig. Is er iemand die mij een voorbeeld kan geven hoe zoiets te doen,
bijvoorbeeld hoe dynamisch labels in een loop kunnen worden gemaakt en het
label kan worden toegevoegd op het form.
--
Peter

Cor Ligthert[MVP]

unread,
May 17, 2009, 3:32:02 AM5/17/09
to
Peter,

In Net is de form array niet meer aanwezig. Elke Control ,waarvan Form er
een i,s heeft een Control collection (in VB6 wordt alles gewoon array
genoemd, in Net wordt er onderscheid gemaakt in de manier zoals een array
technish is gemaakt).

Je kan echter gewoon je controls in een collectie benaderen, bijvoorbeeld
door ze in een aparte array te zetten zoals.

Dim myControlArray() as Control = {label1, textbox2, listbox3} 'Dit is dus
een echte array

Het maakt niet uit wat voor control het is.

Nu kan je dus bijvoorbeeld de hoogte gelijk maken door te doen

\\\
For Each x as Control in myControlArray
x.Height = 20
Next
///

Om dit te doen moet het dan well een property van Control zijn.
Een checkbox bijvoorbeeld heeft een aantal extra properties en die moet je
dan anders benaderen.

Dit is een voorbeeld, er zijn een eindeloos aantal alternatieven hiervoor.

Cor


"petert" <pet...@discussions.microsoft.com> wrote in message
news:DE9DEC02-C8F2-4F9C...@microsoft.com...

petert

unread,
May 17, 2009, 12:36:02 PM5/17/09
to
Cor,

bedankt voor je reactie. Dit had ik al begrepen en als zodanig georobeerd en
het werkt zonder probleem.
Het probleem is echter dat ik een formulier heb met heel veel controls in
dit geval labels. Wat ik graag wil is de labels via een stukje code aanmaken
inplaats van ze allemaal te definieren. Zoals je dat in vb6 kon doen met een
load en een indexnummer. De vraag is hoe maak je in een form automatisch een
reeks label met een unieke naam bijv label1, label2, label3 enz. dit in een
For Next loop
zodat ik hem na het aanmaken direct kan toevoegen aan een collection.
--
Peter

Cor Ligthert[MVP]

unread,
May 17, 2009, 2:14:33 PM5/17/09
to
Peter,

Zoals ik al schreef er zijn een eindeloos aantal mogelijkheden en als je er
mee bekend bent ontdek je dat het een veelvoud aan mogelijkheden is in
vergelijking met VB6.

Dit is over buttons maar kan niet zo goed met labels, in dit voorbeeld zit
meteen het toevoegen van de click events.

http://www.vb-tips.com/DynamicControl.aspx

Ik hoop dat dit een idee geeft.

Let er echter op dat deze controls in de methode worden gedefinieerd.
Ze zijn dus uitsluitend te benaderen later via de events (zie ook het
voorbeeld hiervoor voor de casting) of via de control collection.

Eventueel kan je ook de name of de tag propery gebruiken maar je komt er dan
niet ergens willekeurig bij.
VB voor Net houdt zich aan de regels van het OOP programmeren.

Overigens kan je wel bij controls komen die op een form staan.

For each ctr as control in Controls
if TypeOf(ctr) is label
ctr.Text = ""
end if
Next

Maar let op wat ik eerder schreef, bijvoorbeeld een tabpage heeft weer zijn
eigen controls.

Cor

"petert" <pet...@discussions.microsoft.com> wrote in message

news:68AB66FB-6CA5-483C...@microsoft.com...

petert

unread,
May 17, 2009, 5:36:01 PM5/17/09
to
Cor,

dit is precies wat ik maar niet kon vinden en nodig heb. Ik was in een
compleet verkeerde richting aan het denken en proberen. Het is mij volkomen
duidelijk dat alleen de properties voor het object bestaan die het normaal
ook heeft.
Nogmaals bedankt voor de oplossing.

0 new messages