P0wer Skrevet 29. september 2005 Skrevet 29. september 2005 (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 29. september 2005 av P0wer
trrunde Skrevet 29. september 2005 Skrevet 29. september 2005 Du kan sette in tabulator skille ved å sette inn ascii verdien til tab tror det er 9, du gjør det slik: asc(9)
P0wer Skrevet 29. september 2005 Forfatter Skrevet 29. september 2005 Kan du gi meg en eksempel på print-setning?
Richard87 Skrevet 29. september 2005 Skrevet 29. september 2005 (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 29. september 2005 av Richard87
aadnk Skrevet 29. september 2005 Skrevet 29. september 2005 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.
P0wer Skrevet 30. september 2005 Forfatter Skrevet 30. september 2005 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 ?
aadnk Skrevet 1. oktober 2005 Skrevet 1. oktober 2005 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 tegneprosessenMe.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
jajajalla Skrevet 1. oktober 2005 Skrevet 1. oktober 2005 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
P0wer Skrevet 1. oktober 2005 Forfatter Skrevet 1. oktober 2005 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?
aadnk Skrevet 1. oktober 2005 Skrevet 1. oktober 2005 (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 1. oktober 2005 av aadnk
P0wer Skrevet 3. oktober 2005 Forfatter Skrevet 3. oktober 2005 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?
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå