Memo -> Einzelne Lines



  • guten morgen!

    kann man in einem Memo auf einzelne Zeilen zugreifen?
    also ich will zB immer nur die 2. Zeile löschen.
    geht das, oder nur bei RichEdits?

    thx
    Bj



  • Memo1->Lines->Delete(1);
    


  • Was Jester eigentlich sagen wollte:
    Die Suchfunktion liefert mit den Stichworten "Memo Zeilen Zugreifen" jene Threads in denen das Thema abgehandelt wird.

    Ausserdem würde ich dringend empfehlen, dir mal das Hilfesystem des BCB genauer anzusehen. (der Link ist zum Anschauen da und ned aus spass.)

    -junix



  • nö, das wollte jester nicht eigentlich sagen 😃



  • ...du weisst genau wie ich das meinte.

    -junix



  • klar weiß ich das 🙂
    habe mir deine hilfe zur hilfe mal durchgelesen.
    ist zwar ganz gut, aber für mich nichts neues drin.

    zB würde ich jetzt gerne die hilfe benutzen, bei dem problem, wie man in einem richEdit auf einzelne zeilen und drt auf textpassagen zugreift und diese 'fett' macht...
    da stehe ich gleube ich vor einer unlösbaren aufgabe.
    trotzdem poste ich diese frage jetzt einfach mal nicht, und beiße mich, auch wenn es nix nützt, durch die hilfe...

    Bj



  • Bj schrieb:

    trotzdem poste ich diese frage jetzt einfach mal nicht, und beiße mich, auch wenn es nix nützt, durch die hilfe...

    Wieso sollte das nichts nützen. Mir hat die Hilfe bislang _immer_ genützt. Und auch dein Problem habe ich früher schonmal allein mit der BCB-Hilfe (vom BCB 1.0) gelöst.



  • das thema "TRichEdit" und "Text fett darstellen" wurde schon so oft hier im board diskutiert
    benutz die suchfunktion und du wirst garantiert fündig



  • ja ja, es wurde hier schon so oft diskutiert, aber ich will nicht immer hier im forum suchen, sondern die BCBHilfe benutzen können...

    naja, also ich habe jetzt trotzdem (auch builder-1-hilfe) folgende probleme welche bleiben:
    ich finde bei methoden von trichedit keine Lines oder Items, sodass ich nicht weiss wie ich auf die einzelnen zeilen zugreife.
    dann möchte ich verschiedenen zeilen nach dem ersten dopplepunkt suchen, und danach alles fett machen.
    gut, fsBold habe ich gefunden, den rest aber leider nicht.
    nur das SelAttributes anscheinend die Lösung meines Problems sind, doch dort finde ich leider nix das mich weiterbringt.
    also was soll ich tun?

    Bj



  • Ok, zum Mitschreiben:

    1.) Auf das TRichEdit-Element klicken (im Formular)
    2.) Strg+F1 drücken, um die Richedit-Hilfe anzuzeigen.
    3.) Oben auf Eigenschaften klicken. Im neuen Fenster "SelAttributes" auswählen, schonmal nachschauen, was dort noch alles mit Selektion zu tun haben könnte.
    4.) Bei neuen Typen immer auf den Namen des Typs klicken. Dann siehst du auch wie du mit SelAttributes umgehen musst...



  • 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


Anmelden zum Antworten