Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.52/27: Рейтинг темы: голосов - 27, средняя оценка - 4.52
0 / 0 / 0
Регистрация: 08.05.2012
Сообщений: 31
1

Выделение предложений в RichEdit C++ Builder

10.05.2012, 16:22. Показов 4888. Ответов 26
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В форме по нажатию любой клавиши по очереди выделяются предложения в тексте элемента RichEdit1. Разделителем является символ '.' (точка). Как сделать так, чтобы выделялись предложения, заканчивающиеся на '!' и '?' ?
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
int start=0,stop=0;
void __fastcall TForm1::RichEdit1KeyPress(TObject *Sender, char &Key)
{
        if(Key >= '0' && Key <= '9') Key = '\0';
        if(Key >= 'a' && Key <= 'z') Key = '\0';
        if(Key >= 'A' && Key <= 'Z') Key = '\0';
        if(Key >= '.' || Key <= ',') Key = '\0';
        RichEdit1->SelectAll();
 
        RichEdit1->SelAttributes->Style = RichEdit1->SelAttributes->Style>>fsBold;
        RichEdit1->SelAttributes->Color = RichEdit1->Font->Color;
 
        TSearchTypes Stype;
        Stype = Stype << stMatchCase;
 
        stop = RichEdit1->FindText(".",start,RichEdit1->Text.Length(),Stype);
 
        RichEdit1->SelStart =  start;
        RichEdit1->SelLength = stop-start+1;
 
        start = stop + 1;
 
        RichEdit1->SelAttributes->Style = RichEdit1->SelAttributes->Style<<fsBold;
        RichEdit1->SelAttributes->Color=clRed;
}
Добавлено через 17 секунд
людииииии на завтра надо, спаситеееее

Добавлено через 15 минут
эээээээээй ну помогииитеееееее
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.05.2012, 16:22
Ответы с готовыми решениями:

Выделение предложений в RichEdit
На форме имеется элемент RichEdit1, в котором находится многострочный текст. По нажатию любой...

RichEdit выделение текста
Есть RichEdit в него записан текст, необходимо выделить некоторые слова которые довлетворяют...

RichEdit выделение текста
У меня в RichEdit загружается форматированный текст из файлов. В этом тексте присутствуют некоторые...

RichEdit выделение выбранной строки
Здравствуйте, такой вопрос : Как выделить выбранную строку? В RichEdit занесен текст текст0...

26
512 / 454 / 119
Регистрация: 17.02.2012
Сообщений: 1,032
Записей в блоге: 1
10.05.2012, 18:42 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от Coul92 Посмотреть сообщение
твой код пропускает знак вопроса.

Не по теме:

дописать еще одно условие на знак ? не судьба, или за вас все делать?

используй код от nick42, он более красивый
0
0 / 0 / 0
Регистрация: 08.05.2012
Сообщений: 31
10.05.2012, 19:07  [ТС] 22
Спасибо большое, помогли очень!

Добавлено через 21 минуту
еще вопросик, а зачем вот это?)
C++
1
//if(Key != VK_UP) Key = '\0'; //  äëÿ ïîíòà
и почему, если закомментить эту строку, то слышно стандартный звук при каждом нажатии на клавишу, а если не комментить её, то стандартный звук не слышно?)
0
Практикантроп
4826 / 2718 / 526
Регистрация: 23.09.2011
Сообщений: 5,777
10.05.2012, 20:33 23
Цитата Сообщение от Coul92 Посмотреть сообщение
а зачем вот это?)
- я ж написал: для понта (а вдруг требуется, чтоб по нажатию какой-нибудь козырной клавиши, она не отфильтровывалась)... . Это же фильтр-преобразователь: нажатие любой клавиши преобразуется в отсутствие нажатия (\0 - это нулевой код; клавиша как бы не нажималась). Если это преобразование отменить (закомментировать), то код Key проходит дальше, и если бы в опциях не стояло readonly, то соотв. символ появился бы в зоне курсора на поле RitchEdit.
0
0 / 0 / 0
Регистрация: 08.05.2012
Сообщений: 31
10.05.2012, 21:30  [ТС] 24
nick42, ну я вроде написал целую кучу условий для этого еще в старом коде) поэтому это меня ввело в замешательство) да еще и клацание по нажатию клавиши)
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
10.05.2012, 22:35 25
C++
1
2
3
4
5
stop1 = RichEdit1->FindText(".",start,RichEdit1->Text.Length(),Stype);
stop2 = RichEdit1->FindText("!",start,RichEdit1->Text.Length(),Stype);
stop3 = RichEdit1->FindText("?",start,RichEdit1->Text.Length(),Stype);
 
stop = min(stop1,stop2,stop3);
0
0 / 0 / 0
Регистрация: 08.05.2012
Сообщений: 31
10.05.2012, 22:46  [ТС] 26
Avazart, сколько идей) а я не допёр ни одну)
0
0 / 0 / 0
Регистрация: 23.04.2012
Сообщений: 11
12.05.2012, 19:15 27
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#pragma option push -w-inl
    /* TCustomForm.Create */ inline __fastcall virtual TForm(Classes::TComponent* AOwner) : TCustomForm(AOwner) { }
    #pragma option pop
    #pragma option push -w-inl
    /* TCustomForm.CreateNew */ inline __fastcall virtual TForm(Classes::TComponent* AOwner, int Dummy) : TCustomForm(AOwner, Dummy) { }
    #pragma option pop
    #pragma option push -w-inl
    /* TCustomForm.Destroy */ inline __fastcall virtual ~TForm(void) { }
    #pragma option pop
    
public:
    #pragma option push -w-inl
    /* TWinControl.CreateParented */ inline __fastcall TForm(HWND ParentWindow) : TCustomForm(ParentWindow) { }
    #pragma option pop
    
};
0
12.05.2012, 19:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.05.2012, 19:15
Помогаю со студенческими работами здесь

Скрытое выделение элементов в RichEdit
Здравствуйте!!! Существует ли способ в RichEdit выделить элементы (определенным цветом) так,...

Выделение строки в RichEdit с определенным словом
Помогите плиз читал много примеров по выделению определённого слова в RichEdit, а как выделить...

Выделение памяти (CodeGear RAD Studio 2009 - C++ builder). Выделение памяти - консоль vs SDIApp
Есть определенный класс - длинная арифметика. Не идеальный - хранение данных исполнено в виде...

Borland c++ Builder: пересчет слов, букв, предложений
Извените что обращаюсь с такой просьбой. Может кто нибудь помоч разобраться в написании программы...


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

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru