Announcement

Collapse
No announcement yet.

Memo an das Ende der Zeilen positionieren

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

  • Memo an das Ende der Zeilen positionieren

    Hi,

    gibt es eine Möglichkeit per Programm auf die letzte Zeile in der Memo-Komponente zu positionieren?

    Bye - Peter

  • #2
    Die Zeilen der Memo-Komponente sind vom TStrings. Diese haben die Eigenschaft COUNT.

    Dann könnte man also alle Zeilen in einer Schleife durchgehen die Zeichen zählen und in Abhängigkeit der Länge der letzten Zeile mit SELSTART positionieren??

    Christia
    Christian

    Comment


    • #3
      Puh, das klingt ja nach ner Aufgabe für jemanden der Vater und Mutter erschlagen hat. Da muß es doch irgend was Schlaueres geben.

      Nach einigem Suchen habe ich zwar schon was Nettes gefunden:<BR>

      SendMessage(Memo1->Handle,EM_LINESCROLL,0,65565);

      positive Zahlen scrollen den Text nach hinten und negative nach vorne. Einen Schönheitsfehler hat die Sache noch: Der Cursor bleibt da wo er ist. Schade - hat jemand noch ne bessere Idee. Die Windows API hat doch sicher noch was anderes auf Lager, oder ?

      Bye - Pete

      Comment


      • #4
        Hi Peter!<br>

        Schaue einfach unter ScrollBy nach.Man braucht nicht immer die API.<br>

        Gruß Fre

        Comment


        • #5
          Hi Fred,

          hast du das mal ausprobiert? Da passiert irgendwie was total anderes als ich erwartet hatte.

          Bye - Pete

          Comment


          • #6
            Hi Peter!

            Ich habe damit keine Probleme.

            Gruß Fre

            Comment


            • #7
              Sorry Peter!

              Habe das Gestern mal so getestet wie Du es brauchst.<br>
              Hat wirklich nicht funktioniert.<br>
              Ich habe bei mir nach ..->Add() immer ein ScrollBy aufgerufen,<br>
              und dadurch ist es mir nicht aufgefallen.
              SendMessage(Memo->Handle,EM_LINESCROLL,0,-Memo->Lines->Count )<br>
              funktioniert tadellos.

              Gruß Fre

              Comment


              • #8
                Hi Fred,
                das Problem, daß der Cursor an seiner alten Position bleibt ist allerdings immer noch da.

                Bye - Pete

                Comment


                • #9
                  Hi Peter!

                  da muß Du die API halt nochmal bemühen, in dem Du SelSart setzt.<br>
                  Erst mit LINESCROLL auf Zeile 1 und dann<br>
                  Memo->SelStart = SendMessage( Memo->Handle,EM_LINEINDEX,1,0 );
                  den Cursor setzen. Möchtest Du diese Zeile gleich markieren, dann<br>
                  noch<br>
                  Memo->SelLength = SendMessage( Memo->Handle,EM_LINELENGTH,Memo->SelStart,0 );<br>
                  ausführen.

                  Gruß Fre

                  Comment


                  • #10
                    Frage:

                    Geht das auch mit der VCL und den Eigenscahften der TMEMO-Klasse??

                    Hat die nicht auch die Möglichkeit mit SELSTART und SELEND??

                    Christia
                    Christian

                    Comment


                    • #11
                      Hi Fred,
                      Vielen Dank, so gehts.

                      Bye - Pete

                      Comment


                      • #12
                        Hi Christian!<br>

                        Ist schon richtig, mit SelStart setzt Du die Curpos aber...<br>
                        die Anzeige wird damit nicht angepaßt, falls diese Position<br>
                        außerhalb des Sichtbereiches ist.<br>
                        Also doch ein bischen API benutzen.<br>
                        Ich habe den Zusammenhang auch nicht gleich gerafft, da man <br>
                        ja davon ausgeht das die Borländer mit denken.(is nich)<br>

                        Gruß Fre

                        Comment


                        • #13
                          Danke!

                          So'n Mist!

                          Sollte doch eigentlich alles über die VCL gekapselt sein. naja

                          Fällt mir nur ein die Komponente ev. mit Repaint oder Update neu zeichnen
                          Christian

                          Comment

                          Working...
                          X