Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   TMemo automatisch scrollen (https://www.delphipraxis.net/183988-tmemo-automatisch-scrollen.html)

elmar.faber 18. Feb 2015 10:35

TMemo automatisch scrollen
 
Hallo,

in einem XE3 Projekt scrolle ich automatisch an das untere Ende in einem Memo Feld:

LogMemo.VScrollBar.Value := LogMemo.VScrollBar.Max;

Unter XE7 ist aber VScrollbar Protected, wie scrolle ich hier automatisch ans Ende???:?:?:?

Viele Grüße

Der schöne Günther 18. Feb 2015 10:47

AW: TMemo automatisch scrollen
 
Delphi-Quellcode:
LogMemo.GoToTextEnd();
?

elmar.faber 18. Feb 2015 12:16

AW: TMemo automatisch scrollen
 
Damit setzt ich den Cursor zwar ans Ende aber der sichtbare Bereich verändert sich leider nicht...

BadenPower 18. Feb 2015 12:22

AW: TMemo automatisch scrollen
 
Zitat:

Zitat von elmar.faber (Beitrag 1290326)
Unter XE7 ist aber VScrollbar Protected, wie scrolle ich hier automatisch ans Ende???:?:?:?

Wenn VScrollbar nur Protected ist, dann mach sie doch mit einer Helperklasse von TMemo zugreifbar.

baumina 18. Feb 2015 12:24

AW: TMemo automatisch scrollen
 
Ich mach das so:

Delphi-Quellcode:
        mem_input.SetFocus;
        mem_input.CaretPos := Point(0,Zeile);
        SendMessage(mem_input.Handle, EM_SCROLLCARET, 0, Zeile);

Der schöne Günther 18. Feb 2015 12:25

AW: TMemo automatisch scrollen
 
Zitat:

Zitat von elmar.faber (Beitrag 1290344)
Damit setzt ich den Cursor zwar ans Ende aber der sichtbare Bereich verändert sich leider nicht...

Sicher? Bei mir springt er immer ans Ende des Textes sodass die letzten Zeichen sichtbar sind. Egal ob WordWrap an oder aus. Getestet auf Windows, XE7.

Zitat:

Zitat von baumina (Beitrag 1290347)
Ich mach das so:

Damit werden wir wohl nicht weiterkommen, denn es geht um FireMonkey, nicht um die VCL.

baumina 18. Feb 2015 12:32

AW: TMemo automatisch scrollen
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1290349)
Damit werden wir wohl nicht weiterkommen, denn es geht um FireMonkey, nicht um die VCL.

Ist mir glatt entgangen. :oops:

elmar.faber 19. Feb 2015 11:27

AW: TMemo automatisch scrollen
 
So der Tip mit der Helperklasse hat mir die Lösung gebracht:

Delphi-Quellcode:
unit MemoHelperU;

interface

Uses System.Classes, FMX.Memo, FMX.Layouts;

type
  TMemoHelper = class helper for FMX.Memo.TMemo
  private

  published
    procedure AutoScroll;

  end;

implementation

procedure TMemoHelper.AutoScroll;
Begin
  if Self.VScrollBar = nil then
    ApplyStyleLookup;

  if Self.VScrollBar <> nil then Begin
    Self.GoToTextEnd;
    Self.VScrollBar.Value := Self.VScrollBar.Max;
    Self.Repaint;
  End;
End;
Dann erfolgt der Aufruf im Programmcode nur noch mit

LogMemo.AutoScroll

Vielen Dank für die Hilfe!

Der schöne Günther 19. Feb 2015 11:34

AW: TMemo automatisch scrollen
 
Ich wundere mich trotzdem immer noch- Er verschiebt bei dir wirklich den sichtbaren Bereich bei
Delphi-Quellcode:
GoToTextEnd()
nicht? Ich nutze XE7 ohne Update 1 und er tut es...


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