Avatar billede flymetothemoon Nybegynder
23. maj 2002 - 15:22 Der er 8 kommentarer og
1 løsning

Hvordan legge inn return i en RichTextBox

Er det mulig og tvinge inn en return i en RichTextBox slik at jeg selv kan bestemme når jeg vil ha linje skift.

Problemet kommet av at når jeg skal printe ut innholdet i richTextBox så kommer alt på en linje på arket.

Har brukt følgende kode for å skrive ut:
Printet.Print richtxtbox.text
Printer.EndDoc

Har funnet ut at når jeg skriver i Richtextbox feltet og trykker 'enter' så blir det linjeskift på utskriften.



Avatar billede tjacob Juniormester
23. maj 2002 - 15:35 #1
Det burde være sådan per default. Har du MultiLine = True ?
Avatar billede flymetothemoon Nybegynder
23. maj 2002 - 15:36 #2
Ja MultiLine = true Men det hjelper ikke
Avatar billede tjacob Juniormester
23. maj 2002 - 15:37 #3
Du må kun oprette et spm en gang. Luk det andet ;-)
Avatar billede tjacob Juniormester
23. maj 2002 - 15:40 #4
Indsætter du teksten fra en variabel? For hvis jeg skriver i min RTF, så kan jeg sagtens trykke enter.
Avatar billede tjacob Juniormester
23. maj 2002 - 15:45 #5
Hvis det er en strengvariabel du indlæser tekst fra så indsættes linieskift sådan:

Str= "blablablablablablablablablablablablablablablablablabla" & VBCrLf & _
"blablablablablablablablablablablablablablablablablablablabla" & VBCrLf & _
"blablablablablablablabla" osv

VBCrLf (Control + LineFeed) indsætter et linieskift.
Avatar billede tjacob Juniormester
23. maj 2002 - 15:45 #6
CrLf = Carriage Return + LineFeed
Avatar billede flymetothemoon Nybegynder
23. maj 2002 - 15:55 #7
Det jeg har funnet ut at jeg må gjøre er og putte inne en Carriage Return + LineFeed for hver 20 tegn jeg skriver inn i RichTextBox. (det tilsavarer ca bredden på feltet)
Og for hver 20 tegn skal det legges inn en Carriage Return + LineFeed.

Jeg har prøvd utallige varianter bla annet VBCrLf . Jeg klarer og finne antall tegn og ved en if settning så setter jeg inn Carriage Return + LineFeed.

Men det havner bare på samme linje.

Legger ved koden jeg har skrevet.
Private Sub txtMerknader_KeyPress(KeyAscii As Integer)
    Dim intAnt As Integer
    Dim strText As String
   
    strText = txtMerknader.Text
    intAnt = Len(strText)

    If intAnt >= 10 Then
        txtMerknader = txtMerknader & vbCrLf
    End If
End Sub

(Jeg vet at dette kun gjelder for de første 10 tegn.)
Avatar billede tjacob Juniormester
23. maj 2002 - 16:31 #8
Prøv denne:

Private Sub txtMerknader_KeyPress(KeyAscii As Integer)
    Dim intAnt As Integer
    Dim strText As String

    strText = txtMerknader.Text
    intAnt = Len(strText)

    If intAnt > 19 And (intAnt Mod 20 = 0) Then strText = strText & vbCrLf

    txtMerknader.Text = strText
    txtMerknader.SelStart = intAnt
 
End Sub

Der er ganske vist et lille problem med at den første linie bliver 2 karakterer længere end de andre linier (vbCrLf er 2 karakterer), men prøv at lege lidt med det.
Avatar billede flymetothemoon Nybegynder
24. maj 2002 - 08:50 #9
Hey Tjacob takk skal du ha. Det fungerete kjempe bra. Poengene er dine.

Vennlig hilsen FlyMeToTheMoon :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester