Zaznaczanie tekstu w RichEdit

0

Jak to uzupełnić?

  1. Zaznaczenie całego tekstu
    with RichEdit1 do
    begin
    SelectAll;
    SetFocus;
    end;

  2. Wybranego wiersza
    with RichEdit1 do
    begin
    SelStart := Perform(EM_LINEINDEX,wiersz,0);
    SelLength:=Length(Lines[wiersz]);
    SetFocus;
    end;

  3. Wybranego paragraph-u???????????????????

0

a_s_f , jozkanowi chodzilo o punkt 3 jak rozumiem, czyli o paragraf a nie o zanzaczeie wszytskiego bo to wie.

0

OK.Moj błąd.Sorki [wstyd]

0

PS konkretnie chodzi mi o coś takiego:
procedure ZaznaczPraragraph(wiersz:Integer);//któryś z wierszy akapitu
begin
with RichEdit1 do
begin
....???
end;
end;

0

chcesz tylko 1 wiersz?
to o prostu pobierz [code]caretY[/code] i licz [code]selend[/code] (dodawaj np co 1) do momentu az zmieni sie [code]caretY[/code].
wtedy zaprzestan dodawac i dajesz selstart(position na caretY) i selend(to co dodales)

(ale zamotalem :d)

moze ten kodzik Cie wspomoze jakos:

procedure TForm1.UpdateCursorPos;
var
  CharPos: TPoint;
begin
begin
  CharPos.Y := SendMessage(richedit1.Handle, EM_EXLINEFROMCHAR, 0,
    richedit1.SelStart);
  CharPos.X := (richedit1.SelStart -
    SendMessage(richedit1.Handle, EM_LINEINDEX, CharPos.Y, 0));
  Inc(CharPos.Y);
  Inc(CharPos.X);
  linia:=charpos.Y;
  kolumna:=charpos.X;
  StatusBar1.Panels[0].Text := Format(sColRowInfo, [CharPos.Y, CharPos.X]);
end;
end;
0

Nie wiem czy pojąłem o co ci chodzi ale problem w tym, że nowa linia nie oznacza koniecznie nowego paragraphu - dowcip polega jak mi się zdaje na wskazaniu pierszej i ostatniej linii paragraphu. Wiersz w proc ZaznaczParagraph(wiersz:Integer) jest którąś linią paragraphu, możemy łatwo sprawdzić która to linia RichEdita, ale która to linia pragraphu? a idąc do linii następnej skąd mam wiedzieć że to linia tego czy następnego paragraphu? Jak tu złapać selstart i selend?

0

Chwyciłem się takiego sposobu (ale to chiba ostatni krzyk rozpaczy):

  1. Zapisuję RichEdita w pliku RTF
  2. Czytam plik jako TXT
  3. Usuwam znaki formatujące pomijając \par
  4. Znajduję linię textu z RichEdita w "oczyszczonym" TXT i sprawdzam czy znajduje się przed \par - jeżeli tak to jest ona w paragraphie
    To działa tylko jak na to patrzę to ..........uśmiać się można
0

Heh , jozkan , ja Ciebie rozumiem od samego początku i sam ciekaw jestem czy ktoś to wie i w końcu podpowie. Ale jesli juz chwytasz się tak rozpaczliwiego sposobu, to chyba lepiej pokombinowac z property text (ewentualnie przepisac zawartosc Richedita do Tstringlist zeby zgubic formatowanie) i zliczac entery. Co Ty na to?

0

Niestety w RichEdit nie można określić paragraphów, jak sprawdzimy formatowanie w RTF, to każde przejście do następnego wiersza kwitowane jest \par. Sorki za zamieszanie - pracuję na RxRichEdit i nie zauważyłem różnicy w formatowaniu paragraphów, a jest istotna, bo RxRichEdit opisuje paragraph jak na rtf przystało:
\pard
jakaś linia
\line jakaś linia tego paragraphu
........
\par (koniec paragraphu)
w RxRichEdit DblClick na lewym marginesie zaznacza cały paragraph i chcę to uzyskać z poziomu kodu. Gapię się na źródło i nie mogę tego znaleźć, może jakiś fachowiec od Windows API coś by pomógł?
PS.No cóż trzeba spojrzeć prawdzie w oczy - kiedyś mówili o mnie zdolny, ale leń - teraz proporcje się odwróciły, no i co robić kiedy brakuje rozumku? (później mi przejdzie)

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