Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Нумерация строк в RichTextBox

2.1K
21 января 2004 года
caca
25 / / 01.08.2003
Люди !!!:o
кто может помочь идеей или советом?
Нужно пронумеровать строки в RichTextBoxe, причем так, что бы текст в RichtextBoxe можно было редактировать, а номера строк нет, и при изменении количества строк, строки должны перенумероваться.
Заранее благодарен всем, кто поможет
258
21 января 2004 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by caca
Люди !!!:o
кто может помочь идеей или советом?
Нужно пронумеровать строки в RichTextBoxe, причем так, что бы текст в RichtextBoxe можно было редактировать, а номера строк нет, и при изменении количества строк, строки должны перенумероваться.
Заранее благодарен всем, кто поможет



Да, задачка у тебя не простая, прям хоть сам пиши контрол. :)

Как вариант: поставить рядом другой RichTextBox/ListView/TextBox/Label без права изменений пользователем и заполнять его программно в соответствии с рядом лежащем RichTextBox (придется добавлять, убирать нумерацию, прокручивать эти номера в соответствии с RichTextBox - вообщем нелегкая работенка)

266
21 января 2004 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by caca
Люди !!!:o
кто может помочь идеей или советом?
Нужно пронумеровать строки в RichTextBoxe, причем так, что бы текст в RichtextBoxe можно было редактировать, а номера строк нет, и при изменении количества строк, строки должны перенумероваться.
Заранее благодарен всем, кто поможет


Вариант 1. Использовать другой контрол (лист бокс, лист вью, грид какой-нибудь). Это - наиболее простой метод.
Вариант 2. Хранить в памяти текст RTB, в котором после каждого возврата каретки вписан номер строки. При изменении текста в TRB проверять, не номер ли это меняется, и, если номер, посылать пользователя, иначе после изменения перерасчитывать переменную свою и вписывать её в RTB вместо старого текста. Чтобы реализовать такой вариант, у меня, лично, уйдёт 3-5 дней, и ещё не факт, что это будет нормально работать.:{
Вариант, указанный уважаемым SergeySV, по-моему, тоже сложен (как, например, поступать при скроллинге? Варианты для этого есть, но все - крайне заморочные.)

648
21 января 2004 года
Tiraspolsky
220 / / 23.07.2003
Цитата:
Originally posted by caca
Люди !!!:o
кто может помочь идеей или советом?
Нужно пронумеровать строки в RichTextBoxe, причем так, что бы текст в RichtextBoxe можно было редактировать, а номера строк нет, и при изменении количества строк, строки должны перенумероваться.
Заранее благодарен всем, кто поможет



По моему надо вместо RichTextBox использовать OLE контейнер, а в нем Document Word. А в Wordе такая прибамбасина уже есть. Называется СПИСОК. И нумерует и не дает редактировать номера строк. Если это так, остается только с помощью VBA делать с этим списком все, что ты пожелаешь.

266
21 января 2004 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by Tiraspolsky


По моему надо вместо RichTextBox использовать OLE контейнер, а в нем Document Word. А в Wordе такая прибамбасина уже есть. Называется СПИСОК. И нумерует и не дает редактировать номера строк. Если это так, остается только с помощью VBA делать с этим списком все, что ты пожелаешь.


Всё гениальное - просто!!!:) :)

2.1K
23 января 2004 года
caca
25 / / 01.08.2003
Спасибо, конечно, за совет, но вариант c OLE мне по техническим не подходит (должен быть именно RichTextBox или TextBox :( ). Новый контрол писать ооочень не хочется. А как можно отследить прокрутку RichTextBoxa и положение строки, в которой курсор находится? (это для варианта от SergeySV)
5.6K
24 января 2004 года
Sync
5 / / 23.01.2004
Цитата:
Originally posted by caca
Люди !!!:o
кто может помочь идеей или советом?
Нужно пронумеровать строки в RichTextBoxe, причем так, что бы текст в RichtextBoxe можно было редактировать, а номера строк нет, и при изменении количества строк, строки должны перенумероваться.
Заранее благодарен всем, кто поможет



Если хочешь можешь поступить подругому
у тебя есть окно текста
добавь с лево от этого окна вплотную еще одно окно
textbox
после чего сделай такую вещь
поставь multilin = true
напиши код который будет отслеживать строки
и во втором окне будет показывать на них цифру строчки. При перемещении правого бокса текста сделай так чтобы менялись цифры в левом(тоесть тоже перемещались). Поставь например на движение мышки и на ввод. Так проще будет. Просто была у меня такая же проблема. Я так поступил. Может кто тут подскажет как сделать еще лучше.:) :) :)

2.1K
28 января 2004 года
caca
25 / / 01.08.2003
Цитата:
Originally posted by Sync


Если хочешь можешь поступить подругому
у тебя есть окно текста
добавь с лево от этого окна вплотную еще одно окно
textbox
после чего сделай такую вещь
поставь multilin = true
напиши код который будет отслеживать строки
и во втором окне будет показывать на них цифру строчки. При перемещении правого бокса текста сделай так чтобы менялись цифры в левом(тоесть тоже перемещались). Поставь например на движение мышки и на ввод. Так проще будет. Просто была у меня такая же проблема. Я так поступил. Может кто тут подскажет как сделать еще лучше.:) :) :)



Да я собственно так и сделал, только вмето TextBoxa поставил еще один RichTextBox. Только вот проблемка: я хочу прокрутку обоих окон синхронизировать. Делаю GetScrollInfo из первого Richtexboxa (c текстом) и ставлю SetScrollInfo на второй (с цифрами) указатель прокрутки перемещается, а вот текст не прокручивается.:x
Кто подскажет как мне текст-то согласно SCROLLINFO прокрутить?

258
28 января 2004 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by caca


Да я собственно так и сделал, только вмето TextBoxa поставил еще один RichTextBox. Только вот проблемка: я хочу прокрутку обоих окон синхронизировать. Делаю GetScrollInfo из первого Richtexboxa (c текстом) и ставлю SetScrollInfo на второй (с цифрами) указатель прокрутки перемещается, а вот текст не прокручивается.:x
Кто подскажет как мне текст-то согласно SCROLLINFO прокрутить?



По идее так делать и надо: считать SCROLLINFO и передать SCROLLINFO.
Текст не прокручивается наверное потому, что через эти функции мы напрямую обращаемся к скроллам, заставляя второй передвинуться всед за первым, а вот клиентская часть окна самого RichTextBox почему-то не получает никаких сообщений о необходимости изменить содержимое... тут надо подумать, чейто ей надо послать, завтра попробую поковыряться с кодом, может просто послать через PostMessage сообщение типа WM_VSCROLL...

258
12 февраля 2004 года
SergeySV
1.5K / / 19.03.2003
Caca пляши, тебе подарок из далекой Америки.:) :roll: :P

Я тут занимался написанием класса по создание собств. popup окна через API и у меня проблема с изменением стиля окна, когда пропадала рамка окна и я никак не мог заставить систему перерисовать окно уже без рамки. В своих поисках инфы по перерисовки неклиентской части окна я попал на один сайт с описанием модуля VB, который средствами API вытворяет..... вообщем что я пишу, зайди поссылке и сам посмотри на эту красоту (скачать ее можно бесплатно :P ): http://www.elitevb.com/content/01,0099,01/01.aspx
2.1K
17 февраля 2004 года
caca
25 / / 01.08.2003
Цитата:
Originally posted by SergeySV
Caca пляши, тебе подарок из далекой Америки.:) :roll: :P

Я тут занимался написанием класса по создание собств. popup окна через API и у меня проблема с изменением стиля окна, когда пропадала рамка окна и я никак не мог заставить систему перерисовать окно уже без рамки. В своих поисках инфы по перерисовки неклиентской части окна я попал на один сайт с описанием модуля VB, который средствами API вытворяет..... вообщем что я пишу, зайди поссылке и сам посмотри на эту красоту (скачать ее можно бесплатно :P ): http://www.elitevb.com/content/01,0099,01/01.aspx



Большущее спасибо, а я уже думал что эта тема так и заглохнет. В общем я танцую!!:P :P :P

258
17 февраля 2004 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by caca


Большущее спасибо, а я уже думал что эта тема так и заглохнет. В общем я танцую!!:P :P :P



:)

Пример оказался очень поучительным и для меня. Я как раз расправился с рамкой и думал как бы мне отодвинуть текст в окне от бордюра, а то он рисуется прям в плотную, а лишний пробел впереди слишком далеко отодвигает текст.
Оказалось просто - надо изменить размеры клиентской части окна - на стоко пикселей, скоко тебе надо. Да и вообще свобода, отхопал кусо у окна и рисуй там в свое удовольствие, отхопать то можно у любого и даже стандартного окна :P

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог