PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Schleife mit Steuerelementen



Karlito
02.10.2010, 21:36
Grüßt euch

Ich bin gerade dabei nen kleinen Kalender zu machen
habe aber folgendes Problem

ich lese eine Datenabnk aus und möchte dann meine einzelnen controls ein datum übergeben. Ich weiss zwar wie ich ein datum übergebe...aber wie mach ich das bei 365? ich dachte mir das mit einer for schleife zu lösen, doch da bin ich auf das problem gestoßen. wie kann ich der for schleife sagen das sie bei jedem durchgang ein steuerelement weiter springen soll? das sieht bis jetzt so aus:


For i As Integer = 1 To 365

vGraphics = PictureBox1.CreateGraphics
vGraphics.DrawString((aa.SearchDates(lUser, CDate("01.01." & year) & " 10:10:10")), vFont, vBrush, vPoint)
Nextdas wäre jetzt zum beispeil wenn ich den 1.1.2010 eintragen wollte.
die picturebox1 steht in diesem fall für den 1.1.2010. ich hab mir gedacht eventuell picturebox1 einfach die 1 durch das i als zählvariable zu ersetzen, aber das klappt ja nun nich wirklich :confused:

Dasart
02.10.2010, 22:10
mach dir nen array aus den Controls und spreche dann mit einer foreach schleife die Elemente an.

Karlito
02.10.2010, 23:16
Dim sachen(i2) As PictureBox

For i As Integer = 1 To 365

sachen(i) = New PictureBox
vGraphics = sachen(i).CreateGraphics

vGraphics.DrawString((aa.SearchDates(lUser, CDate("01.01." & year) & " 10:10:10")), vFont, vBrush, vPoint)


Next"Index war außerhalb des arraybereichs"
könntest du mir das als pseudocode zeigen?
ich mach dir ja schon lange nen kopf drüber, aber ich hab da ne blokade :/

krusty
03.10.2010, 00:22
so gehst du jedes steuerelement der jeweiligen Form durch:
for each c as controll in me.controlls
c.text = now.tostring("hh.mm.ss")
next

Deine beschreibung ist wirklich fürn arsch.
Willst du einfach in jede Picturbox, die vorhanden ist etwas zeichnen ?

Es gibt die List(of Klasse, damit kannste recht gut arbeiten.
Werden deine Controlls zur Laufzeit hinzugefügt ?

Karlito
03.10.2010, 00:49
ich will die schleife immer weiter hochzählen lassen z.b. bis 30 (Monat) und dann soll mit jedem Durchgang eine andere picturebox beschrieben werden. (picbox1,picbox2,picbox3....picbox30)

die controls sind bereits zu beginn da, werden nicht erst hinzugefügt

Chad2
03.10.2010, 01:02
Leg dir ein Array von den bereits vorhandenen Picboxen an, das kannst du dann auch in der Schleife verwenden.


Dim bilder(30) As PictureBox = {PictureBox1,PictureBox2,PictureBox3,...}

Karlito
03.10.2010, 10:54
ich habs mit der variante von krusty gelöst -> for each c as controll in me.controlls...

klappt im grunde auch, sieht so aus:



Dim a As Integer
Dim arr As New List(Of PictureBox)
arr.Add(PictureBox1)
arr.Add(PictureBox2)
arr.Add(PictureBox3)
arr.Add(PictureBox4)
arr.Add(PictureBox5)
arr.Add(PictureBox6)
arr.Add(PictureBox7)
arr.Add(PictureBox8)
arr.Add(PictureBox9)
arr.Add(PictureBox10)
arr.Add(PictureBox11)
arr.Add(PictureBox12)
usw....
arr.Add(PictureBox30)
For Each i As PictureBox In arr
a = a + 1
aa.OpenDb()
vGraphics = i.CreateGraphics

If a < 10 Then vGraphics.DrawString((aa.SearchDates(lUser, CDate("0" & a & ".01." & year) & " 10:10:10")), vFont, vBrush, vPoint)

If a >= 10 Then vGraphics.DrawString((aa.SearchDates(lUser, CDate(a & ".01." & year) & " 10:10:10")), vFont, vBrush, vPoint)

aa.CloseDb()
Next





ich muss die if-auswahl teffen weil das datum ab dem 10. keine 0 mehr davor gesetzt werden kann. aus irgendeinen grund werden aber in diesem besipiel nur die picturebox1 und die 10. beschrieben.
im ersten versuch als ich in jede das selbe datum eingetragen hab hat es funktioniert, es kann hier also nur an den if anweisungen hängen.