TMemo immer nach ganz unten scrollen
-
siehe FAQ unter RichEdit - Zum Textende scrollen...
-
#define OUTM TMemo1->Lines->Append // am Anfang definieren char Message[2000]; int a = 0; for(int i=0; i<150; i++, a++) { sprintf(Message,"%d", a); OUTM(Message); } OUTM("Fertig")Ich hoffe das funzt so, habs nich getestet.
Gruss
-
Hallo
@ Kalle_123 : Und was soll der unsinnige Code in diesem Thread? In diesem Subforum?
bis bald
akari
-
Bitte?
Was ist daran unsinnig? Das ist genau das was er sucht.
Zeilen hinten anhaengen .. Append. Bei mir geht das wunderbar.Ihr solltet mal von eurem Level runterkommen und nicht immer so hyperklug rumposten .. geht mir persoenlich gegen den Strich.
Wenn ein anderer Mod hier schreibt, er hat mal schnell was gecoded und nich getestet obs funktioniert, dann kommen alle und wollen es testen. So kommt es mir vor.
bis denne, ich muss Schaffen.
-
Hallo
Zu deinem Code allgemein :
- Warum ein Makro? Wir sind hier nicht in C
- Warum char[2000]? Die Schleife erzeugt maximal Strings mit 3 Zeichen
- Warum char? Wir haben den Builder und können AnsiString benutzen, viel bequemer und sicherer
- Warum zwei Zählvariablen in der Schleife
- Warum sprintf, wenn man AnsiString und IntToStr benutzen kann?Viel schlimmer als die ganzen stilistischen Fehler ist aber, das dein Code nichts mit der Frage zu tun hat.
Denn mwoidt weiß sehr wohl wie man neue Zeilen in ein TMemo einfügtFüge automatisch immer neue Zeilen hinzu.
Die Frage ist vielmehr
Gibt es eine Einstellung, dass das Memo automatisch immer nach hinzufügen von Zeilen nach ganz unten anstatt nach ganz oben srollt?
Und dieses Problem wird von deinem miesen Code nicht mal tangiert. Sondern das hat Linnea vollkommen ausreichend beantwortet.
Wahrscheinlich falle ich auch nur auf einen Troll rein...
bis bald
akari
-
Vielleich hier noch mal was konstruktives:
Ich mache das immer so:
Memo->Perform(WM_VSCROLL, SB_BOTTOM, 0);
-
akari schrieb:
Hallo
Zu deinem Code allgemein :
- Warum ein Makro? Wir sind hier nicht in C
- Warum char[2000]? Die Schleife erzeugt maximal Strings mit 3 Zeichen
- Warum char? Wir haben den Builder und können AnsiString benutzen, viel bequemer und sicherer
- Warum zwei Zählvariablen in der Schleife
- Warum sprintf, wenn man AnsiString und IntToStr benutzen kann?Viel schlimmer als die ganzen stilistischen Fehler ist aber, das dein Code nichts mit der Frage zu tun hat.
Denn mwoidt weiß sehr wohl wie man neue Zeilen in ein TMemo einfügtFüge automatisch immer neue Zeilen hinzu.
Die Frage ist vielmehr
Gibt es eine Einstellung, dass das Memo automatisch immer nach hinzufügen von Zeilen nach ganz unten anstatt nach ganz oben srollt?
Und dieses Problem wird von deinem miesen Code nicht mal tangiert. Sondern das hat Linnea vollkommen ausreichend beantwortet.
Wahrscheinlich falle ich auch nur auf einen Troll rein...
bis bald
akariFein. Ich bin ja soo dumm, wie konnte ich nur

Ich hab einfach nur nen Beispiel gemacht. Es gibt 100% eine bessere Lösung als sprintf und char. Aber wayne.. hier geht es doch nicht um den Code sondern um einen Gedankenansatz.
In Zukunft könnt ihr gerne weiterhelfen, ich seh schon, ich habs einfach nicht drauf. Danke nochmals für deine ernüchternden Worte.Gruß Kalle_123
PS: Ich bin auch auf dich reingefallen. Leider.
-
Kalle_123 schrieb:
Fein. Ich bin ja soo dumm, wie konnte ich nur

Einsicht ist der erste Schritt zur Besserung.
Außerdem mußt du mit solchen Reaktionen rechnen, wenn du Code postest, der sowohl keine Lösung des Problems darstellt als auch gleich mehrere sehr grenzwertige Stilverletzungen enthält. Warum dieses (@akari: auch aus C-Sicht!) völlig unsinnige Makro? Wenn du Schreibarbeit sparen willst, definiere ein lokales TStrings*, weise dem Memo1->Lines zu und benutze das. Und wenn schon sprintf, warum dann nicht die gleichnamige Memberfunktion von AnsiString? (weitere sehr berechtigte Kritikpunkte siehe akaris Post)Kalle_123 schrieb:
hier geht es doch nicht um den Code sondern um einen Gedankenansatz.
Falls du den "Gedankenansatz" meinst, einer TStringList mittels der Add()-Methode einen String hinzuzufügen, den scheint der Threadersteller, wie ich seinem Post entnehme, bereits gehabt zu haben und anzuwenden - das scheint ja auch zu funktionieren. Offenbar ist sein Problem damit aber nicht gelöst. Weitergehende Ansätze bietet dein Code nicht, außer einer hervorragenden Vorlage für einen FAQ-Eintrag "Was muß ich auf dem Weg zu gutem Code unbedingt vermeiden? 1. Für Einsteiger".
Kalle_123 schrieb:
In Zukunft könnt ihr gerne weiterhelfen, ich seh schon, ich habs einfach nicht drauf.
Wenn der Code dein Ernst war, dann will ich das gar nicht mal bezweifeln.
Zum Thema: prinzipiell dürfte die von W. Posur angesprochene Lösung die beste sein, aber zumindest bei meinen Versuchen scrollen Memos automatisch nach unten, wenn man neue Zeilen mittels ->Lines->Add hinzfügt.
@mwoidt: kannst du mal die entsprechende Stelle des Codes zeigen?
-
Zum Thema: prinzipiell dürfte die von W. Posur angesprochene Lösung die beste sein, aber zumindest bei meinen Versuchen scrollen Memos automatisch nach unten, wenn man neue Zeilen mittels ->Lines->Add hinzfügt.
Das dürfte dann aber eine optische Täuschung bei dir sein, das ist definitiv nicht so. (Habe es mit Builder 5 und TurboC++ 2006 ausprobiert) Vielleicht scrollt das TMemo kurz während des Einfügens, aber nach dem Einfügen steht es wieder wo es war bzw. ganz oben. Hast du wirklich mal ein TMemo per Code ganz vollgeschrieben und dann weiteren Text zugefügt? Dieser ist ohne den zusätzlichen Scroll-Befehl nicht sichtbar. Und genau um dieses Problem ging es hier ja ursprünglich.
-
Und genau dieses Problem war schon in der zweiten Antwort mit dem Hinweis auf die FAQ gelöst ...
-
W. Posur schrieb:
Das dürfte dann aber eine optische Täuschung bei dir sein, das ist definitiv nicht so.
Nein, sorry, so kaputt sind meine Augen noch nicht

Mein Versuchsaufbau:
- neues Formular
- TMemo und TButton draufziehen, Standardnamen zwecks Einfachheit belassen
- in Button1->OnClick folgendes eintragen:void __fastcall TForm1::Button1Click(TObject *Sender) { Memo1->Lines->Add ("newline" + AnsiString (Memo1->Lines->Count)); }Wie sieht das bei dir aus? Wenn mein Memo durch manuelles Füllen oder durch Klicks auf Button1 voll ist, scrollt es bei jedem weiteren Klick auf denselben automatisch weiter nach unten (BCB 6, Turbo C++ 2006).
-
BSB6: Memo scrollt automatisch, RichEdit nicht.
-
Ich entschuldige mich.
Auch im BCB5 ist es so, daß TMemo automatisch scrollt bei Lines->Add.
Das Problem war bei mir aufgetreten beim Zugriff auf TMemo->Text, wenn dort ein zu langer Text eingefügt wird, dann muß ich den Scroll-Befehl zufügen.
Außerdem war das Problem bei einer TListBox aufgetreten.