Memo -> Einzelne Lines



  • ok, also, wenn ich diese zeilen in ein richedit eintrage:

    Form1->mem_meldungen->Lines->Add ("Vergleich abgeschlossen\r\nFehlende Dateien: " + String(nzaehler)
                                            + "\r\nÜbergangene Dateien: " + String(gesamt-(nza
    

    kann ich zB den 'nzaehler' direkt an dieser stelle fcBold-fett machen?
    und wenn ja wie?

    Bj



  • ich wiederhole mich ungerne, aber BENUTZE DIE SUCHFUNKTION VOM BOARD



  • Achja...

    Schreib erstmal den Text nur bis kurz VOR die Zahl ins Richedit. Merke dir dann mit Text.Length() das Ende. (Als Startposition) schreib dann die Zahl rein und merke dir die Anzahl der Zeichen (der Zahl). Dann setzt du SelStart und SelLength. Und zum Schluss manipulierst du SelAttributes wie du es brauchst. Dann SelAttributes wieder zurücksetzen un den restlichen Text hinzufügen.



  • habe ich, und ich habe folgende seiten gefunden, die mir evtl. einwenig nützlich sein könnten:

    http://www.c-plusplus.net/forum/viewtopic.php?t=8614&highlight=richedit+fett
    http://www.c-plusplus.net/forum/viewtopic.php?t=11266&highlight=richedit+fett
    http://www.c-plusplus.net/forum/viewtopic.php?t=12610&highlight=richedit+fett

    doch jetzt sag mir mal wie ich dort das hearusfinden soll:
    wie baue ich in diese zeile ein, wie ich das fett eingezeichnete im richedit fett bekommen:
    Form1->mem_meldungen->Lines->Add ("Vergleich abgeschlossen\r\nFehlende
    Dateien: " + String(nzaehler)

    ??
    ich weiß es einfach nicht





  • Schau mal unter TTextAttributes (der Typ von SelAttributes) und dan Style nach. Da gibt's gleich ein Beispiel dazu.



  • also ich habs jetzt mal so gemacht:

    Form1->mem_meldungen->Lines->Add ("Vergleich abgeschlossen\r\nFehlende Dateien: ");
     Form1->mem_meldungen->SelAttributes->Style=TFontStyles()<< fsBold;
     Form1->mem_meldungen->Lines->Add (String(nzaehler);
    

    doch dann stehen diese beiden strings natürlich nicht mehr in der selben zeile im richedit.
    wie kann ich diese problem lösen?



  • schreibe erst die komplette zeile rein in die REd
    wenn du wissen willst wo deine zahl beginnt, setzte
    nen marker e.g. § (..bla bla bla..§"+String(nzaehler)...
    SelStart = REd->Text.Pos("§");
    SelLength = //zeichenlänge der zahl von nzaehler (int zl = AnsiString(nzaehler).Length;)
    und dann mit SelAttributes ändern
    dann das § löschen:
    REd->Text = StringReplace(REd->Text, "§", "", TReplaceFlags() << rfReplaceAll );
    dann SelAttributes zurücksetzten ( TFontStyles() >> fsBold

    TIP: suche nicht nach den genauen codeschnippel den du brauchst,
    denke logisch und bei dir es aus den infos die du findest, proggen
    ist nicht nur code sondern auch logisch denken.

    Asta la, H.K.



  • danke, so geht in etwa.
    obwohl er bei mir leider nicht die funktion stringreplace kennt.....

    aber trotzdem vielen dank.

    Bj

    @junix...das hätte ich niemals so in der hilfe finden können 😞
    deshalb entschuldige die frage 😉



  • Hallo,

    um das Thema (2 Seiten für so´n Kram) abzuschließen:

    int nzaehler = 123;
    // 123 als Beispiel
    RichEdit1->Lines->Add ("Vergleich abgeschlossen\r\nFehlende Dateien: " + String(nzaehler) );
    int lpos = RichEdit1->SelStart -2; // -2 wegen Zeilenumbruch
    RichEdit1->SelStart = lpos - String(nzaehler).Length();
    RichEdit1->SelLength = String(nzaehler).Length();
    RichEdit1->SelAttributes->Style = TFontStyles() << fsBold;
    RichEdit1->SelStart = lpos;
    RichEdit1->SelAttributes->Style = TFontStyles() >> fsBold;
    RichEdit1->Lines->Add ("weiteres ...");
    

    Erklärung:
    letzte position minus zeilenumbruch (-2) minus zeichenlänge der Zahl (3)
    SelLength mit der zeichenlänge der zahl (3)
    bold rein setzten
    SelStart wider zurück zum ende der zeile
    bold raus nehmen
    und weiter

    Ich hoffe es bleibt bei 2 Seiten für diesen Theard

    gruß promicha



  • Bj: Das unentshculdbare an der Diskussion bezüglich TRichEdit ist, dass sie offtopic ist (gemäss Thema solls hier ja um TMemo gehen)

    Was den Rest betrifft: Stimmt vorgekaut hättest du das bestimmt nicht in der Hilfe gefunden. Nur, du wolltest im Memo eine einzelne Zeile ansprechen und löschen. Diese Aufgabe war mit der Hilfe lösbar (ebenfalls beinahe vorgekaut).

    Wenn mein Tut da nix neues für dich geliefert hat, wieso benutzt du dann bestehende Erkenntnisse nicht um das problem zu lösen?

    Programmieren impliziert nunmal auch denken. Aber man kannst natürlich auch wie du machen, und einfach wie ein Käfer auf dem Rücken, alle Extremitäten gen himmel strecken und hilfe rufen, bis man jmd findet, der einen umdreht, anstelle selbst etwas Zeit aufzuwenden um sich mit der Materie zu befassen. manchmal steht hald nicht alles klar und direkt zum abschreiben in der Hilfe. Und manchmal muss man hald auch mal eine Theorie umd ie Verwendung von attributen Bilden und diese Theorie ausprobieren. nur so kann man lernen mit dem Fraemwork umzugehen und intuitiv langsam die richtigen Lösungen zu finden. Gerade du, der in der Ausbildung steckt, hast es noch viel nötiger als andere, diese Intuition zu entwickeln.

    Softwareentwickeln bedeutet hald auch, dass man manchmal langwierig nach Ressourcen suchen muss, die einen eine Problemlösung (oder eine Teilllösung) ermöglichen. (-> Stichwort Eigeninitiative/Erfindergeist)

    So, das wars. Weitere Beiträge die nicht um das Zugreifen auf einzelne Zeilen im TMemmo gehen, werden kommentarlos entfernt. Weitere Debatten über gesagtes sind per Mail oder in einem neuen Thread im Neuigkeiten Forum anzureissen.

    -junix


Anmelden zum Antworten