Hej. Gör en array av pictureboxar - då kan du flytta genom att addera till Hur kan jag göra om jag vill exempelvis lagra nuvarande index-talet i en sträng. Om jag gör så här till exempel Plats = "1". Det betyder att jag "står" på plats 1. Jag snickrade ihop denna lilla kodsnutt: Du kanske har nån användning av denna koden: varför vill du lagra din variabel som en sträng? Eller så kan du nog skriva:Lagra namn i strängar
Jag vill kunna lagra ett namn på en picturebox, exempel vis bild1 i en variabel.
Jag vill med andra ord kunn askriva något liknande.
...Namn as String
Namn = "Bild1"
Namn.backcolor=vbRed
Som jag skrivit det går det inte alls... Några idéer?
Om jag döper ett antal Picturebox till A1, A2, A3...B1, B2, B3 osv.. kan jag då skriva nånting i stil med
NuvPlats = A1
NyPlats =A1 + 2 // jag vill alttså kunna plussa på antingen bockstäver eller siffror. Jag försöker nämligen göra ett schack. Då måste jag lägga in IF-satser som tillåter en pjäs att gå A1 + 2(siffra, dvs resultatet blir A3) eller A1+ 2 (bokstav dvs resultatet blir C1)
Det låter nog konstigt. Men jag hoppas ni förstår. Sv: Lagra namn i strängar
index
pic(0-63)
/emmaSv: Lagra namn i strängar
Om jag skriver så här så blir det fel: Picture1(Plats+3).backcolor=vbRed
Då vill jag att boxen med index 4 ska få röd bakgrundsfärg.
Går det att använda sig av strängar på det sättet? I så fall, hur?Sv: Lagra namn i strängar
<code>
Option Explicit
Private Sub Form_Activate()
Dim i As Long
For i = 1 To 100
Load Picture1(i + 1)
With Picture1(i + 1)
.Top = (((i - 1) \ 10)) * 270
.Left = (i * 270 - 270) Mod 2700
.Width = 260
.Height = 260
.BorderStyle = 0
.Appearance = 0
.Visible = True
.BackColor = RGB(2.55 * i, 2.55 * i, 2.55 * i)
End With
Next i
End Sub
Private Sub Form_Load()
Me.Width = 2700
Me.Height = 2700
End Sub
</code>
Gör nu så här.<br><br>
1. Starta VB och ett nytt tomt projekt.<br>
2. I formen lägger du till en pivturebox.<br>
3. Markera den picturebox du la dit och tryck Ctrl-C för att kopiera den.<br>
4. Klicka i formuläret.<br>
5. Trcyk Ctrl-V och svara ja eller yes beroende på språkversion.<br>
6. Markera den Pictureboxen som senast skapades och radera den med del-knappen.<br>
7. Markera den Picturebox som är kvar och sätt egenskapen visible=false<br>
8. Sätt formulärets egenskap BorderStyle= 0 (None)<br>
9. Klistra in koden ovan i formuläret<br>
10. Starta och njut.<br>
<br><br>
Denna kod är till för att visa hur du kan jobba med pictureboxar
lite mer dynamiskt.
<br><br>
/[peter.h]Sv: Lagra namn i strängar
<code>
Option Explicit
Private Sub Form_Load()
Dim I As Long
Picture1(0).BorderStyle = 0
For I = 1 To 63
Load Picture1(I)
Next
End Sub
Private Sub Form_Resize()
Dim Pic As PictureBox
Dim PicWidth As Single
Dim PicHeight As Single
Dim PicRow As Long
Dim PicCol As Long
Select Case WindowState
Case vbNormal, vbMaximized
PicWidth = ScaleWidth / 8
PicHeight = ScaleHeight / 8
For Each Pic In Picture1
PicRow = Pic.Index \ 8
PicCol = Pic.Index Mod 8
Pic.Move PicCol * PicWidth, PicRow * PicHeight, PicWidth, PicHeight
If CBool(Pic.Index And 1) Xor CBool(Pic.Index And 8) Then
Pic.BackColor = vbWhite
Else
Pic.BackColor = vbBlack
End If
Pic.Visible = True
Next
End Select
End Sub
Private Sub Picture1_Click(Index As Integer)
Dim PicRow As Long
Dim PicCol As Long
PicRow = Index \ 8
PicCol = Index Mod 8
MsgBox "Du klickade i " & Chr$(65 + PicRow) & PicCol + 1
End Sub
</code>Sv: Lagra namn i strängar
Det är smidigare att lagra den som en int (som Anderas och Peter visar)
och sen bara konvertera den till en sträng där den behöver vara det.
Detta eftersom variablen med största sannolikhet nästan enbart kommer
att användas som en int.
/EmmaSv: Lagra namn i strängar
<code>
Dim Pic As PictureBox
Dim CellName As String
CellName = "A3"
Set Pic = Me.Controls(CellName)
Pic.BackColor = vbRed
</code>