textfarbe oder Textattribut erkennen ohne Cursor verschiebung in Richtextbox



  • Hallöle

    habe folgendes vor.

    Ich habe in einem Text Farblich markierte und Coursiv geschriebene Teile . nun möchte ich den gesamten Text nach diesen Textteilen untersuchen.

    Bisher mache ich dies mit folgenden Code

    int j=0,i,intAnzZeichenAktuell=0;
        String STZeile;
        frmHaupt->rftAWL->SelAttributes->Style=frmHaupt->rftAWL->SelAttributes->Style >> fsBold >> fsItalic;
        if ( ianzzeilen!=frmHaupt->rftAWL->Lines->Count )
        {
           intFehlernummer=0;
           for ( i=0;i<frmHaupt->rftAWL->Lines->Count;i++ )
           {
               STZeile=frmHaupt->rftAWL->Lines->Strings[i];
               frmHaupt->rftAWL->SelStart=intAnzZeichenAktuell; // Beim ersten zeichen anfangen
               frmHaupt->rftAWL->SelLength = STZeile.Length();
               intAnzZeichenAktuell += frmHaupt->rftAWL->Lines->Strings[i].Length()+2;    //+2 wegen \r\n am Ende der Zeile
               if(frmHaupt->rftAWL->SelAttributes->Color==clRed)
               {
                  ....
               }
             } 
            frmHaupt->rftAWL->SelLength = 0;
        } 
    
    Das Problem ist hier das mir mein Cursor immer verschoben wird und da diese abfrage während der Eingabe geschehen soll ist dies schlecht.
    
    Weiß hier jemand rat?
    
    MfG Felix
    


  • Was soll denn genau passieren, wenn eine der Bedingungen zutrifft, also z.B. ...->Color==clRed?



  • Die Zeilennummer und der Text sollen in einem Array abgelegt werden aber nur wenn der text rot ist



  • Das Problem ist hier das mir mein Cursor immer verschoben wird und da diese abfrage während der Eingabe geschehen soll ist dies schlecht.

    Weiß hier jemand rat?

    Warum merkst du dir nicht vor dem Durchsuchen die Position und setzt diese danach wieder ?



  • weil ich gelesen habe das die Funktion

    Richedit->CaretPos.y
    

    nur lesend ist und ich keine Methode gefunden habe wie ich den coursor positioniere.



  • Das Problem ist hier das mir mein Cursor immer verschoben wird und da diese abfrage während der Eingabe geschehen soll ist dies schlecht.

    Da sagst du doch selber, das der Cursor verschoben wird.
    Aus der BCB Hilfe:

    Beschreibung

    Mit SelStart können Sie die Position des ersten markierten Zeichens feststellen (0 entspricht dem ersten Zeichen). Ist kein Text ausgewählt, gibt SelStart die Position des Cursors zurück. Durch das Setzen von SelStart können Sie die aktuelle Auswahl entfernen und den Cursor direkt vor dem angegebenen Zeichen positionieren.

    Um einen bestimmten Textbereich auszuwählen, positionieren Sie zuerst mit SelStart den Cursor und erweitern dann die Markierung mit SelLength.


Anmelden zum Antworten