Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
7 / 0 / 0
Регистрация: 02.02.2012
Сообщений: 39

Автоматическое маркирование абзацев

24.01.2013, 12:56. Показов 1748. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужна помощь. У меня уже есть готовый, написанный мною, текстовый редактор. Нужно, чтобы маркировался каждый абзац. То есть, как я понимаю, маркироваться абзац должен при нажатии клавиши "Enter" в конце соответствующего предложения. Много думал об этом, никак не могу понять, как это реализовать. Прошу Вас помочь. Мне эта программа сейчас очень важна. Буду очень благодарен. Заранее, Спасибо!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.01.2013, 12:56
Ответы с готовыми решениями:

Макросы в word: сколько в тексте абзацев и есть ли среди этих абзацев хотя бы один, длиннее 200 символов
Написать макрос, который по произвольному тексту определяет, имеет ли этот текст определенные свойства (зависящие от варианта). Макрос...

Рисование\маркирование монитора
Доброго дня. Мне нужно создать приложение для работы с интерактивной доской, дисплеем монитора и тому подобного. Суть в том, что...

Группировка абзацев
Добрый день! Есть строки типа ТВ-программы: 13.30 Кто ты такой? 14.00 Гамбургский смертник 16.00 Кто ты такой? 17.00 Охотники за...

15
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
24.01.2013, 15:30
маркирование абзацев - это что? задание непечатных символов? нумерация строк?
1
7 / 0 / 0
Регистрация: 02.02.2012
Сообщений: 39
24.01.2013, 16:10  [ТС]
Нужно, чтобы вначале абзаца автоматически ставился маркер (как у элементов <li> тега <ul>в HTML). Простой, стандартный круглый маркер,
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
24.01.2013, 16:17
1.
C++
1
Memo1->Lines->Add( char(17) + " Супер-пупер текст" ); // char(7)
Добавлено через 1 минуту
2.
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
TParaFormat2 fmt;
 
memset( &fmt, sizeof( fmt ), 0 );
fmt.cbSize = sizeof( fmt );
fmt.dwMask = PFM_NUMBERING || PFM_NUMBERINGSTART || PFM_NUMBERINGSTYLE || PFM_NUMBERINGTAB;
fmt.wNumbering = 1;
/// wNumbering:
// 0 - нет нумерации
// 1 - маркированный список    (•, •, •, ...).
// 2 - арабские цифры          (1, 2, 3, ...).
// 3 - маленькие буквы         (a, b, c, ...).
// 4 - большие буквы           (A, B, C, ...).
// 5 - маленькие римские цифры (i, ii, iii, ...).
// 6 - большие римские цифры   (I, II, III, ...).
// 7 - последовательность символов Unicode/
fmt.wNumberingStart = 30;
/// wNumberingStart:
//  Число, с которого начинается нумерация./
fmt.wNumberingStyle = 0x100;
/// wNumberingStyle:
// Стиль нумерации
// 0     :  1)
// $100  : (1)
// $200  :  1.
// $300  :  1
// $400  : убрать список
// $8000 : продолжает нумеровать список не изменяя стиля/
//  fmt.wNumberingTab = 2000;//div(1440,4).quot;
/// wNumberingTab:
// расстояние между номером и текстом параграфа/
RichEdit1->Perform( EM_SETPARAFORMAT, 0, LPARAM( &fmt ) );
1
7 / 0 / 0
Регистрация: 02.02.2012
Сообщений: 39
24.01.2013, 16:22  [ТС]
Есть одна проблема. Надо, чтобы оно автоматически добавляло маркер, когда я начинаю новый абзац, а не каждый раз добавлять в поле мемо новый текст. Как я понимаю, оно должно ставить маркер при нажатии клавиши "Enter" после соответствующего предложения. Вот как сделать это автоматически, я не понимаю. Вполне возможно это должно происходить через событие Keypress, но что именно прописать в этой процедуре - не знаю.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
24.01.2013, 16:24
см. п. №2
1
7 / 0 / 0
Регистрация: 02.02.2012
Сообщений: 39
24.01.2013, 16:25  [ТС]
Можете, пожалуйста, кратко пояснить, что происходит во втором исходнике вашего сообщения?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
24.01.2013, 16:31
происходит маркирование/нумерация абзацев, как заказывали, использование:
C++
1
2
3
4
Form->KeyPreview = true;
...
// OnKeyPress
if (Key == VK_RETURN) { /* код */ }
1
7 / 0 / 0
Регистрация: 02.02.2012
Сообщений: 39
24.01.2013, 16:48  [ТС]
Огромнейшее спасибо)

Добавлено через 14 минут
Извините, но не могу разобраться. Весь второй исходник вставил после условия, только заменил ричэдит на мемо. Маркировку не делает. Может быть я что-то не так сделал.

Вот код:
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
void __fastcall TForm1::Memo1KeyPress(TObject *Sender, char &Key)
{
if (Key==VK_RETURN)
{
TParaFormat2 fmt;
 
memset( &fmt, sizeof( fmt ), 0 );
fmt.cbSize = sizeof( fmt );
fmt.dwMask = PFM_NUMBERING || PFM_NUMBERINGSTART || PFM_NUMBERINGSTYLE || PFM_NUMBERINGTAB;
fmt.wNumbering = 5;
/// wNumbering:
// 0 - нет нумерации
// 1 - маркированный список    (•, •, •, ...).
// 2 - арабские цифры          (1, 2, 3, ...).
// 3 - маленькие буквы         (a, b, c, ...).
// 4 - большие буквы           (A, B, C, ...).
// 5 - маленькие римские цифры (i, ii, iii, ...).
// 6 - большие римские цифры   (I, II, III, ...).
// 7 - последовательность символов Unicode/
fmt.wNumberingStart = 30;
/// wNumberingStart:
//  Число, с которого начинается нумерация./
fmt.wNumberingStyle = 0x100;
/// wNumberingStyle:
// Стиль нумерации
// 0     :  1)
// $100  : (1)
// $200  :  1.
// $300  :  1
// $400  : убрать список
// $8000 : продолжает нумеровать список не изменяя стиля/
//  fmt.wNumberingTab = 2000;//div(1440,4).quot;
/// wNumberingTab:
// расстояние между номером и текстом параграфа/
Memo1->Perform( EM_SETPARAFORMAT, 0, LPARAM( &fmt ) );
}
}
//---------------------------------------------------------------------------
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
24.01.2013, 16:52
TParaFormat2 - структура ричэдита, в мемо форматирование текста недоступно.
для мемо - п. №1
1
7 / 0 / 0
Регистрация: 02.02.2012
Сообщений: 39
24.01.2013, 17:35  [ТС]
Понял. Спасибо.

Добавлено через 19 минут
Когда ввожу текст, оно автоматически делает пробел перед первой буквой, так и должно было быть или мне надо какую-то библиотеку для непечатных символов подключить?

Добавлено через 19 минут
Ещё заметил, что оно делает пробел не только когда нажимаешь клавишу "Enter", но и когда просто пишешь текст подряд в много строк.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
24.01.2013, 18:43
Если вы об этом:
C++
1
2
3
//  fmt.wNumberingTab = 2000;//div(1440,4).quot;
/// wNumberingTab:
// расстояние между номером и текстом параграфа/
то это - fmt.wNumberingTab - расстояние между номером и текстом параграфа - попытайтесь укзать
C++
1
fmt.wNumberingTab = 0;
а если вы об этом:
C++
1
Memo1->Lines->Add( char(17) + " Супер-пупер текст" ); // char(7)
то
C++
1
Memo1->Lines->Add( char(17) + "Супер-пупер текст" ); // char(7)
Добавлено через 4 минуты
а в прочем, читайте сами:
PARAFORMAT2 structure (Windows)
1
7 / 0 / 0
Регистрация: 02.02.2012
Сообщений: 39
24.01.2013, 23:35  [ТС]
Извините. Я о исходнике, где содержится
C++
1
2
3
//  fmt.wNumberingTab = 2000;//div(1440,4).quot;
/// wNumberingTab:
// расстояние между номером и текстом параграфа/
Проблема в том, что оно ни номера, ни маркера не ставит, лишь пробел перед каждой новой строкой, а должно лишь тогда, когда я нажимаю "Enter", то есть когда начинаю печатать с нового абзаца.
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
25.01.2013, 00:44
Прочитал тему нифига не понял, что требуется... приведите пример.. скрин чтоли..

Что за маркер ? Тег ?

И нафига ?
Если абзац - это отступ и он ставится не обязательно после каждого конца строки...

Добавлено через 15 минут
Что мешает разрешить табуляцию ?
C++
1
RichEdit1->WantTabs= true;
Добавлено через 7 минут
Ну либо
C++
1
2
3
4
5
6
7
8
9
10
11
//---------------------------------------------------------------------------
void __fastcall TForm1::RichEdit1KeyDown(TObject *Sender, WORD &Key, TShiftState Shift)
 
{
if(Key == VK_RETURN)
    {
        RichEdit1->Lines->Add("\t");
        Key= 0;
    }
}
//---------------------------------------------------------------------------
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
25.01.2013, 01:24
Цитата Сообщение от tempestelectro Посмотреть сообщение
Извините. Я о исходнике, где содержится
C++
1
2
3
//  fmt.wNumberingTab = 2000;//div(1440,4).quot;
/// wNumberingTab:
// расстояние между номером и текстом параграфа/
Проблема в том, что оно ни номера, ни маркера не ставит, лишь пробел перед каждой новой строкой, а должно лишь тогда, когда я нажимаю "Enter", то есть когда начинаю печатать с нового абзаца.
пардон... надо использовать побитовое or (одинарные символы | ), а не логическое (сдвоенные)
C++
1
fmt.dwMask = PFM_NUMBERING | PFM_NUMBERINGSTART | PFM_NUMBERINGSTYLE | PFM_NUMBERINGTAB;
1
7 / 0 / 0
Регистрация: 02.02.2012
Сообщений: 39
25.01.2013, 10:46  [ТС]
LK, огромнейшее человеческое вам спасибо, все работает. Удачи вам в жизни и в работе.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.01.2013, 10:46
Помогаю со студенческими работами здесь

Перемешивание абзацев в Word
В текстовом редакторе Microsoft Word дан текст. Написать программу на VBA, которая должна: 1. Перемешивать абзацы между собой.

Word. Выравнивание абзацев
Профессионалы и любители, прошу дать совет и наставление. Здравствуйте! Мне необходимо выполнить кое-какие манипуляции с текстом, одна из...

Нумерация строк (абзацев)
Добрый вечер. Подскажите пожалуйста, как средствами VBA пронумеровать выделенные абзацы. Допустим дано: Карта Велосипед, ...

Вставка абзацев в TEdit
Добрый день, подскажите можно как то сделать так что бы вставлялись и абзацы тоже в TEdit?

Сортировка абзацев по длине
Есть задание написать макроси для сортировки абзацов по длине или по алфавиту, по алфавиту изи сделал, а вот с длиной никак. Хто в етом...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru