Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Tvinga radbrytning

Postades av 2005-05-06 20:45:44 - Johan Hjort, i forum visual basic - allmänt, Tråden har 10 Kommentarer och lästs av 824 personer

Jag vill tvinga rydbrytning i en text när den överstiger 56 tecken, den ska alltså bryta ordet rakt av. På den första raden ska dock "___Specialnoteringar : " finnas.

Exempel:
<code>
___Specialnoteringar : Nu skriver jag bara lite så att ni ska se hur jag vill a
tt det ska se ut.
</code>

(EDIT: Exemplet ovan ser inte ut som det bör. "tt" ska börja precis ovanför "Nu")

Nedanstående kod är något omgjord från den slutliga koden som Håkan Borneland postade i [Tvinga radbrytning i fil]. Dock så är jag tvungen att lägga den under "___Specialnoteringar : " för den gör så att det överstiger 56 tecken totalt.

Hoppas ni förstår vad jag vill få fram, om inte så kan jag försöka förklara bättre.

    strText = txtNotes.Text
    If Len(strText) > 0 Then
        iRows = Len(strText) \ 61
        If iRows = 0 Then
           Print #1, "                       " & strText
        Else
            For iCounter = iRows To 0 Step -1
                If Mid$(strText, 56, 1) = " " Then
                    Print #1, "                       " & Left$(strText, 54)
                    strText = Mid$(strText, 57)
                Else
                    iStop = InStrRev(strText, " ", 56)
                    If iStop = 0 Then
                        Print #1, "                       " & strText
                    Else
                        Print #1, "                       " & Left$(strText, iStop - 1)
                        strText = Mid$(strText, iStop + 1)
                    End If
                End If
            Next iCounter
        End If
    End If


Svara

Sv: Tvinga radbrytning

Postades av 2005-05-06 21:15:15 - Göran Andersson

Vad gör koden, och hur skiljer sig det ifrån det du vill ha?


Svara

Sv:Tvinga radbrytning

Postades av 2005-05-06 23:47:52 - Johan Hjort

Den nuvarande koden tar inte hänsyn till texten som ska stå på den första raden, och sen så bryter den inte av ordet tvärt.


Svara

Sv: Tvinga radbrytning

Postades av 2005-05-07 08:18:19 - Peter Holm

Här kommer ett förslag till lösning. För att testa koden gör följande.

1. Starta nytt projekt med Form1
2. Lägg till en Text1 och sätt egenskapen Multiline=True (Gör textboxen stor.)
3. Lägg till en Command1
4. Klistra in koden

<code>
Option Explicit

Private Const ROWLENGTH = 56

Private Sub Command1_Click()
'Använd fast bredd på typsnittet,
'True Type funkar inte för jämn vänsterkant.
Text1.FontName = "Courier New"
Text1.Text = myStrSplit(Text1.Text)
End Sub

Private Function myStrSplit(strToSplit As String) As String
'
Dim firstPart As String
Dim emptyPart As String
Dim tmpStr As String
Dim remainder As String
Dim i As Long

firstPart = "___Specialnoteringar: " 'Inledande text
emptyPart = String(Len(firstPart), Chr(32)) 'Skapa vänster indrag

'Read ahead & Ersätt alla eventuella radbrytningar som kan finnas i texten
'så --> remainder = firstPart & strToSplit
remainder = firstPart & Replace(strToSplit, vbCrLf, "", 1, -1, vbTextCompare)

While remainder <> emptyPart
tmpStr = Left(remainder, ROWLENGTH) 'ROWLENGTH första tecknen

'Radera den del från strängen som vi nyss tog ut
'Lägg sedan till vänster indrag. remainder är nu återstoden
'av strängen med inledande indrag.
remainder = emptyPart & Replace(remainder, tmpStr, "", 1, 1, vbTextCompare)

'Bygg resultat
myStrSplit = myStrSplit & tmpStr & vbCrLf
Wend
End Function
</code>

Starta programmet. Klistra in en hyggligt stor textmassa i textboxen och
klicka på knappen. Vipsiluringen så borde din text se ut som du vill ha den.

[Peter.H]




Svara

Sv:Tvinga radbrytning

Postades av 2005-05-07 14:02:00 - Johan Hjort

Det där fungerade nästan helt rätt, texten bryts dock vid tecken 57, den ska brytas precis vid tecken 80.

Alltså, på första raden ska den brytas vid tecken 57 eftersom "___Specialnoteringar : " måste få plats, men på alla andra rader ska den brytas vid 80.

Som det blir nu:
<code>
___Specialnoteringar : thrthrthrthsrthrthwththrthrthrths
rthrthwththrthrthrthsrthrthwththr
thrthrthsrthrthwththrthrthrthsrth
rthwththrthrthrthsrthrthwththrthr
thrthsrthrthwththrthrthrthsrthrth
wththrthrthrthsrthrthwththrthrthr
thsrthrthwththrthrthrthsrthrthwth
</code>


Svara

Sv: Tvinga radbrytning

Postades av 2005-05-07 15:44:38 - Peter Holm

> Jag vill tvinga rydbrytning i en text när den överstiger 56 tecken,

Jag tolkade det som att alla rader skulle vara 56 tecken lång (inklusive ___Specialnoteringar:).
Nåja det är mycket enkelt att modifiera koden så det blir som du vill ha det.

Sätt bara ROWLENGTH=80


[peter.h]


Svara

Sv:Tvinga radbrytning

Postades av 2005-05-07 16:05:33 - Johan Hjort

Nu funkar det fint, förutom en sak. Det går tyvärr inte att ha några stycken.

"Testar

Lite

Nu"

blir

"TestarLiteNu"

Så om detta åtgärdades vore allting perfekt :).


Svara

Sv: Tvinga radbrytning

Postades av 2005-05-07 17:49:19 - Peter Holm

Det jobbet blir ditt att lösa. Du kan få några tips här av mig.

Du har fått en funktion av mig som klarar "själva jobbet" att formattera texten som du vill ha den.
Allt du egentligen behöver göra är att se till att funktionen tar ytterligare ett argument. Detta arg-
ument ska berätta för funktionen om det är första stycket eller efterföljande stycken som ska
formatteras.

Är det första stycket ska "___Specialnoteringar:" med, är det inte det ska lika många blanksteg in-
leda alla rader som skapas.


Problemet blir nu att skapa ytterligare en funktion som använder min funktion. Den nya funktionen
du skapar får se till att ta in texten. Bryta ner alla stycken. Skicka ett stycke i taget och formattera
det.

Du sätter sedan ihop alla styckena igen. Så har du din text formatterad och klar. Även med styckena
intakta.

[peter.h]


Svara

Sv:Tvinga radbrytning

Postades av 2005-05-07 22:20:11 - Johan Hjort

Jag förstår inte alls vad du menar, det gjorde mig bara mer förvirrad. Jag har aldrig pysslat med något liknande förut. Skulle <b>verkligen</b> uppskatta en färdig lösning, trots att jag hatar att be folk om hela lösningar :/.


Svara

Sv: Tvinga radbrytning

Postades av 2005-05-07 23:52:58 - Peter Holm

Det bästa sättet att lära sig på är att lösa problemen själv ;) Men jag känner mig snäll idag.

<code>
Option Explicit

Private Const ROWLENGTH = 80

Private Sub Command1_Click()
'Använd fast bredd på typsnittet,
'True Type funkar inte för jämn vänsterkant.
Text1.FontName = "Courier New"
Text1.Text = myFormatText(Text1.Text)
End Sub

Private Function myFormatText(strToFormat As String) As String
'In i denna funktionen kommer det en hög med text. Den kan innehålla stycken
'När vet man att det är ett nytt stycke. Jo om minst två vbCrLf kommer efter
'varandra.
Dim textParts() As String
Dim i As Integer

'Dela upp texten där minst två konsekutiva vbCrLf kommer
textParts = Split(strToFormat, vbCrLf & vbCrLf, -1, vbTextCompare)

For i = LBound(textParts()) To UBound(textParts())
'Loopa genom hela arrayen. (Hela texten stycke för stycke)
textParts(i) = myStrSplit(textParts(i), IIf(i = 0, True, False))
Next i

'Joina arrayen med vbCrLf som delimiter så får man styckeindelningen
'liksom på köpet.
myFormatText = Join(textParts(), vbCrLf)
End Function

Private Function myStrSplit(strToSplit As String, isFirstPart As Boolean) As String
'
Dim firstPart As String
Dim emptyPart As String
Dim tmpStr As String
Dim remainder As String
Dim i As Long

'Ska det vara ___Specialnoteringar, eller indrag
firstPart = "___Specialnoteringar: "
firstPart = IIf(isFirstPart, firstPart, String(Len(firstPart), Chr(32)))
emptyPart = String(Len(firstPart), Chr(32))

'Read ahead & Ersätt alla eventuella radbrytningar som kan finnas i texten
'så --> remainder = firstPart & strToSplit
remainder = firstPart & Replace(strToSplit, vbCrLf, "", 1, -1, vbTextCompare)

While remainder <> emptyPart

tmpStr = Left(remainder, ROWLENGTH) 'ROWLENGTH första tecknen

'Radera den del från strängen som vi nyss tog ut
'Lägg sedan till vänster indrag. remainder är nu återstoden
'av strängen med inledande indrag.
remainder = emptyPart & Replace(remainder, tmpStr, "", 1, 1, vbTextCompare)

'Bygg resultat
myStrSplit = myStrSplit & tmpStr & vbCrLf
Wend
End Function


</code>



[peter.h]


Svara

Sv:Tvinga radbrytning

Postades av 2005-05-08 00:37:55 - Johan Hjort

Tack så jättemycket!

Och som en sidnotering så skulle jag aldrig kommat underfund med det där själv.


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 153
27 952
271 704
880
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies