richedit inhalt zwischenspeichern



  • Original erstellt von riebl:
    RichEdit brauch ich wegen SyntaxColoring

    Oh Mann, ich brech gleich zusammen ... 😉

    Textfarben sind Formatierungen!

    Also nimm doch (ein Array von) TStringStream (RichEdit::Lines::SaveToStream), die Zuordnung lässt sich dann über den Arrayindex und den ComboBox-Index herstellen.



  • Oh Mann, ich brech gleich zusammen ...

    Bleib mal standhaft, Jansen. 😉 Vielleicht braucht er die Formatierung im RichEdit, aber nicht im Zwischenspeicher. Vielleicht. Dann reicht wie gesagt auch eine StringList. Und da würde ich

    TStringList* List = new TStringList;
    List->AddStrings(RichEdit1->Lines);
    // mach was
    delete List;
    

    empfehlen.



  • Original erstellt von WebFritzi:
    List->AddStrings(RichEdit1->Lines);

    Hmm, das finde ich eher ungünstig. Dabei verlierst du doch die (einfache) Möglichkeit der Index-Zuordnung!? Oder willst du wirklich für jede Speicherung eine neue StringList benutzen? Ist doch total umständlich.



  • jansen: ich weiß das syntaxcoloring formatierung ist, aber ich brauch das, wie andreas vermutet hat, nicht im zwischenspeicher.
    ich werd also nun mir ein TStringStream Array machen 😃
    danke nochmal für alles!



  • Das Stream-Array ist aber um einiges umständlicher als die StringList-Methode, wenn die Textattribute 😉 nicht benötigt werden würde ich auf jeden Fall letzteres benutzen.



  • jansen: na gut, dann eben StringList, wie sie meinen, master 😃
    für jeden inhalt also eine StringList... das werd ich (hoffentlich) noch schaffen 😉



  • Original erstellt von riebl:
    für jeden inhalt also eine StringList

    Eben nicht! Das ist ja das Gute an der StringList-Lösung: eine StringList, jedes Item enthält jeweils einen RichEdit-Inhalt (TRichEdit::Text).



  • jansen: achja, genau... hab heute mathe schulaufgabe geschrieben, bin wohl deswegen nicht mehr ganz auf der geistigen höhe... 🙂



  • Hi,
    Ich habe das selbe mit TabControl gemacht, aber mir unterläuft da wohl ein Denkfehler. Hier mal der hauptsächliche Code:

    THauptfenster *Hauptfenster;
    int count = -1;  //Anzahl der Tabs beim TabControl
    TStringList* Inhalt = new TStringList;
    //---------------------------------------------------------------------------
    void __fastcall THauptfenster::FormCloseQuery(TObject *Sender, bool &CanClose)
    {
     delete Inhalt;  //Beim Beenden des Programmes wird der Speicher wieder freigegeben
    }
    //---------------------------------------------------------------------------
    void __fastcall THauptfenster::EditorenChange(TObject *Sender)
    {
     Editor->Text = Inhalt->Strings[Editoren->TabIndex];  //sollte dem RichEdit den String-Eintrag aus der TStringList mit dem selben Index wie dem Tab zuweisen
    }
    //---------------------------------------------------------------------------
    void __fastcall THauptfenster::EditorenChanging(TObject *Sender,
        bool &AllowChange)
    {
     Inhalt->AddStrings(Editor->Lines);  //Fügt den gegenwärtigen RichEdit-Inhalt der TStringList hinzu, bevor der neue Register den Focus bekommt
    }
    //---------------------------------------------------------------------------
    void __fastcall THauptfenster::DateiNeueDateiClick(TObject *Sender)
    {
     if (count == -1) Editor->Show();  //Am Anfang ist das RichEdit(Editor) noch unsichtbar
     ++count;
     Hauptfenster->ActiveControl = Editor;
     SaveDialog->FileName = "Neu" + AnsiString(count);
     Editoren->Tabs->Add(SaveDialog->FileName);  //Fügt dem TabControl einen Register hinzu
     Editoren->TabIndex = count;  //Der aktuelle Register ist immer der neu erstellte
    }
    //---------------------------------------------------------------------------
    

    Jedoch funzt das nicht, irgendwo liegt da der Fehler.



  • Inhalt->Add(Editor->Text);
    

Anmelden zum Antworten