Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.04.2013, 18:33   #1
chex01
Пользователь
 
Аватар для chex01
 
Регистрация: 06.03.2011
Сообщений: 31
Вопрос Раскрашиваем RichEdit и считаем порядковый номер

Доброго времени суток, дорогие мои!

Использую RichEdit и два Edit'а, ну и кнопочка.
Задача:
1.1) Выделить одним цветом текст(Edit1) в RichEdit и другим весь текст слева от этого текста(Edit1).
(Слон, кот, бегемот, кот, Валера, кот.)
1.2) Выделить одним цветом текст(Edit2) в RichEdit и другим весь текст справа от этого текста(Edit2).
(Слон, кот, бегемот, кот, Валера, кот. )
2) Ну и на сладкое: получить порядковый номер выделенного элемента.
(Слон, кот, бегемот, кот, Валера, кот. [Выделенный "кот" - 2ой])

Проблема:
1.1 и 1.2) Мешают системные символы. Если удаляю получается беда. С обычным текстов всё Ok.
2) даже не представляю как можно реализовать. Буду благодарен хотя бы за подсказку.

Что есть:
Код:
procedure TPars_browser.Button_LClick(Sender: TObject);
var
InString: string;
begin
InString := RE.Text;
InString := StringReplace(InString, #$A, '',[rfReplaceAll]);
InString := StringReplace(InString, #$D, '',[rfReplaceAll]);

// выделяем текст СЛЕВА 
  RE.SelStart := 0;
  RE.SelLength := Pos(Edit_BL.Text,InString)-1;
  RE.SelAttributes.Color := clRed;

// выделяем текст
  RE.SelStart := Pos(Edit_BL.Text,InString)-1;
  RE.SelLength := Length(Edit_BL.Text);
  RE.SelAttributes.Style := [fsBold];
end;
chex01 вне форума Ответить с цитированием
Старый 26.04.2013, 10:20   #2
chex01
Пользователь
 
Аватар для chex01
 
Регистрация: 06.03.2011
Сообщений: 31
Лампочка

Чё-то я тупанул страшно. Проблемы и не было...
Цитата:
Сообщение от chex01 Посмотреть сообщение
1.1) Выделить одним цветом текст(Edit1) в RichEdit и другим весь текст слева от этого текста(Edit1).
(Слон, кот, бегемот, кот, Валера, кот.)
1.2) Выделить одним цветом текст(Edit2) в RichEdit и другим весь текст справа от этого текста(Edit2).
(Слон, кот, бегемот, кот, Валера, кот. )
Код:
procedure TPars_browser.Button_LClick(Sender: TObject);
var
SPos: integer;
begin
SPos := RE.SelStart;

// выделяем текст СЛЕВА границы
  RE.SelStart := 0;
  RE.SelLength := SPos;//PosEx(Edit_BL.Text,InString,StartPos)-1;
  RE.SelAttributes.Color := clRed;

// выделяем текст границы
  RE.SelStart := SPos;//PosEx(Edit_BL.Text,InString,StartPos)-1;
  RE.SelLength := Length(Edit_BL.Text);
  RE.SelAttributes.Style := [fsBold];

 RE.SetFocus; // подсвечиваем(выделяем) искомый кусок
end;
Цитата:
Сообщение от chex01 Посмотреть сообщение
2) Ну и на сладкое: получить порядковый номер выделенного элемента.
(Слон, кот, бегемот, кот, Валера, кот. [Выделенный "кот" - 2ой])
Набросал вот такую функцию:
Код:
function NumString(FText, SText: string; LastPos: integer): string;  // FText(что ищем), SText(где ищем), LastPos(до какой позиции)
var
PosText, NumText: integer;
begin
NumText := 0;
PosText := 0;
SText := StringReplace(SText, #$A, '',[rfReplaceAll]); // при выделении текста "#$A" не учитывается
 While true do // бесконечный цикл, выскакиваем по условию
  begin
    PosText := PosEx(FText, SText, PosText + 1); // ищем начиная со следующей позиции после предидущего значения
    if PosText > 0 then inc(NumText) else Break;
    if PosText > LastPos then Break; // если позиция зашла за выделенный
  end;
Result := IntToStr(NumText);
end;
Я использую так:
Код:
 NumText_L.Text := NumString(RE.SelText,RE.Text,RE.SelStart);
Огромное спасибо Всем кто хотел помочь!

Последний раз редактировалось chex01; 26.04.2013 в 11:56.
chex01 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
порядковый номер baks1 Microsoft Office Excel 1 30.04.2012 20:54
Порядковый номер в mysql Furyon PHP 6 03.07.2011 19:39
Порядковый номер записи Yur@ БД в Delphi 4 25.12.2009 08:37
порядковый номер недели skalt12 Общие вопросы Delphi 7 01.12.2009 16:52
Порядковый номер item-a. blackstersl Общие вопросы Delphi 1 05.06.2009 20:55