Autor Beitrag
Tobi482
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 135



BeitragVerfasst: Do 01.05.08 16:47 
Hallo,

ich habe ein Problem mit der MemoBox. In meinem Programm gibt es mehrere (80-100) TStringList'en, die mit Text (Logzeilen) gefüllt sind. Da ich in bestimmte Logs reinschauen möchte, habe ich ein Fenster geschrieben, das mir EINEN gewählten Log ausgibt.

Während ich diesen Log betrachte, passieren viele weitere Events, die geloggt werden. Somit ändert sich der gerade betrachtete Log. Diese Änderungen hätte ich gerne auch in meinem BetrachtungsFenster. Um dies zu realisieren habe ich eine Routine programmiert, die, sobald sich der gewählte Log verändert, das LogViewer-Fenster aktualisiert.

Dies geschieht indem ich die StringList erneut an Memo.Lines übergebe.

Dabei treten folgenden Probleme auf:

1.) Die Memobox scrollt auf Zeile 1 zurück (hinzugefügte Zeilen stehen aber unten)
2.) Die ganze Memobox flackert

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
Procedure UpdateLog;
begin
     //Wenn keine Instanz gewählt ist, dann abbrechen
     if CurrentInstance < 0 then exit;

     //Wenn kein Loggen erwünscht ist abbrechen
     if not main.chkb_logging.Checked then exit;

     //Log übernehmen
     main.memo_log.Lines := Instances[Current].Log;

     //Letzte Zeile scrollen
     SendMessage(main.memo_log.Handle, EM_LINESCROLL, 0, main.memo_log.Lines.Count - 1);
end;


Das scrollen habe ich in den Griff bekommen, jedoch wurde dadruch das flackern nur noch schlimmer.

Wenn jemand eine Idee oder Tipp für mich hat, wäre ich ihm sehr Dankbar

Schon einmal herzlichen Dank im Vorraus.

Mit freundlichen Grüßen
Tobi
passiv
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 270

WIN XP Professional
Delphi 7 Enterprise, Java (Eclipse), Python 2.5, Django 1.1
BeitragVerfasst: Do 01.05.08 17:13 
schon mal doublebuffered:=true probiert? das hat bei mir immer alle probleme mit dem aufbau von bildern etc. behoben. dann darf man aber nicht so ohne weiteres den XP-Skin benutzen, weil dann checkboxes, buttons, etc. eigenartig werden.

mfg Fabs

EDIT1: lösung gerade gefunden: memo auf panel packen und panel.doublebuffered:=true setzen
EDIT2: und weiters gefunden: funktioniert offenbar nicht immer :roll:

_________________
Die Probleme, die es in der Welt gibt, sind nicht mit der gleichen Denkweise zu lösen, die sie erzeugt hat.
Albert Einstein
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Do 01.05.08 17:53 
Vielleicht helfen die diese beiden Prozeduren weiter:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
Memo1.Lines.BeginUpdate;
try
  Memo1.Lines.Text := Neuertext;
finally
  Memo1.Lines.EndUpdate;
end;

Das hat bei mir schon einige Flackler behoben.
Tobi482 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 135



BeitragVerfasst: Fr 02.05.08 13:55 
DANKE JUNGS,

ihr seid Klasse :D

eurer Tips haben das Problem behoben :)
Ist nun alles flackerfrei.

Gruß
Tobi