Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Richedit - Fokus auf letzte Zeilen halten(inaktives Fenster) (https://www.delphipraxis.net/136884-richedit-fokus-auf-letzte-zeilen-halten-inaktives-fenster.html)

Viktorii 9. Jul 2009 13:44


Richedit - Fokus auf letzte Zeilen halten(inaktives Fenster)
 
Hallo zusammen.

Ich habe ein Fenster mit einem RichEdit drauf. Mit RichEdit.Lines.Append() füge ich Zeilen hinzu.

Wenn der sichtbare Bereich des RichEdit voll ist und ich weiter Zeilen anfüge, erscheint der Scrollbalken, die ersten Zielen verschwinden nach oben und die letzten Zeilen sind sichtbar. So soll es auch sein.

Ist allerdings eine andere Anwendung aktiv und mein Fenster ist im Hintergrund, werden die Zeilen zwar angefügt (was ich am kleiner werden des Scrollbalken sehen kann) aber der Fokus ändert sich nicht und bleibt auf den erste Zeilen.

Sobald ich das Fenster ankilcke und es wieder aktiv machen, ändert sich auch der Fokus und zeigt die letzten Zeilen.

Wie bekomme ich es hin, dass sich der Fokus 'on the fly' ändert sobald Zeilen hinzugefügt werden und das Fenster im Hintergrund ist?

RichEdit.Refresh hat leider nicht geholfen.

Vielen Dank

Lannes 9. Jul 2009 14:28

Re: Richedit - Fokus auf letzte Zeilen halten(inaktives Fens
 
Hallo,

versuch mal das:
Delphi-Quellcode:
with RichEdit1 do
  begin
  Lines.Append(...);
  SelStart := Length(Text);
  Perform(EM_SCROLLCARET, 0, 0);
  end;
Aber wofür scrollen, wenn das Fenster im Hintergrund ist :gruebel:

Viktorii 9. Jul 2009 15:22

Re: Richedit - Fokus auf letzte Zeilen halten(inaktives Fens
 
Zitat:

Zitat von Lannes
Hallo,

versuch mal das:
Delphi-Quellcode:
with RichEdit1 do
  begin
  Lines.Append(...);
  SelStart := Length(Text);
  Perform(EM_SCROLLCARET, 0, 0);
  end;

Klappt leider nicht :(




Zitat:

Zitat von Lannes
Aber wofür scrollen, wenn das Fenster im Hintergrund ist :gruebel:

Ich habe eine Software welche mit meiner Anwendung kommuniziert. Nun gebe ich mir Debug-Informationen auf das RichEdit aus. Wenn ich nun die sendende Software (mit nicht maximiertem Fenster) bediene, möchte ich die Debug Infos in meiner Anwendung sofort sehen (ohne meine Anwendung zwischendurch wieder aktiv machen zu müssen).

Lannes 10. Jul 2009 07:39

Re: Richedit - Fokus auf letzte Zeilen halten(inaktives Fens
 
Hallo,

das Standardverhalten des RichEdit ist ein automatisches Scrollen beim Einfügen der Zeilen mit Append, auch dann wenn die Anwendung nicht aktiv ist.

Also wird das Scrollen durch etwas anderes verhindert, da fehlen jetzt Informationen um weiter helfen zu können. Wie ist denn die Kommunikation realisiert?

Hilft ein Aufruf von Application.ProcessMessages nach dem Einfügen mit Append?

Viktorii 10. Jul 2009 08:04

Re: Richedit - Fokus auf letzte Zeilen halten(inaktives Fens
 
Application.ProcessMessage hilft leider auch nicht.

Kann gut sein dass ich das Scrollen durch irgendetwas verhindere.

Dazu und zum Thema wie die Kommunikation realisiert ist möchte ich hierhin verweisen :-D

Lannes 10. Jul 2009 09:29

Re: Richedit - Fokus auf letzte Zeilen halten(inaktives Fens
 
Hallo,
Zitat:

Zitat von Viktorii
Kann gut sein dass ich das Scrollen durch irgendetwas verhindere.

Dann nimm doch mal "irgendetwas"(nicht unbedingt benötigtes) aus Deinem Code raus :wink:

Zitat:

Zitat von Viktorii
Dazu und zum Thema wie die Kommunikation realisiert ist möchte ich hierhin verweisen :-D

Denke nicht das es an der reinen Kommunikation -Empfang der Daten- liegt.

was mir noch so einfällt:
- RichEdit durch Memo ersetzen = Problem noch vorhanden?
- RichEdit.Invalidate?
- RichEdit.RePaint?

Viktorii 10. Jul 2009 10:20

Re: Richedit - Fokus auf letzte Zeilen halten(inaktives Fens
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hilft leider alles nicht.

TMemo hingegen macht es genau so wie ich es möchte. :gruebel:

Siehe Beispielprogramm im Anhang.

Lannes 10. Jul 2009 13:00

Re: Richedit - Fokus auf letzte Zeilen halten(inaktives Fens
 
Hallo,

Deine exe zeigt den Fehler.

Hab den Code mal mit DelphiTurbo nachgebaut, Scrollen ist OK.

In Deiner Projektdatei ist Application.MainFormOnTaskBar:=True; vorhanden.
Das gibt es erst ab Delphi 2007, hat mir das Inet verraten.
Das ist der einzige Unterschied zu meiner Programmversion.

Ob damit ein Zusammenhang besteht?

Viktorii 14. Jul 2009 07:30

Re: Richedit - Fokus auf letzte Zeilen halten(inaktives Fens
 
Seltsam. Bei mir tut's die exe....

Application.MainFormOnTaskBar:=True; auskommentieren hilft leider auch nicht.

Wollte das auch mal mit TurboDelphi probieren, aber scheinbar kann ich das nicht parallel zu Delphi 2009 installieren :?

Hat jemand vielleicht noch eine Idee?

Lannes 14. Jul 2009 08:14

Re: Richedit - Fokus auf letzte Zeilen halten(inaktives Fens
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

Deine exe funktioniert, ich meinte mit "zeigt den Fehler", das abweichende Scrollverhalten.

Was ist wenn Du Application.MainFormOnTaskBar auf False setzt?

Im Anhang mal das normale Verhalten des RichEdits(mit Turbo Delphi erzeugt).


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:05 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz