Springen naar inhoud


RichTextBox: text highlighten


  • Log in a.u.b. om te beantwoorden
Er zijn 9 reacties in dit onderwerp

#1 VB6Dummy

VB6Dummy

    VBIB Godfather

  • Leden
  • PipPipPipPipPipPipPipPip
  • 5388 berichten
    Laatst bezocht 26 dec 2014 17:43

Geplaatst op 04 mei 2011 - 07:02

graag gedaan

#2 VB6Dummy

VB6Dummy

    VBIB Godfather

  • Leden
  • PipPipPipPipPipPipPipPip
  • 5388 berichten
    Laatst bezocht 26 dec 2014 17:43

Geplaatst op 04 mei 2011 - 07:02

Thx Ronneke,

nu werkt het ook perfect zonder if.

Merci voor al de hulp

#3 VB6Dummy

VB6Dummy

    VBIB Godfather

  • Leden
  • PipPipPipPipPipPipPipPip
  • 5388 berichten
    Laatst bezocht 26 dec 2014 17:43

Geplaatst op 04 mei 2011 - 07:02

Ja, maar dat is echt een heel andere situatie. U wenst gedurende het intikken in een richttextbox, dat bepaalde woorden dan in een kleur komen te staan.  Mijn code slaat op een file dat ingeladen wordt en waarin men dan bepaalde woorden kan opzoeken. In uw geval is er nog niet echt een EOF . Zet daarom:

Code:
Plaats = Zoek + Lengte  - 1  


Greetz

#4 VB6Dummy

VB6Dummy

    VBIB Godfather

  • Leden
  • PipPipPipPipPipPipPipPip
  • 5388 berichten
    Laatst bezocht 26 dec 2014 17:43

Geplaatst op 04 mei 2011 - 07:02

Hij moet alle gezochte woorden highlighten.

Dit is momenteel alle code die ik in mijn programma heb staan tot nu toe. Ik heb enkel een RTB op het form geplaatst.

Code:

    Private Sub RTBHighlight(ByVal Tekst As String, ByVal Kleur As Color)
        Dim Lengte As Integer = Tekst.Length
        Dim Plaats, Zoek As Integer

        Zoek = RTB.Find(Tekst, 0, -1, RichTextBoxFinds.WholeWord)

        Do Until Zoek < 0
             'If Zoek < Plaats Then Exit Do

             RTB.Selectionstart = Zoek
             RTB.SelectionLength = Lengte
             RTB.SelectionColor = Kleur
          
             Plaats = Zoek + Lengte

             Zoek = RTB.Find(Tekst, Plaats, -1, RichTextBoxFinds.WholeWord)
        Loop
    End Sub

    Private Sub RTB_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RTB.TextChanged
        Dim Start As Integer

        With RTB
             Start = .Selectionstart

             .Selectionstart = 0
             .SelectionLength = .TextLength
             .SelectionColor = Black

             'hier komt nog een luske die de data uit een file/DB haalt

             'enkele teksten en hun kleur
             RTBHighlight("include", Red)
             RTBHighlight("require", Red)
             RTBHighlight("While", Blue)
             RTBHighlight("Sub", Blue)
             RTBHighlight("End", Blue)

             .Selectionstart = Start
             .SelectionLength = 0
        End With
    End Sub


Je kan het zelf eens testen met bovenstaande code. Zonder die If blijft het bij mij allesinds vasthangen in de lus.

#5 VB6Dummy

VB6Dummy

    VBIB Godfather

  • Leden
  • PipPipPipPipPipPipPipPip
  • 5388 berichten
    Laatst bezocht 26 dec 2014 17:43

Geplaatst op 04 mei 2011 - 07:02

Hmmm, wat is juist de bedoeling? Mijn code gaat het gezocht woord over gans de tekst gaan opsporen en vervangen in een kleur, dus ook in het 10x erin staat. Of mag dit niet ?

Greetz

#6 VB6Dummy

VB6Dummy

    VBIB Godfather

  • Leden
  • PipPipPipPipPipPipPipPip
  • 5388 berichten
    Laatst bezocht 26 dec 2014 17:43

Geplaatst op 04 mei 2011 - 07:02

heykes,

Het is iets raars, want hij vind telkens opnieuw dezelfde woorden terug volgens mij. En met die If functie werkt dat zonder 1 probleem.

#7 VB6Dummy

VB6Dummy

    VBIB Godfather

  • Leden
  • PipPipPipPipPipPipPipPip
  • 5388 berichten
    Laatst bezocht 26 dec 2014 17:43

Geplaatst op 04 mei 2011 - 07:02

Hmmm, Ronneke krabt eens in zijn haar  (en ik heb er al niet teveel )

Heb dat hier uitgetest op een 50Kb rtf-file en die zoekt alle gewenste woorden op en zet ze in een kleur. Door die 'Do Until Zoek < 0' kant hij toch niet in een oneindige loop geraken ? Op het moment dat hij het woord niet meer vindt, wordt Zoek = -1 en komt daardoor uit de loop.

Greetz

#8 VB6Dummy

VB6Dummy

    VBIB Godfather

  • Leden
  • PipPipPipPipPipPipPipPip
  • 5388 berichten
    Laatst bezocht 26 dec 2014 17:43

Geplaatst op 04 mei 2011 - 07:02

Hey Ronneke,

uw code werkt perfect buiten het feit dat hij in een oneindige lus terecht komt. Dit probleem heb ik dan zelf effe aangepast door boven

Code:
Plaats = Zoek + Lengte


Een if bij te plaatsen:
Code:
If Zoek < Plaats then exit Do

#9 VB6Dummy

VB6Dummy

    VBIB Godfather

  • Leden
  • PipPipPipPipPipPipPipPip
  • 5388 berichten
    Laatst bezocht 26 dec 2014 17:43

Geplaatst op 04 mei 2011 - 07:01

Hallo

Ik vermoed dat deze code minder belastend voor uw CPU zal zijn:

Code:

Private Sub RTBHighlight(ByVal Tekst As String, ByVal Kleur As Color)

Dim Lengte As Integer = Tekst.Length

Dim Plaats, Zoek As Integer

Zoek = RTB.Find(Tekst, 0, -1, RichTextBoxFinds.WholeWord)

Do Until Zoek < 0

RTB.Selectionstart = Zoek

RTB.SelectionLength = Lengte

RTB.SelectionColor = Kleur

Plaats = Zoek + Lengte

Zoek = RTB.Find(Tekst, Plaats, -1, RichTextBoxFinds.WholeWord)

Loop



Succes

#10 VB6Dummy

VB6Dummy

    VBIB Godfather

  • Leden
  • PipPipPipPipPipPipPipPip
  • 5388 berichten
    Laatst bezocht 26 dec 2014 17:43

Geplaatst op 04 mei 2011 - 07:01

Heykes,

Ik heb op mijn form een RTB staan en ik kan de tekst laten highligthen

uitleg highlighten: (voor diegene die niet weten wat ik bedoel)
(For i=0 to 5
'acties
Next )

Ik heb er een functie voor ontwikkeld maar deze vergt uiterst veel van de CPU.

Sub RTBHighlight(ByVal Tekst As String, ByVal Kleur As Color)
        Dim i, Vorige As Integer
        i = 0
        Vorige = 0

        With RTB 'richtextbox
             For i = 0 To .TextLength
                .Find(Tekst, i, RichTextBoxFinds.WholeWord)
                If LCase(.SelectedText) = LCase(Tekst) Then
                     .SelectionColor = Kleur
                     i += .SelectionLength
                     .SelectedText = Tekst
                End If
             Next
        End With
    End Sub

Kent er iemand van jullie een andere oplossing die minder CPU-vermogen eist?




0 gebruiker(s) lezen dit onderwerp

0 lid(leden), 0 bezoeker(s), 0 anonieme gebruikers

Inloggen


Untitled 1

Met dank aan Jürgen voor de jarenlange inzet van visualbasic.be (anno dec 2000)
Met dank aan Mike en Ronneke voor de jarenlange inzet van vbib.be (anno dec 2010)
Met dank aan PascalBianca voor de jarenlange inzet van vbib.be (anno dec 2016)