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 Memo scrollen (https://www.delphipraxis.net/94530-memo-scrollen.html)

Relicted 22. Jun 2007 18:47


Memo scrollen
 
Huhu!

Habe ne dringliche frage:

ich möchte ein memo hoch und runter scrollen... so step by step... zeile für zeile quasi. nicht nach ganz unten oder ganz oben.

leider habe ich noch nix passendes gefunden und mir rennt gerade etwas die zeit davon. wäre schön wenn ihr mir helfen könntet.

Gruß
Reli

arnold mueller 22. Jun 2007 19:26

Re: Memo scrollen
 
Delphi-Quellcode:
   SendMessage(Memo.Handle,WM_VSCROLL,SB_LINEDOWN,0)
(Snip Delphi Hilfe)

SB_BOTTOM Scrolls to the lower right.
SB_ENDSCROLL Ends scroll.
SB_LINEDOWN Scrolls one line down.
SB_LINEUP Scrolls one line up.
SB_PAGEDOWN Scrolls one page down.
SB_PAGEUP Scrolls one page up.
SB_THUMBPOSITION Scrolls to the absolute position. The current position is specified by the nPos parameter.
SB_THUMBTRACK Drags scroll box to the specified position. The current position is specified by the nPos parameter.
SB_TOP Scrolls to the upper left.


-
Arno

Relicted 22. Jun 2007 19:30

Re: Memo scrollen
 
danke..

Nicodius 30. Sep 2011 09:40

AW: Memo scrollen
 
ich sehe dass das topic schon ewig alt ist, aber würde da gerne anknüpfen.
Ich habe in einer Listbox gleich viele einträge wie Zeilen in einem Richedit.
Nun würde ich gerne bei einem klick auf ein listbox item genau zu jener zeile scrollen die selektiert ist, oder so dass sie sich dann in der mitte befindet.

SendMessage(Log_Output.Handle,WM_VSCROLL,SB_THUMBP OSITION ,xrow) wobei xrow der Itemindex der listbox ist, hat leidern icht funktioniert.

Gibt es einen schöneren weg als mit einer schleife bis zu der zeile rauf, runter zu scrollen, zeile für zeile?

lg Nico

Nicodius 1. Okt 2011 23:16

AW: Memo scrollen
 
kleiner abendlicher push.

DeddyH 2. Okt 2011 11:40

AW: Memo scrollen
 
Vielleicht hilft das hier, sofern ich die Frage richtig verstanden habe: http://www.swissdelphicenter.ch/de/showcode.php?id=439

Nicodius 4. Okt 2011 07:38

AW: Memo scrollen
 
Vielen Dank für den Link, leider hat es bei mir wieder nicht funktioniert.
Ich habe folgenden Code(in meinem Richedit(Log_Output) befinden sich nur mehr zeilen mit error codes, in einer Listbox(Error_Codes) die zugehörigen Errorcodes, also exakt gleich viele items):

Delphi-Quellcode:
   
with Log_Output do
  begin
    SelStart := Perform(EM_LINEINDEX, Error_Codes.ItemIndex, 0);
    Perform(EM_SCROLLCARET, 0, 0);
    Invalidate;
  end;
Leider macht es aber genau gar nichts. :(

DeddyH 4. Okt 2011 07:52

AW: Memo scrollen
 
Und wenn Du Invalidate durch SetFocus ersetzt? Bei mir hier (D2007) hat das in einem kleinen Testprojekt wunderbar funktioniert.

Nicodius 4. Okt 2011 08:27

AW: Memo scrollen
 
Seltsam, habe delphi 7, aber es springt einfach nicht in die Zeile. es kommt nach diesem Sprung auch kein Code mehr, daher finde ich das jetzt wirklich verwunderlich.

DeddyH 4. Okt 2011 08:30

AW: Memo scrollen
 
Und ohne das with? Nicht, dass Delphi hier durcheinander gerät. Delphi 7 kann ich erst heute Abend ausprobieren, da ich das nur zu Hause installiert habe.

Nicodius 4. Okt 2011 08:53

AW: Memo scrollen
 
Leider auch nicht, würde mich freuen wenn du das bei dir probieren könntest.

hab jetzt testweise es aus der Onclick von meiner Listbox rausgenommen und probiert ob ich per button in eine gewisse zeile komme, aber auch das funktioniert nicht. Es stimmt also entweder der code nicht den ich verwende oder irgendwas wird da ordentlich durcheinander gehaun.

himitsu 4. Okt 2011 09:08

AW: Memo scrollen
 
Kann auch sein, daß es bei dir wirklich nicht geht.
Ich weiß jetzt nicht welche Richeditversion D7 und D2007 verwenden.

Schau mal bei MSDN-Library durchsuchenEM_LINEINDEX in Remarks, ob es dort was zu finden gibt.



Mit D2009 wurd letzmalig auf eine neue Version umgestellt, mit dem ergebnis, daß einiges nicht mehr richtig funktionierte.
Vielleicht gab's zwischen 7 und 2007 auch schonmal eine Umstellung.


Stell doch einfach mal ein kleines Testprogram zusammen, welches wir dann neu kompilieren und schauen ob's bei uns geht.

Nicodius 4. Okt 2011 13:27

AW: Memo scrollen
 
in der Tat mit meinem testprogramm hat es geklappt.
dann muss ich wohl weiter fehler suchen, aber ich habe wirklich keine ahnung was da bei mir reinfunkt, es sollte nach den Zeilen

Delphi-Quellcode:
   
    SelStart := Perform(EM_LINEINDEX, StrToInt(scroll_input.text), 0);
    Perform(EM_SCROLLCARET, 0, 0);
    Invalidate;
kein code mehr ausgeführt werden der irgendwas verändern kann.

Nicodius 4. Okt 2011 14:06

AW: Memo scrollen
 
ok interessante sache:

Delphi-Quellcode:
     
  Log_Form.Caption := SysErrorMessage(GetLastError());
  SelStart := Error_codes.ItemIndex;
  Perform(EM_SCROLLCARET, 0, 0);
  invalidate;
gibt operation completed successfully aus

Delphi-Quellcode:
     
  SelStart := Error_codes.ItemIndex;
  Log_Form.Caption := SysErrorMessage(GetLastError());
  Perform(EM_SCROLLCARET, 0, 0);
  invalidate;
gibt den error "Access denied" aus. Woran könnte das liegen? im onselection change wird nichts geändert.

lg


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