In Richedit ganze Zeile Farbe ändern.



  • Wie kann ich im Richedit die Farbe einer ganzen Zeile ändern?



  • Hi,
    kuck dir in der Hilfe mal "SelAttributes" bei den eigenschaften von richedit an
    CU



  • Aber ich will vorher doch nicht Selektieren müssen. Oder habe ich das SelAttribute falsch verstanden???



  • roam schrieb:

    Aber ich will vorher doch nicht Selektieren müssen. Oder habe ich das SelAttribute falsch verstanden???

    Anders geht es aber nicht.



  • So ab jetzt mach ich die Probleme meiner beiden Threads zusammen.
    Ich bin total am verzweifeln! 😞

    Ich suche nach z.B. //. Ab dieser Position wo // gefunden wurde bis zum ende der Zeile soll jetzt markiert werden und eine andere Farbe. Das funktioniert auch schon ein wenig. Aber auch nur in Lines 0. Dann ist schluss mit dem Code. Wie kann ich das ändern???

    int x = 0;
      RichEdit1->Lines->BeginUpdate();
      int Start = 0;
      int End = RichEdit1->Lines->Strings[x].Length();
      CHARRANGE LineSelection;
      LineSelection.cpMin = Start;
      LineSelection.cpMax = End;
      int FoundPos;
      ::FINDTEXT FindText;
      FindText.lpstrText = "//";
      FindText.chrg.cpMin = Start;
      FindText.chrg.cpMax = End;
      FoundPos = RichEdit1->Perform(EM_FINDTEXT, FT_WHOLEWORD, (LPARAM)&FindText);
    
      //-Vorher Schwarz Färben
      RichEdit1->SelStart = 0;
      RichEdit1->SelLength = RichEdit1->Lines->Strings[x].Length();
      RichEdit1->SelAttributes->Color = clBlack;
    
      //-Gefundenen String einfärben
      RichEdit1->SelStart = FoundPos;
      RichEdit1->SelLength = RichEdit1->Lines->Strings[x].Length() - FoundPos;
      RichEdit1->SelAttributes->Color = clBlue;
      RichEdit1->Lines->EndUpdate();
    


  • Wenn x immer 0 bleibt ist es doch logisch, dass du nur Zeile 0 bearbeitest.

    Ansonsten: den FAQ-Beitrag zum SyntaxHighlighting im RichEdit kennst du?



  • Etwas kompliziert für mich im Moment, aber fürs erste:

    RichEdit1->Lines->BeginUpdate();
    for(int x=0; i<RichEdit1->Lines->Count; i++){
       int Start = RichEdit1->Perform(EM_LINEINDEX, (WPARAM)x, 0);
       int Stop = Start + RichEdit1->Lines->Strings[x].Length();
       ...
       //-Vorher schwarz färben
       RichEdit1->SelStart = Start;
       RichEdit1->SelLength = Stop - Start;
       ...
    }
    RichEdit1->Lines->EndUpdate();
    

    vielleicht musst Du noch mehr ändern, aber wie gesagt, bin gerade nicht in Stimmung.



  • Ansonsten: den FAQ-Beitrag zum SyntaxHighlighting im RichEdit kennst du?[/quote]
    Das war zum Teil meine Vorlage.

    @bIce

    Danke, werde ich später mal ausprobieren wie weit ich komme.


Anmelden zum Antworten