Announcement

Collapse
No announcement yet.

Zeilenzahl von Memo ermitteln

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zeilenzahl von Memo ermitteln

    Hallo,

    bin neu hier im Forum und auch in C++ Programmierung. Ich möchte ein kleines Program schreiben, das per Com-Port automatisch Befehle an ein Modul schickt und Antworten auswertet. ComPort Kommunikation klappt schon einigermaßen. Bei der Auswertung weiß ich jetzt aber nicht weiter.

    Ich habe ein Memo-Feld. Dadrin ist alles gespeichert was per ComPort ankommt. Anfangs ist die Liste leer, dann wird die immer größer. Ich weiß jetzt, dass ich mit Memo1->List->Strings[1] zum Beispiel den Inhalt der zweiten Zeile rausnehmen kann und dann auswerten. Wie kann ich aber die letzte, die vorletzte oder die dritt letzte Zeile rausnehmen? Hat Memo vielleich eine Variable, die die Information über die Gesamtanzahl der Zeilen enthält? Gibt es evtl. eine bessere Möglichkeit?

    2. Frage nebenbei, wie aktiviere ich automatisches Scrolling von einem Memofeld? Zur Zeit ist es so, dass die Ansich immer oben bleibt, obwohl neuer Text dazukommt.

    Ich danke euch im Voraus!

  • #2
    zu 1: Ja, eine solche Eigenschaft gibt es Memo1->Lines->Count.

    zu 2: Nein, das geht nicht automatisiert (in einem RichEdit reicht es, diesem den Fokus zu geben, dann scrollt es automatisch weiter). Du mußt dafür mit Perform() eine entsprechende Botschaft an das Memo senden. Weiß aber nicht auswendig, welche...

    Grüße Jochen

    Comment


    • #3
      Eine andere Moeglichkeit waehre, die aktuellste Information "oben" zu halten anstatt die Info hinten anzuhaengen.
      Anstatt: Memo->Lines->Add("Information");
      Memo->Lines->Insert(0, "Information");
      Es wird der Text "Information" immer an erster Stelle eingefuegt.

      Comment


      • #4
        So kannst Du den Cursor in eine bestimmte Zeile setzen und dorthin scrollen.
        Code:
        // Cursor an Anfang von Zeile 5 setzen 
        Memo1->SelStart = Memo1->Perform(EM_LINEINDEX, 4, 0); 
        // zur Zeile mit Cursor scrollen 
        Memo1->Perform(EM_SCROLLCARET, 0, 0);

        Comment

        Working...
        X