Ich hatte mich folgender massen beholfen, aber dies funktioniert nur, wen man den ganzen Text immer neu ins Memo schreibt.
Aber auch nicht perfekt, bei deaktivierten AutoScroll, wird immer auf die erste Zeile gesprungen.
Code: Alles auswählen
procedure TSerial_Monitor_Form.Timer1Timer(Sender: TObject);
var
StringCount: integer;
s: string;
begin
Timer1.Enabled := False;
s := GetString; // Zufällig erzeugter String
// StringCount := Memo1.Lines.Count - 1;
// Memo1.Lines[StringCount] := Memo1.Lines[StringCount] + s;
Memo1.Lines.Text := Memo1.Lines.Text + s;
if AutoScroll_CheckBox1.Checked then begin
Memo1.SelStart := -2; // Behelf
end;
Timer1.Enabled := True;
end;
Wen ich am Memo nicht mache, läuft es wie mit aktivierten AutoScroll. Aber sobald ich mal mit der Maus im Memo rumklicke, bleibt das Bild stehen.
Und egal, was ich es mache, ein AutoScroll kommt nicht mehr.
Code: Alles auswählen
begin
Timer1.Enabled := False;
s := GetString; // Zufällig erzeugter String
StringCount := Memo1.Lines.Count - 1;
Memo1.Lines[StringCount] := Memo1.Lines[StringCount] + s;
// Memo1.Lines.Text:=Memo1.Lines.Text+s;
if AutoScroll_CheckBox1.Checked then begin
Memo1.SelStart := -2; // Behelf
end;
Timer1.Enabled := True;
end;
Notfalls würde ich statt eine Memo ein SynEdit Feld nehmen.
Im Anhang noch der ganze Code.