Avatar billede thewizard Nybegynder
31. januar 2006 - 18:59 Der er 9 kommentarer og
1 løsning

RichTextBox - detect hvor der er markeret

Hvis min tekst er følgende:

Lille Lise ser på solen.

Og "Lise" er fremhævet med fed-skrift, i min RichTextBox, hvordan kan jeg trykke på en knap, således at teksten ændrer sig til:

Lille [bold]Lise[/bold] ser på solen.

:) Godt spørgsmål? 200 point til den som svarer først.
Avatar billede thewizard Nybegynder
31. januar 2006 - 19:01 #1
Og naturligvis skal man også kunne gøre det omvendt.

Tekst: Lille [bold]Lise[/bold] ser på solen.

Skal lave sig om til

Lille Lise ser på solen.

Hvor Lise er fremhævet med bold.
Avatar billede thewizard Nybegynder
01. februar 2006 - 15:56 #2
Kom glad mennesker?
Avatar billede sjh Nybegynder
02. februar 2006 - 15:59 #3
Jeg går udfra at det skal vises som "Bold" og ikke som en tekst med "[..]"

Private Sub Command1_Click()
  With RichTextBox1 ' <- RichTextBox
      If .SelText <> "" Then
        .SelBold = Abs(.SelBold) - 1 ' HTML <B>
        .SelItalic = Abs(.SelItalic) - 1 ' HTML <I>
        .SelUnderline = Abs(.SelUnderline) - 1 ' HTML <U>
          Else
        MsgBox "Du skal marker noget tekst."
      End If
  End With
End Sub
Avatar billede sjh Nybegynder
02. februar 2006 - 16:11 #4
ellers så kan du gøre sådan.. hvis det skal være med "[..]"

Private Sub Command1_Click()
  With RichTextBox1 ' <- RichTextBox
      If .SelText <> "" Then
        .SelText = BoldAddReplace(.SelText)
      End If
  End With
End Sub

Public Function BoldAddReplace(strText As String) As String
  If InStr(1, strText, "[bold]", vbTextCompare) = 0 Then
    BoldAddReplace = "[bold]" & strText & "[bold/]"
      Else
    BoldAddReplace = Replace(Replace(strText, "[bold]", "", 1, -1, _
    vbTextCompare), "[bold/]", "", 1, -1, vbTextCompare)
  End If
End Function
Avatar billede sjh Nybegynder
02. februar 2006 - 16:16 #5
Hvis ellers det er godt nok.. så kan du gi mig 30 point for det.. ;)
Avatar billede thewizard Nybegynder
04. februar 2006 - 14:37 #6
Nej nej du har misforstået det, sjh.

Jeg ønsker at sætte teksten: "[bold]" foran den tekst som er fed.

Og sætte "[/bold]" bagefter. Så hvad der ender med at stå er REN tekst, ingen fed, eller underline, eller noget. :).

f.eks.

Jeg er en NINJA.
ninja er fed skrift.

Denne tekst bliver lavet om til:

Jeg er en [bold]NINJA[/bold].

Og så omvendt også.
Avatar billede thewizard Nybegynder
04. februar 2006 - 14:43 #7
Min puter er gået i stykker for tiden :) Så jeg skriver tilbage med lidt store mellemrum
Avatar billede thewizard Nybegynder
06. februar 2006 - 14:05 #8
Sjh, jeg har ikk mulighed for at checke om din kode er okay. - Pga. den nedlagte puter. Ser ud til at det er CPU'en, og en ny er bestilt. Kommer med svar hurtigst som muligt.
Avatar billede thewizard Nybegynder
06. februar 2006 - 14:11 #9
Private Sub Command1_Click()
  With RichTextBox1 ' <- RichTextBox
      If .SelText <> "" Then
        .SelText = BoldAddReplace(.SelText)
      End If
  End With
End Sub

Public Function BoldAddReplace(strText As String) As String
  If InStr(1, strText, "[bold]", vbTextCompare) = 0 Then
    BoldAddReplace = "[bold]" & strText & "[bold/]"
      Else
    BoldAddReplace = Replace(Replace(strText, "[bold]", "", 1, -1, _
    vbTextCompare), "[bold/]", "", 1, -1, vbTextCompare)
  End If
End Function

Sådan som jeg læser din kode, erstatter den en markeret tekst med: [bold]Markeret tekst[/bold], det er sådanset okay - men tænk på at hvis teksten ser således ud:

"Eksperten er et rigtig godt sted, her findes oplysninger om alverdens ting.
Jeg er en ninja, og fylder 10 til december."

"Ninja" og "oplysninger" er lavet til fedskrift i en Richtext-box.
I det jeg trykker på command1, ønsker jeg at teksten bliver lavet om til (og her er ingen fed skrift mere):

"Eksperten er et rigtig godt sted, her findes [bold]oplysninger[/bold] om alverdens ting.
Jeg er en [bold]ninja[/bold], og fylder 10 til december."

Trykker jeg på en anden knap laver den det om igen, [bold] og [/bold] forsvinder, og gør den tekst fed som den står omkring.
Avatar billede sjh Nybegynder
06. februar 2006 - 17:43 #10
Så prøv den her:

Private Sub Command1_Click()
Dim intStart As Long
Dim intSlut As Long
Dim strText As String
  intSlut = 1
  intStart = 1
  With RichTextBox1 ' <- RichTextBox
      Do Until intStart = 0
        intStart = InStr(intSlut, .Text, "[bold]", vbTextCompare)
        If intStart > 0 Then
          intSlut = InStr(intStart, .Text, "[/bold]", vbTextCompare)
          If intSlut > 0 Then
            intSlut = (intSlut + 6)
            .SelStart = (intStart - 1)
            .SelLength = (intSlut - intStart + 1)
            .SelBold = True
            .SelText = Mid$(.Text, intStart + 6, (intSlut - intStart) - 12)
          End If
        End If
      Loop
  End With
End Sub

Private Sub Form_Load()
  RichTextBox1.Text = "Lille [bold]Lise[/bold] ser på solen, og bliver [bold]blindet[/bold]."
End Sub
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