Detta är förmodligen en ganska enkel fråga och det finns säkert en massa att hitta på nätet men jag vet inte vad jag ska söka på bara :$ Vad vill du att det ska stå i dina Labels? bara en siffra? Tackar.. det där jag jag också provat men jag får det inte att fungera.. Ok, jag tar det från början. Näää så går det klart inte att göra.Du måste skapa en kontrollarray om du vill anropa index. Tackar så mycket.. det funkar juh. Du kan skapa de övriga 23 dynamiskt och behöver inte Ang dynamiskt. Move-kod!?? Oooohh.. det låter svårt. ;-) >Skulle du då lägga ut alla manuellt? . Kan man inte köra såhär? "Vill" man inte använda en controlarray så kan man göra så här: 1. Jag försökte ge dig ett tips >3. När du laddar dynamiska objekt går du förstås efter en algoritm Eftersom du skapar en kontrollmatris kan du ju använda dess ubound och kontrolleraSätta 24 st Captions på Label1 t.o.m 24 i en For...Next loop (VB6)?
Jag har en VB6 form med 24 st Labels på som jag enkelt vill göra en Sub för att sätta Caption och font på.
Private Sub SetLabels()
Dim Cnt as integer
For Cnt = 1 to 24
Label + Cnt.Caption = Cnt
Label + Cnt.FontSize = 14
Next Cnt
End Sub
Givetvis funkar inte ovanstående men jag kan ju för min värld inte komma på hur jag ska göra.. detta är ngt som har stört mig länge... (dax å köpa en VB bibel kanske)
Enormt tacksam för svar...Sv: Sätta 24 st Captions på Label1 t.o.m 24 i en For...Next loop (VB6)?
Förmodar då att din array börjar på 0 och går till 23 d.v.s 24 stycken
Private Sub SetLabels()
Dim i as Integer
For i= 0 to 23
label(i).caption = i
label(i).fontsize = 14
Next i
End SubSv: Sätta 24 st Captions på Label1 t.o.m 24 i en For...Next loop (VB6)?
Skapar ett Standard EXE (Vb6 sp5) projekt och placerar ut tre stycken Labels (från component listan), dessa får namnen Label1, Label2 och Label3. När jag sedan försöker köra en For...Next på det sätt du har beskrivit så får jag felmeddelandet Compile error: Sub or Function not defined och Label är markerad för debugging i nedan snippet.
Private Sub Form_Load()
Dim i as Integer
For i = 1 To 3
Label(i).Caption = "Detta är label " & i
Next i
End SubSv: Sätta 24 st Captions på Label1 t.o.m 24 i en For...Next loop (VB6)?
Gör så här.
Lägg upp en Label1.
Ta en kopia på den, klistra in på Formen, svara Ja att du vill skapa en kontrollarray.
Då får du en Label1(1) den första har fått namnet Label1(0)
Sen är det bara att fortsätta klistra in dina 24 st Labels.
<code>
Private Sub SetLabels()
Dim i As Long
For i= 0 to 23
Label1(i).Alignment = 2 'Center
Label1(i).FontBold = True
Label1(i).FontSize = 14
Label1(i).Caption = "Detta är Label " & Str$(i +1)
Next i
End Sub
</code>
Alignment och Fontdata kan du ställa in direkt i designläge så behövs inte dom prgraderna
Fö anser jag att frågan borde ligga under Vb NybörjareSv: Sätta 24 st Captions på Label1 t.o.m 24 i en For...Next loop (VB6)?
F.ö. så kan jag hålla med... det är en riktig nybörjarfråga.. tänkte inte så mkt när jag skulle ställa den. Inte för att jag behöver förklara mig men jag har kodat VB6 ca ett år nu, gjort ganska avancerade DB/Internet anpassade applikationer samt lite VB applikationer. Problemet är att jag aldrig har satt mig ner för att lära mig att använda själva VB6 applikationen, har bara kört på. Har inte läst en rad om hur man ska bygga appar med VB,.. kanske skulle ta och göra det.
MEN detta funkar ju också.. du ska ha jättetack.Sv: Sätta 24 st Captions på Label1 t.o.m 24 i en For...Next loop (VB6)?
manuellt lägga ut dem.
Du lägger ut en label och laddar sedan dynamiska objekt.
load labelnamn(variabel) 'Tips använd Ubound +/- 1 (växer genom att du laddar nytt objekt)
...
...
o.s.v.
Läs mer om hur du skapar dynamiska objekt någonstans på pellesoft.
Tänk dig till exempel att du skulle behöva skapa 200 objekt. Skulle du då lägga ut alla manuellt?
Mvh EBCDICSv: Sätta 24 st Captions på Label1 t.o.m 24 i en For...Next loop (VB6)?
Det är ju frågan vilket som är lättast.Lägger du ut dem dynamiskt så staplas dom
ovanpå varandra och du måste skriva Move kod för varje Label:s Left Top position.Sv: Sätta 24 st Captions på Label1 t.o.m 24 i en For...Next loop (VB6)?
Sv: Sätta 24 st Captions på Label1 t.o.m 24 i en For...Next loop (VB6)?
>Move-kod!?? Oooohh.. det låter svårt.
Kan väl gå på ett ut att lägga ut 24 kontroller manuellt, eller skriva kod för varje.
Du verkar grälsjuk, gå in på http://www.lunarstorm.se och avreagera dig.Sv: Sätta 24 st Captions på Label1 t.o.m 24 i en For...Next loop (VB6)?
<code>
For Each CommandButton In Me
CommandButton.Caption = "Hej"
Next
</code>
eller...
<code>
For Each CommandButton In Form1
CommandButton.Caption = "Hej"
Next
</code>
EDIT:
Såhär självklart!
<code>
For Each Label In Me
Label.Caption = "Hej"
Next
</code>Sv: Sätta 24 st Captions på Label1 t.o.m 24 i en For...Next loop (VB6)?
<code>
For Cnt = 1 to 24
me.controls("Label" & Cnt).Caption = Cnt
me.controls("Label" & Cnt).FontSize = 14
Next Cnt
</code>Sv: Sätta 24 st Captions på Label1 t.o.m 24 i en For...Next loop (VB6)?
2. Jag står inte för kommentaren angående move kod om du tittar närmare
3. När du laddar dynamiska objekt går du förstås efter en algoritmSv: Sätta 24 st Captions på Label1 t.o.m 24 i en For...Next loop (VB6)?
Åhhh så impad jag blir, att du kan så fina ord som "algoritm"
Hur ser algorimen ut ???Sv: Sätta 24 st Captions på Label1 t.o.m 24 i en For...Next loop (VB6)
det sista elementet i kontrollmatrisen och sedan addera med kontrollens (i detta fall din labels) höjd,
förutsatt att du skall stapla dem under varandra.
Du kan skapa en "ruta" med objekt, typ där O = En label:
O O O O
O O O O
O O O O
O O O O
Skall du göra så kan du ju använda operatorn Mod för tillexempel 4 i detta fall och nollställa dess left.
(Autokomplettering kan vara nödvändig)
Förresten tror jag att du kan detta redan (Ang dynamik), men personen som ställde frågan kanske förstår bättre.
Du får ursäkta om jag lät otrevlig förut, det var i alla fall inte min avsikt.