![]() |
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 |
Re: Memo scrollen
Delphi-Quellcode:
(Snip Delphi Hilfe)
SendMessage(Memo.Handle,WM_VSCROLL,SB_LINEDOWN,0)
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 |
Re: Memo scrollen
danke..
|
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 |
AW: Memo scrollen
kleiner abendlicher push.
|
AW: Memo scrollen
Vielleicht hilft das hier, sofern ich die Frage richtig verstanden habe:
![]() |
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:
Leider macht es aber genau gar nichts. :(with Log_Output do begin SelStart := Perform(EM_LINEINDEX, Error_Codes.ItemIndex, 0); Perform(EM_SCROLLCARET, 0, 0); Invalidate; end; |
AW: Memo scrollen
Und wenn Du Invalidate durch SetFocus ersetzt? Bei mir hier (D2007) hat das in einem kleinen Testprojekt wunderbar funktioniert.
|
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.
|
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.
|
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. |
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 ![]() 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. |
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:
kein code mehr ausgeführt werden der irgendwas verändern kann.SelStart := Perform(EM_LINEINDEX, StrToInt(scroll_input.text), 0); Perform(EM_SCROLLCARET, 0, 0); Invalidate; |
AW: Memo scrollen
ok interessante sache:
Delphi-Quellcode:
gibt operation completed successfully ausLog_Form.Caption := SysErrorMessage(GetLastError()); SelStart := Error_codes.ItemIndex; Perform(EM_SCROLLCARET, 0, 0); invalidate;
Delphi-Quellcode:
gibt den error "Access denied" aus. Woran könnte das liegen? im onselection change wird nichts geändert. SelStart := Error_codes.ItemIndex; Log_Form.Caption := SysErrorMessage(GetLastError()); Perform(EM_SCROLLCARET, 0, 0); invalidate; lg |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz