webForumDet fria alternativet

Skriva ut resultat från en Matris, snyggt

.NET

4 svar · 370 visningar · startad av firstchoice

Medlem sedan okt. 2001615 inlägg
Frågan#1

Har skapat en matris enligt följande

Dim Matris(1 To 4, 1 To 4) As Integer

alltså typ en tabell med 4 rader och 4 kolumner

när jag skall skriva ut detta i en "listbox" eller "label" vill jag att det skall bli i snygga kolumner, hur får jag det?

se bifogad bild för att se hur jag vill ha det!

???

ruta_firstchoice.jpg
Medlem sedan okt. 200328 inlägg
#2

Det ordar vi!

'Du har din matris:
Dim Matris(1 to 4, 1 to 4) as integer
'Jag skulle lägga till
Dim FixWidth as String * 20
Dim UtRad as String
' Gör en sträng som ALLTID är 20 tecken lång, de som är _ tomma fylls ut med mellanslag automatiskt. UtRad ska skrivas till _
t.ex din listbox. Det är svårt att formatera Label´s, så kör istället med t.ex en textruta med multiline aktiverat.

Dim iX as integer ' Gör ett index till For loopen som stegar ner.
Dim iY as integer ' Gör ett index till For loopen med radens värden.

For iX = 1 to 4 step 1 ' Stegar "nedåt" i din Matris
UtRad = "" ' Tömmer UtRad
For iY = 1 to 4 step 1 ' Loopar ut värdena på raden
FixWidth = Matris(iX,iY) ' FixWidth blir värdet
'på koordinaten och utfylld med mellanslag tills den är
' 20 tecken lång.
UtRad = UtRad & FixWidth
Next iY ' Nästa Fält i Raden
List1.additem = UtRad ' Skriver raden till List1
Next iX 'Nästa Rad i matrisen

Detta ska funka, har inte testkört koden, men det ska inte vara några problem.

Hör av dig isf.

Rickard

Medlem sedan okt. 20023 030 inlägg
#3

Jag personligen hade löst det på följande sätt:

Dim Matris(1 To 4, 1 To 4) As Integer
Dim iX As Integer, iY As Integer
Dim sBuffer As String

For iX = 1 To 4
	sBuffer = ""
	For iY = 1 To 4
		sBuffer = sBuffer & Matris(iX, iY) & vbTab
	Next iY
	List1.AddItem Left$(sBuffer, Len(sBuffer) - 1)
Next iX
Medlem sedan okt. 2001615 inlägg
#4

Nexus86 exempel var det bästa...men inte riktigt bra eftersom att jag vill om det tex är en 1:a så skall den in ett tecken till
så det inte blir som nedan:

1
12

utan
  1
12

!!!

Medlem sedan okt. 20023 030 inlägg
#5

Bättre? Om inte får du helt enkelt byta font till en monospace-font (t.ex. Courier/Courier New).

Dim Matris(1 To 4, 1 To 4) As Integer
Dim iX As Integer, iY As Integer
Dim sBuffer As String

For iX = 1 To 4
	sBuffer = ""
	For iY = 1 To 4
		sBuffer = sBuffer & Right$(" " & CStr(Matris(iX, iY)), 2) & vbTab
	Next iY
	List1.AddItem Left$(sBuffer, Len(sBuffer) - 1)
Next iX

R// Detta funkar endast om siffrorna som ska stå i kolumnerna bara är max tvåsiffriga.

260 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)