AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Richedit - Fokus auf letzte Zeilen halten(inaktives Fenster)
Thema durchsuchen
Ansicht
Themen-Optionen

Richedit - Fokus auf letzte Zeilen halten(inaktives Fenster)

Ein Thema von Viktorii · begonnen am 9. Jul 2009 · letzter Beitrag vom 15. Mär 2010
Antwort Antwort
Seite 1 von 2  1 2      
Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#1

Richedit - Fokus auf letzte Zeilen halten(inaktives Fenster)

  Alt 9. Jul 2009, 13:44
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
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#2

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

  Alt 9. Jul 2009, 14:28
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
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#3

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

  Alt 9. Jul 2009, 15:22
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 von Lannes:
Aber wofür scrollen, wenn das Fenster im Hintergrund ist
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).
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#4

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

  Alt 10. Jul 2009, 07:39
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?
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#5

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

  Alt 10. Jul 2009, 08:04
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
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#6

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

  Alt 10. Jul 2009, 09:29
Hallo,
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

Zitat von Viktorii:
Dazu und zum Thema wie die Kommunikation realisiert ist möchte ich hierhin verweisen
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?
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#7

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

  Alt 10. Jul 2009, 10:20
Hilft leider alles nicht.

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

Siehe Beispielprogramm im Anhang.
Angehängte Dateien
Dateityp: rar richedittest_199.rar (214,0 KB, 6x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#8

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

  Alt 10. Jul 2009, 13:00
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?
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#9

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

  Alt 14. Jul 2009, 07:30
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?
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#10

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

  Alt 14. Jul 2009, 08:14
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).
Angehängte Dateien
Dateityp: zip testscroll_488.zip (227,5 KB, 5x aufgerufen)
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:39 Uhr.
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