Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 49, средняя оценка - 4.73
ruslan_smirnov
1 / 1 / 1
Регистрация: 01.03.2011
Сообщений: 89
#1

Поиск слова в RichEdit - C++ Builder

19.05.2011, 03:04. Просмотров 6726. Ответов 41
Метки нет (Все метки)

Как найти слово, например введенное в Edit?
http://www.cyberforum.ru/cpp-builder/thread756324.html
спаисибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2011, 03:04
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Поиск слова в RichEdit (C++ Builder):

Поиск в RichEdit
Здравствуйте! Нужна помощь вот в чем! Организовал поиск по RichEdit'у с...

RichEdit поиск в строке
Поиск в строке RichEdit Есть три RichEdit1,..2,..3. В первом RichEdit1...

поиск слов в RichEdit
int found = 0; found =Form1->RichEdit1->Text.Pos(Form2->Edit1->Text); if...

Цветные слова при нажатии на кнопку (RichEdit)
Не могу розобратса как добавти при нажатии на кнопку слово (например красного...

RichEdit поиск и замена текста
Доброго времени суток. Мне нужно действовать по такому алгоритму: Если в...

41
LK
Заблокирован
06.03.2012, 05:14 #41
mixe, что именно не получается ? мой угадыватель мыслей на расстоянии отключен за злостную неуплату, увы .

Добавлено через 1 минуту
Если вы хотите убрать выделение слова красным, следует повторно выделить это слово и назначить ему
C++
1
DefAttributes
Добавлено через 3 минуты
или так:
C++
1
2
3
4
5
6
    if (RichEdit->SelAttributes->Color==clRed) {
      text[int_pos]='0';
    }
    else {
      RichEdit->SelAttributes->Assign(RichEdit->DefAttributes);
    }
0
mixe
7 / 7 / 1
Регистрация: 14.10.2011
Сообщений: 118
06.03.2012, 08:58 #42
Выделять получаеться, все нормально, но мне нужно убирать это выделение посли нахождения нужного слова или фразы

Добавлено через 8 минут
я и так попробовал
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
AnsiString text=RichEdit->Text;
//AnsiString word = "int";
AnsiString word = Edit1->Text;
//
while(text.Pos(word)) {
  int_pos = text.Pos(word);
  RichEdit->SelStart=int_pos-1;
  RichEdit->SelLength=word.Length();
  RichEdit->SelAttributes->Color=clRed;
  text[int_pos]='0';
  RichEdit->SelStart = int_pos -1;
  RichEdit->SelAttributes->Assign(RichEdit->DefAttributes);
  if (RichEdit->SelAttributes->Color==clRed) {
    text[int_pos]='0';
  }
  else {
    RichEdit->SelAttributes->Assign(RichEdit->DefAttributes);
  }
}
результата нет
и так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
AnsiString text=RichEdit->Text;
//AnsiString word = "int";
AnsiString word = Edit1->Text;
//
while(text.Pos(word)) {
  int_pos = text.Pos(word);
  RichEdit->SelStart=int_pos-1;
  RichEdit->SelLength=word.Length();
  RichEdit->SelAttributes->Color=clRed;
  text[int_pos]='0';
  RichEdit->SelStart = int_pos -1;
  if (RichEdit->SelAttributes->Color==clRed) {
    text[int_pos]='0';
  }
  else {
    RichEdit->SelAttributes->Assign(RichEdit->DefAttributes);
  }
 }
это вобще зависает, так что я не знаю

Добавлено через 1 минуту
нет, вот так виснет
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
AnsiString text=RichEdit->Text;
//AnsiString word = "int";
AnsiString word = Edit1->Text;
//
while(text.Pos(word)) {
  int_pos = text.Pos(word);
  RichEdit->SelStart=int_pos-1;
  RichEdit->SelLength=word.Length();
  if (RichEdit->SelAttributes->Color==clRed) {
     text[int_pos]='0';
  }
  else {
    RichEdit->SelAttributes->Assign(RichEdit->DefAttributes);
  }
}
Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int int_pos;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  AnsiString text=RichEdit->Text;
  //AnsiString word = "int";
  AnsiString word = Edit1->Text;
  //
  while(text.Pos(word)) {
    int_pos = text.Pos(word);
    RichEdit->SelStart=int_pos-1;
    RichEdit->SelLength=word.Length();
    if (RichEdit->SelAttributes->Color==clRed) {
      text[int_pos]='0';
    }
    else {
      RichEdit->SelAttributes->Assign(RichEdit->DefAttributes);
    }
  }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  RichEdit->HideSelection = false;
}
весь код
0
06.03.2012, 08:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.03.2012, 08:58
Привет! Вот еще темы с решениями:

Как убрать из RichEdit все слова нечетной длины?
Есть два ричэдита.в один я считываю с файла, во второй ричэдит мне нужно...

RichEdit и FindText, поиск текста в обратном направлении
Как искать текст вперед я разобрался: if...

Из RichEdit в RichEdit без потери форматирования
Есть RichEdit1 с форматированным текстом(цвет, стиль и тп.) нужно передать этот...

Поиск слова
Как найти мемо отдельное слово ,есть например строка &quot;Просмотр книги&quot; как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
42
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru