RichEdit formatierten Text einfügen



  • Hallo Gemeinde,

    ich möchte gerne in ein RichEdit mit vorhandenem Text aus Textbausteinen Texte hinzufügen. Aus der Zwischenablage klappt das auch, ebenso mit Plain-Text.
    Nur wenn ich versuche aus einer Datei zu laden wird nur dieser im RE angezeigt.
    Konkret: Gibt es eine Möglichkeit direkt an der Cursorposition formartierten Text einzufügen?



  • TStringList *slFile = new TStringList();
        slFile->LoadFromFile("C:\\test.txt");
    
        RichEdit1->Text = RichEdit1->Text.Insert(slFile->Text, RichEdit1->SelStart+1);
    
        delete slFile;
    

    mfg



  • Danke erst mal,

    leider funktioniert das nur mit Plain-Text oder aus einem rtf-File wenn das RichEdit leer ist. Wenn ich bei vorhandenem Text einen Cursor setze und dann einfüge, erhalte ich den Text mit den ganzen Formatierungszeichen.
    Über MemoryStream ist es das Gleiche.

    Gruß und Danke



  • Ich hab auch noch eine Frage zu RichEdit ^^

    So kann ich ja Text einfügen:

    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
     char *Path = "e:\\test.txt";
      RichEdit2->Lines->LoadFromFile(Path);
    
    }
    

    Aber ich will den Text z.b. nicht in der erste Zeile einfügen sondern in der 3ten oder 4ten

    hat wer eine Ahnung wie so etwas geht?



  • hier_bin_ich schrieb:

    Gibt es eine Möglichkeit direkt an der Cursorposition formartierten Text einzufügen?

    Das sollte sich mittels TStringStream lösen lassen.
    So in etwa: RE-Inhalt in StringStream speichern, Datei in MemoryStream laden, per Seek an gewünschte Stelle des StringStream fahren (über SelStart etc. zu ermitteln), MemoryStream in StringStream schreiben, Rest des RE-Inhaltes an das (neue) Ende des StringStream schreiben, RE-Inhalt aus StringStream neu laden.



  • hier_bin_ich schrieb:

    ... erhalte ich den Text mit den ganzen Formatierungszeichen...

    Da könnte Trim() von AnsiString was helfen.

    Aber ich will den Text z.b. nicht in der erste Zeile einfügen sondern in der 3ten oder 4ten

    Da kannst du über

    RichEdit1->Lines->Insert(ZeilenIndex, "Text")
    

    drauf zugreifen.

    mfg



  • @derDa

    Wenn du eine Textdatei in der 3. Zeile einfügen willst, kannst du das auch so machen:

    RichEdit1->Lines->LoadFromFile(Path);
    RichEdit1->Lines->Insert(0,"");
    RichEdit1->Lines->Insert(0,"");
    RichEdit1->Lines->Insert(0,"");
    

    Wenn du nur Text einfugen willst, dann musst du die lösung von Raccoon666 nehmen.

    - :schland: Wir werden Europameister! :schland: -



  • aber auch bei dieser Version geht es nicht ohne die Formartierung zu verlieren.
    Jedenfalls habe ich in vielen Versuchen noch immer keine Möglichkeit gefunden.



  • Hi,

    warum arbeitest nicht mit zwei RichEdits?
    Neuen Text im zweiten laden, alles markieren, ab in die Zwischenablage und dann im ersten aus der Zwischenablage wieder einfügen.

    Gruß Mümmel



  • wie kann ich denn aus einem RichEdit per Code in die Zwischenablage kopieren und wieder zurück, von Hand geht das ja mit Strg "C" und "V".
    Hat jemand ein Stück Code?

    Danke



  • Hi,

    wenn ich das jetzt richtig im >Kopf habe mit SelStart, SelLenth, CopyToClipboard und PasteFromClipboard.

    Gruß Mümmel


Anmelden zum Antworten