Delphi-PRAXiS

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 TRichEdit und scrollen (https://www.delphipraxis.net/146409-trichedit-und-scrollen.html)

Schwedenbitter 19. Jan 2010 12:38


TRichEdit und scrollen
 
Hallo,

das Thema mit dem Scrollen in einem TRichEdit wurde im Forum schon mehrfach behandelt. Dennoch stehe ich vor einem Problem, dass ich bislang nicht lösen konnte:

Ich habe auf meinem Form ein TRichEdit. Für dieses ist
Delphi-Quellcode:
Anchors:=[akLeft, akRight, akTop, akBottom];
gesetz. Wenn ich mein Form Maximiere, dann vergrößert sich entsprechend auch das TRichEdit. Weiterhin wird der Text nicht vom Benutzer, sondern ausschließlich vom Programm hinzugefügt und danach immer auf die letzte Zeile gescrollt.

Bin ich auf der letzten Zeile und maximiere das Fenster ist alles OK. Wenn ich es dann aber wieder minimiere, dann steht der Text irgendwo und ich bin eben nicht mehr auf der letzten Zeile. Ich habe jetzt versucht, das Problem so zu lösen:
Delphi-Quellcode:
Procedure TChat.WMSysCommand(Var Msg: TMessage);
Begin
  Case Msg.WParam Of
    SC_Minimize   : Hide;                               // Minimieren-Button
    SC_Maximize   : Begin
                    WindowState:=wsMaximized;
                    Log.Perform(EM_SCROLLCARET, 0, 0); // auf letzte Zeile scrollen
//                  SendMessage(Log.Handle,           // Auf letzte Zeile scrollen
//                    WM_VScroll, SB_Bottom, 0);
                  End;
    SC_Close  : Hide;                               // Schließen-Button
  Else                                                // alles andere
    Inherited;                                        // Botschafen durchleiten
  End;
End;
Beide Methoden, mit denen ich sonst immer den Text an das Ende scrolle, versagen hier. Was mache ich verkehrt?

Gruß, Alex

s.h.a.r.k 19. Jan 2010 12:42

Re: TRichEdit und scrollen
 
Hast du nicht was vergessen? :zwinker:

Schwedenbitter 19. Jan 2010 12:50

Re: TRichEdit und scrollen
 
Zitat:

Zitat von s.h.a.r.k
Hast du nicht was vergessen? :zwinker:

Ja! Siehe oben. Ich hatte das erste Mal zu zeitig auf Enter gedrückt.

Alles in allem ein Schnellschuß: Nachdem ich nun ca. 3 h über das Problem grüble, kam mir beim schreiben der Frage und Umformatieren des Codes die Idee - So scheint es zu klappen:
Delphi-Quellcode:
...
    SC_Maximize,
    SC_Restore : Begin
                   Inherited;
                   Log.Perform(EM_SCROLLCARET, 0, 0);// auf letzte Zeile scrollen
                 End;
...
Spricht etwas gegen Inherited?

Gruß, Alex

s.h.a.r.k 19. Jan 2010 12:52

Re: TRichEdit und scrollen
 
Was passiert, wenn du das OnResize-Event des Formulars nutzt? Ich denke, dass es ein Problem der Reihenfolge der Ausführen ist, d.h. dass du zuerst scrollst und dann die Komponente weiß, dass Sie kleiner geworden ist.

Schwedenbitter 19. Jan 2010 12:58

Re: TRichEdit und scrollen
 
Danke für den Tip!

Ich Dummkopft bin immer von den 3 Buttons oben ausgegangen und damit nicht auf die Idee gekommen, dass es beim Unmaximieren zwar augenscheinlich derselbe Button ist. Es ist aber eine andere Message.

Zitat:

Zitat von Schwedenbitter
Spricht etwas gegen Inherited?

oder muss/sollte ich dann besser wsNormal benutzen? Warum merkt sich das TRichEdit das eigentlich nicht?

Gruß, Alex


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:20 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