Gå til innhold

Tekstjustering i Print-funksjon


Anbefalte innlegg

Skrevet (endret)

Jeg lurer på hvordan jeg kan formatere tekst som skrivest ut (på skjermen) med "Print"-kommandoen. Jeg kan FontSize og FontType-kommandoene

 

Jeg lurer spesiellt på hvordan jeg kan bestemme plasseringen av teksten, slik at hvis jeg printer fler linjer så stilles tallene under hverandre.

 

Koden min:

Dim tall1, tall2, tall3

 

...................

...................

 

Print & tall1 & tall2 & tall3

Print & tall1 & tall2 & tall3

Print & tall1 & tall2 & tall3

 

tall1, 2, 3 endres fra gang til gang!

Ps. koden er ikke akkurat slik.

 

Slik blir det nå:

 

205 35 15

1 30 2

4 254 2

 

 

Jeg vil ha det slik:

 

205____35____15

1______30_____2

4_____254_____2

 

Rett under hverandre, høyrejustert, som en tabell

 

 

NB! ____ = mellomrom! (kunne ikke skrive mange mellonrom i forumet)

 

 

 

Hvordan kan jeg gjør dette uten å bruke mellomrom:

 

Print & tall1 " " & tall2 " " & tall3

 

 

Er det mulig å sette inn tabulatorskille?

Endret av P0wer
Videoannonse
Annonse
Skrevet (endret)

ja, du bruker Me.CurrentX og Me.CurrentY for og setta posisjonen du tegner og skriver pa.

 

Private Sub Form_Load()
Me.Show
Me.AutoRedraw = True
For x = 1 To 2
   For y = 1 To 3
       Me.CurrentX = x * 100
       Me.CurrentY = y * 10
       Print x * y
   Next y
Next x
End Sub

 

[EDIT] Trrunde, Asc(9) returnerer Ascii verdien av 9, bruk Chr(9), uansett sa vil ikke det funke. Sry. Du er NODT og bruke CurrentX og CurrentY..

Endret av Richard87
Skrevet

Den enkleste metoden er kan hende å la hvert tabellelement være av statisk størrelse, blant annet ved å legge ved en viss antall mengde mellomrom:

 

Public Function FillString(sText As String, ByVal lngMax As Long) As String

 

    ' Returner den modifiserte strengen som alltid er av samme lengde

    FillString = sText & Space(lngMax - Len(sText))

 

End Function

 

Da kan du eksempelvis eksekvere følgende kode for å få statisk kolonneavstand:

 

Me.Print FillString(205, 20) & FillString(35, 20) & FillString(15, 20)

Me.Print FillString(1, 20) & FillString(30, 20) & FillString(2, 20)

Me.Print FillString(4, 20) & FillString(254, 20) & FillString(2, 20)

Bemerk at skriftstørrelsen du benytter i formen/kontrollen må ha statisk størrelse på hver karakter - såsom Courier New.

Skrevet

Hva med :

FontName = "comic sans ms"

FontSize = 15

Print Text1.Text, , Text2.Text

 

Kommaet "," setter inn et tabulatorskille.

Men teksten er fortsatt venstrejustert!

Er det mulig å høyrejustere den?

 

Slik at alle Print-kommandoer kommer på høyre side av Form1 ?

Skrevet

Du kan jo muligens tegne opp de forskjellige elementene i et rutenett - eksempelvis således:

 

Public Sub PrintText(Control As Object, MaxLenght As Long, ParamArray aText() As Variant)

 

    Dim Tell As Long, posY As Long

   

    ' Lagre den gjeldene Y-posisjon

    posY = Control.CurrentY

   

    ' Gå gjennom alle elementer

    For Tell = LBound(aText) To UBound(aText)

   

        ' Sett posisjonen

        Control.CurrentY = posY

        Control.CurrentX = Control.ScaleWidth - (MaxLenght * (UBound(aText) - Tell + 1))

       

        ' Skriv tekst

        Control.Print aText(Tell)

       

    Next

 

End Sub

 

Du kaller funksjonen slik:

 

    ' Klargjør form for tegneprosessen

Me.Cls

Me.ScaleMode = vbPixels

 

' Endre skrifttype

FontName = "Courier New"

FontSize = 15

   

' Skriv tre linjer

PrintText Me, 100, 205, 35, 15

PrintText Me, 100, 1, 30, 20

PrintText Me, 100, 20, 254, 20

Skrevet

Hei, hvis jeg har skjønt spørsmålet rett,

kan man ikke bare bruke

Dim t as Integer
t = Me.TextWidth("Teksten")

?

Når man gjør dette så vil t inneholde lengden av den spesifiserte

teksten i piksler med den angitte font og font-størrelse til formen.

 

Dermed kan man lett skrive en kommande som f.eks. midstiller tekst om et gitt punkt.

 

mvh

Skrevet

Noen som hvet hvordan jeg kan formatere et tall slik at sifferene vises i grupper på fire?

 

F. eks:

 

10101110101101

 

Skal bli:

 

10 1011 1010 1101

 

Eller med ekstra 0-er i begynnelsen.

 

0010 1011 1010 1101

 

 

Koden må virke på forskjellig antall sifre!

Hvordan bruker man Format(??) - koden?

:dribble::ermm:;):ohmy::yes:

Skrevet (endret)
Hvordan bruker man Format(??) - koden?

Det står - som omtrent alle andre kommandoer i VB - forklart på MSDN (samt her). Du kan evt. lese en litt mer inngående, dog uoffisiell, forklaringen på denne hjemmesiden.

 

Hva spørsmålet ditt angår, er det ikke verre enn å kalle Format-funksjonen således:

 

MsgBox Format("10101110101101", "0000 0000 0000 0000")
Endret av aadnk
Skrevet

:hmm::hmm:

 

Kan jeg på noen måte slette det jeg har "skrevet ut" med Print-funksjonen

uten å restarte programmet?

 

Slik at jeg kan "Printe" på nytt uten at teksten forsvinner utenfor rammen i pogrammet?

 

:w00t:

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...