![]() |
Memo/Synedit Zeile hinzufügen ohne Zeilenumbruch
Hallo Leute,
ich habe ein Programm das verschiedene LogFiles ausließt und mitverfolgt damit sofort neue Logeinträge angezeigt werden. Aktuell schreibe ich die Daten wie folgt in das SynEdit:
Delphi-Quellcode:
Die Probleme die dabei entstehen sollten jedem klar sein:
vGUISynEdit.BeginUpdate;
vGUISynEdit.Text := vGUISynEdit.Text+NewText+#10; vGUISynEdit.Perform(WM_VSCROLL, SB_BOTTOM, 0); vGUISynEdit.EndUpdate; * Der Text wird immer komplett ausgelesen und neu in die Kompo geschrieben (Problem wenn Logfile sehr groß) * Das Textfeld merkt sich durch das neue einspielen nicht wo der User hingescrollt hat und springt somit immer an den Anfang (Workaround: WM_VSCROLL, SB_BOTTOM) Viel schöner wäre natürlich ein hinzufügen der Zeile mit einem Lines.Add(NewText);. Dabei wird am schluss aber ein Zeilenumbruch eingefügt der unter umständen nicht im Log vorhanden ist. Deswegen suche ich eine Möglichkeit nur den neuen Text hinzuzufügen ohne Zeilenumbruch. Es kann auch eine andere Komponente sein. Solange diese Syntax Highliting unterstützt. |
Re: Memo/Synedit Zeile hinzufügen ohne Zeilenumbruch
*push*
|
Re: Memo/Synedit Zeile hinzufügen ohne Zeilenumbruch
Du fügst doch selber den Zeilenumbruch ein, also beschwer dich nicht über diesen.
Delphi-Quellcode:
oder
vGUISynEdit.SelStart := -1; // -1 = Length(vGUISynEdit.Text)
vGUISynEdit.SelText := NewText; vGUISynEdit.SelLength := 0;
Delphi-Quellcode:
vGUISynEdit.BeginUpdate;
Try temp := vGUISynEdit.SelStart; vGUISynEdit.SelStart := -1; vGUISynEdit.SelText := NewText; vGUISynEdit.SelStart := temp; Finally vGUISynEdit.Endpdate; End; |
Re: Memo/Synedit Zeile hinzufügen ohne Zeilenumbruch
Hallo Himitsu
Zitat:
Das ist natürlich nicht schön und soll natürlich weg. Zitat:
Mein Code sieht somit im Moment so aus:
Delphi-Quellcode:
Jetzt hab ich aber noch Probleme damit das manche Zeilen nicht sichtbar sind. Erst wenn ich sie markiere dann werden alle sichtbar.
vGUISynEdit.BeginUpdate;
vGUISynEdit.SelStart := Length(vGUISynEdit.Text); vGUISynEdit.SelText := NewText; vGUISynEdit.EndUpdate; Außerdem hab ich das Problem das er die selektierung verliert bzw. mit dem Cursor immer nach unten springt. Ist ja auch ganz klar warum. Wenn ich jetzt aber als Workaorund das hier machen:
Delphi-Quellcode:
Damit springt der Cursor immer wieder auf seine alte Position zurück und somit auch die Ansicht. Bsp: Cursor oben, man will unten was nachlesen, scrollt runter, Dateiänderung somit springt der Cursor und dadurch die Anzeige wieder nach oben.
vGUISynEdit.BeginUpdate;
OldCursorPosition := vGUISynEdit.SelStart; vGUISynEdit.SelStart := Length(vGUISynEdit.Text); vGUISynEdit.SelText := NewText; vGUISynEdit.SelStart := OldCursorPosition; vGUISynEdit.EndUpdate; |
Re: Memo/Synedit Zeile hinzufügen ohne Zeilenumbruch
Joar, dann wirst du wohl auch noch die Position der ScrollBar speichern/zurücksetzen müssen.
Zitat:
|
Re: Memo/Synedit Zeile hinzufügen ohne Zeilenumbruch
Wie kann ich den die aktuelle Position der Scrollbars herausfinden?
Habe nur die Möglichkeit zum setzen gefunden: .ScrollBy |
Re: Memo/Synedit Zeile hinzufügen ohne Zeilenumbruch
Das weiß ich jetzt auch nicht, aber vor Kurzem gab es mal wieder einen Thread, wo 2 Memos synchron gescrollt werden sollten ... dort dürfte sich das Nötige finden lassen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz