Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Richedit scrollen, aber ohne Fokus (https://www.delphipraxis.net/171964-richedit-scrollen-aber-ohne-fokus.html)

himitsu 4. Dez 2012 16:46


Richedit scrollen, aber ohne Fokus
 
n'abend die Damen und Herren,

kann man denn wirklich nicht soein besch** TRichEdit scrollen, ohne daß es Fokus besitzt?

WM_VSCROLL oder EM_SCROLLCARET funktionieren nur, wenn das RichEdit den Fokus hat.


Die Lösung: Fokus merken, Richedit fokusieren, scrollen und Fokus zurücksetzen ist voll für'n A**.

Bummi 4. Dez 2012 16:54

AW: Rechedit scrollen, aber ohne Fokus
 
den kennst Du?
http://fgaillard.com/2010/11/richedi...olling-strike/

himitsu 4. Dez 2012 17:16

AW: Rechedit scrollen, aber ohne Fokus
 
Nee, kannte ich nicht, aber funktioniert auch nicht :(

Delphi-Quellcode:
    log.SelStart := log.Perform(EM_LINEINDEX, log.Lines.Count, 0);
    B := log.HideSelection;
    try
      log.HideSelection := False;
      log.Perform(EM_SCROLLCARET, 0, 0);
    finally
      log.HideSelection := True;//B;
    end;
Hat das Ding den Fokus, dann geht's, aber Ohne geht's nicht.
(egal ob der Fokus in der Form oder in einer anderen Form liegt)

p80286 4. Dez 2012 17:20

AW: Rechedit scrollen, aber ohne Fokus
 
Blöde Frage, wo steht der Cursor?
Und die andere Möglichkeit mit dem Scroll bis zum Ende?

Gruß
K-H

Dalai 4. Dez 2012 17:22

AW: Rechedit scrollen, aber ohne Fokus
 
Für ein TMemo verwende ich EM_LINESCROLL (im TForm.OnMouseWheel). Keine Ahnung, ob das auch bei TRichEdit funktioniert.

MfG Dalai

himitsu 4. Dez 2012 17:25

AW: Rechedit scrollen, aber ohne Fokus
 
Zitat:

Zitat von p80286 (Beitrag 1194320)
Blöde Frage, wo steht der Cursor?

Am Anfang der letzten Zeile :zwinker:
Zitat:

Delphi-Quellcode:
log.SelStart := log.Perform(EM_LINEINDEX, log.Lines.Count, 0);


Wie gesagt, egal welche Variante ich nutze, also WM_VSCROLL oder EM_SCROLLCARET,
es funktioniert immer nur, wenn der Fokus beim Richedit liegt, aber da ist er nunmal nicht.

[add]
Und EM_LINESCROLL funktioniert auch nicht.

Perform und SendMessage machen auch keinen Unterschied.



Praktisch dürften jetzt wohl auch alle "zwei RichEdits synchron scrollen"-Codes nicht mehr funktionieren. :gruebel:
(und alle Thread dazu, welche ich fand, waren auch mindestens 5 Jahre alt ... also von da, wo es noch ging)

himitsu 5. Dez 2012 13:26

AW: Richedit scrollen, aber ohne Fokus
 
Es gab ein paar Probleme mit einer unit ... die wurde nicht mit kompiliert :wall:
Nja, aktuell sieht es so aus. (weiter testen werd' ich das jetzt aber nicht)

geht nicht:
EM_SCROLLCARET
EM_SCROLLCARET + HideSelection-Trick

geht:
WM_VSCROLL + SB_BOTTOM

ungetestet/weiß nicht:
EM_LINESCROLL
WM_VSCROLL + SB_ENDSCROLL
WM_VSCROLL + SB_LINEDOWN
WM_VSCROLL + SB_PAGEDOWN
GetScrollRange + SetScrollPos(Max)

user0815 5. Dez 2012 14:53

AW: Richedit scrollen, aber ohne Fokus
 
Delphi-Quellcode:
procedure TFormMain.Timer1Timer(Sender: TObject);
begin
  RichEdit1.Lines.BeginUpdate;
  RichEdit1.Lines.Append(FormatDateTime('hh:nn:ss:zzz', Now));
  RichEdit1.Perform(WM_VSCROLL, SB_BOTTOM, 0);
  RichEdit1.Lines.EndUpdate;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:33 Uhr.

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf