FindDialog i RichEdit

0

Witam, mam taki problem, chodzi o to, że jak mam dłuższy text i nie mieści się w RichEdit i jak dam na szukaj to znajduje mi te wyrażenia ale nie chce schodzić niżej scrollbare automatycznie, trzeba to zrobić ręcznie, ma ktoś jakiś pomysł jak to można wyśrodkować z góry thx za pomoc a o to jaki mam kod na wyszukiwanie :D

procedure TForm1.FindDialog1Find(Sender: TObject);
var
Znalezione: LongInt;
Start, Koniec: Integer;
begin
with RichEdit1 do
  begin
    if SelLength <> 0 then
       Start := SelStart + SelLength
    else
      Start := 0;
    Koniec := Length(text) - Start;
    Znalezione := FindText(FindDialog1.FindText, Start, Koniec, [stMatchCase]);
    if Znalezione <> -1 then
      Begin
        SetFocus;
        SelStart := Znalezione;
        SelLength := Length(FindDialog1.FindText);
      end;
  end;
end;

Z góry thx

Może ktoś, coś napisać na ten temat? Czy to za trudne i nikt nie ma żadnych pomysłów?? Pls dajcie jakiś znak :D

0

Nie wiem jak to zrobić przez FindDialog ale w sumie bardzo łatwo można to zrobić ręcznie - czyli samemu napisać sobie coś na krztałt Finddialog - poszukaj poczytaj i na pewno znajdziesz - to naprawdę nie jest bardzo skomplikowane

Szukaj np w postach o kolorowaniu składni tam na pewno znajdziesz coś co się zainteresuje

0

No właśnie mi nie chodzi po przez FindDialog, tylk ochodzi mi normlanie, jakiej methody trzeba użyć w RichEdit a by to zadziałało, nie wiem jak dlatego pytam, więc prosiłbym o jakoś odp jak :> Albo jak mam tego szukać, z góry thx za info

0

Masz tu ale przez finialog:

var  poczatek : integer;
procedure TOkno.Znajdz1Click(Sender: TObject);
begin
odWyszukaj.Execute; // u mnie tak sie nazywa findialog
poczatek:=0;
end;

 Procedure Znajdz(Edytor : TSynEdit; Wzorzec : AnsiString; var Poczatek :Integer); // u mnie Edytor to syn edit pewnie moze byc i richedit
 var
  buf : PChar;
  pozycja : integer;
 begin
   buf:= @Edytor.lines.Text[Poczatek +1];
   pozycja:= AnsiPos(Wzorzec, buf);
   Poczatek:= Poczatek + pozycja;
     if (pozycja > 0) then
      begin
       Edytor.SelStart:= Poczatek - 1;
       Edytor.SelLength:= Length(wzorzec);

       end;
 end;


procedure TOkno.odWyszukajFind(Sender: TObject);
begin
Znajdz(Edytor, odWyszukaj.FindText, poczatek);
end;
0
Kanji napisał(a)

No właśnie mi nie chodzi po przez FindDialog, tylk ochodzi mi normlanie, jakiej methody trzeba użyć w RichEdit a by to zadziałało, nie wiem jak dlatego pytam, więc prosiłbym o jakoś odp jak :> Albo jak mam tego szukać, z góry thx za info

No nie przesadzaj....
Sprawdzałeś to co ci napisałem ?? chyba nie :[

Szukaj np w postach o kolorowaniu składni tam na pewno znajdziesz coś co się zainteresuje

tam są całe kody tyle że zamiast podświetlać tekst np zmieniają jego kolor....
Więc co tobie jest jeszcze potrzebne? gotowiec?

0

SPoko, no własnie podświetla mi text, tylko jęsli mam text na powiedzmy 3 storony to zeby zejść niżej to muszę użyć scrola, i chodzi mi o to że jak szukam słówka, to mi się nie przewija text tylko widzę go dalej tam gdzie był mimo że zaznaczone słówko jest powiedzmy na 2 w połowie a ja jestem dalej na początki pierwszej. CHodzi mi o to żeby się przewijał text jak słówka nie widać, i jak to można zrobić.

Btw. tam gdzie mówiłeś to patrzyłem, ale nic tam nie ma(a jak jest to nie potrafiłem znaleźć :/)

0

Słuchaj... Nie lubie się powtarzać więc piszę to po raz ostatni...

Problem z przewijaniem masz tylko wtedy kiedy używasz FindDialog bo to ten właśnie komponent ma problemy z przewijaniem zawartości [!!!]
Jeżeli samodzielnie przeszukujesz tablicę TStrings z RichEdit no to tego problemu NIE MAAASZ [!!!] [!!!] [!!!]
Dlatego ostatni raz mówię ci poszukaj tam gdzie napisałem.... a jak nie znajdziesz to już lepiej nic nie pisz bo to zaczyna być wkurzające [!!!] :[

0
irek napisał(a)

Słuchaj... Nie lubie się powtarzać więc piszę to po raz ostatni...

Problem z przewijaniem masz tylko wtedy kiedy używasz FindDialog bo to ten właśnie komponent ma problemy z przewijaniem zawartości [!!!]
Jeżeli samodzielnie przeszukujesz tablicę TStrings z RichEdit no to tego problemu NIE MAAASZ [!!!] [!!!] [!!!]
Dlatego ostatni raz mówię ci poszukaj tam gdzie napisałem.... a jak nie znajdziesz to już lepiej nic nie pisz bo to zaczyna być wkurzające [!!!] :[
To nie jest prawda co piszesz!!! mój wyżej napisany post wyszukuje z wykorzystaniem findialogu i przewija. Można także napisać wyszukiwanie bez findialogu. Ale to jest oddzielny temat. :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1