Avatar billede Slettet bruger
20. august 2007 - 16:46 Der er 1 kommentar og
1 løsning

Slå autoscroll fra i RichEdit

Jeg bruger SelText, SelLength mv. til at tilføje formateret tekst i en RichEdit. Når man scroller op i RichEdit'en efter nogle linjer er blevet tilføjet, scroller den automatisk ned til bunden. Det er irriterende.

Kan man gøre sådan, så RichEdit'en kun scroller, når scrollbarens position er nederst?

Har prøvet at lave min egen variant af RichEdit, men uden held:

private
  procedure CreateParams(var Params: TCreateParams); override;
...
procedure TRichEditWithLinks.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  with Params do
    Style := Style and not es_autovscroll;
end;

Har også prøvet at gemme SelStart inden jeg tilføjer tekst:

  RichEdit.Lines.BeginUpdate;
  try
  OldSelStart := RichEdit.SelStart;
  // tilføj tekst
  RichEdit.SelStart := OldSelStart;
  finally
  RichEdit.Lines.EndUpdate;

Nogen bud?
Avatar billede Slettet bruger
20. august 2007 - 18:09 #1
CreateParams virker nu (ved at sætte den under protected) - men min richedit scroller selvfølgelig ikke hvis scrollbaren er rykket helt ned.
Avatar billede Slettet bruger
20. august 2007 - 19:14 #2
Nu virker det som det skal. Bruger TScrollInfo til at se om scrollbaren er i bunden, og hvis den er, rykker den ned til slutningen.

Her er kilden for dem, som er interesserede

var
  info: TScrollInfo;
begin
  FillChar(info, SizeOf(info), 0);
  with info do
  begin
    cbsize := SizeOf(info);
    fmask := SIF_ALL;
    GetScrollInfo(RichEdit.Handle, SB_VERT, info);
    fmask := fmask or SIF_PAGE;
  end;

//tilføj tekst

if info.nTrackPos = (info.nMax - Integer(info.nPage)) then
  Richedit.perform (em_scrollcaret,0,0);
end;
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester