Avatar billede stalle Nybegynder
14. marts 2001 - 15:10 Der er 2 kommentarer og
3 løsninger

Automatisk scroll i richedit

jeg er ved at lave et lille proggy, som åbner en tekst i en Richedit.

Den finder så frem til linier der starter med noget bestemt og tilføjer noget af den tekst til en listbox.
Nu vil jeg så gerne have det således, at når jeg klikker på listboxen, at den så scroller ned til den linie hvor tekst-strengen er.

Teksten-strengen optræder kun ét sted i selve teksten

Håber mit spørgsmål er til at forstå!

/Stalle
Avatar billede martinlind Nybegynder
15. marts 2001 - 11:32 #1
Du kan vist nok bruge SelStart og SelPos.
Avatar billede stalle Nybegynder
15. marts 2001 - 12:04 #2
Burde det ikke virke!?

Det virker nemlig kun første gang man klikker!
Så går den fint ned til teksten. Anden gang finder den blot teksten, men scroller ikke op/ned til den

Håber du kan hjælpe!

procedure TForm1.ListBox1Click(Sender: TObject);
var
  foundat : Longint;
begin
with richedit1 do begin
foundat := findtext(ListBox1.Items[ListBox1.ItemIndex] ,0,length(richedit1.text),[stMatchCase]);
if foundat <> -1 then begin
selstart := foundat;
setfocus;
selstart := foundat;
sellength := length(ListBox1.Items[ListBox1.ItemIndex]);
end;
end;
end;


/Stalle
Avatar billede martinlind Nybegynder
15. marts 2001 - 12:41 #3
Jo, men prøv dette i stedet, jeg nulstiller lige selstart og Sellen måske det hjælper, hvis ikke så prøv at kigge på borland\'s faq eller www.undu.com, jeg mener at havde set et spørgsmål om dette her et andet sted.

procedure TForm1.ListBox1Click(Sender: TObject);
var
  foundat : Longint;
begin
with richedit1 do begin
foundat := findtext(ListBox1.Items[ListBox1.ItemIndex] ,0,length(richedit1.text),[stMatchCase]);
if foundat <> -1 then begin
setfocus;
selstart := 1;
sellength := 0;
selstart := foundat;
sellength := length(ListBox1.Items[ListBox1.ItemIndex]);
end;
end;
end;
Avatar billede stalle Nybegynder
15. marts 2001 - 13:29 #4
martinlind, har fundet ud af at det er Win2k\'s skyld at den kun kan gøre det én gang.

Med Win98 virker det fint!

/Stalle
Avatar billede martinlind Nybegynder
16. marts 2001 - 17:24 #5
ellers så prøv dette :

procedure CaretCheck (Value : boolean);
begin
  if not Value then
    raise CaretException.CreateFmt (\'Caret Error: %s\', [SysErrorMessage (GetLastError)])
end;

procedure SetPosition (Value : TPoint);
begin
  CaretCheck(SetCaretPos(Value.X, Value.Y))
end;

også var der jo lige point\'ne *S*

/Martin
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