Нумерация строк в RichTextBox
кто может помочь идеей или советом?
Нужно пронумеровать строки в RichTextBoxe, причем так, что бы текст в RichtextBoxe можно было редактировать, а номера строк нет, и при изменении количества строк, строки должны перенумероваться.
Заранее благодарен всем, кто поможет
Люди !!!:o
кто может помочь идеей или советом?
Нужно пронумеровать строки в RichTextBoxe, причем так, что бы текст в RichtextBoxe можно было редактировать, а номера строк нет, и при изменении количества строк, строки должны перенумероваться.
Заранее благодарен всем, кто поможет
Да, задачка у тебя не простая, прям хоть сам пиши контрол. :)
Как вариант: поставить рядом другой RichTextBox/ListView/TextBox/Label без права изменений пользователем и заполнять его программно в соответствии с рядом лежащем RichTextBox (придется добавлять, убирать нумерацию, прокручивать эти номера в соответствии с RichTextBox - вообщем нелегкая работенка)
Люди !!!:o
кто может помочь идеей или советом?
Нужно пронумеровать строки в RichTextBoxe, причем так, что бы текст в RichtextBoxe можно было редактировать, а номера строк нет, и при изменении количества строк, строки должны перенумероваться.
Заранее благодарен всем, кто поможет
Вариант 1. Использовать другой контрол (лист бокс, лист вью, грид какой-нибудь). Это - наиболее простой метод.
Вариант 2. Хранить в памяти текст RTB, в котором после каждого возврата каретки вписан номер строки. При изменении текста в TRB проверять, не номер ли это меняется, и, если номер, посылать пользователя, иначе после изменения перерасчитывать переменную свою и вписывать её в RTB вместо старого текста. Чтобы реализовать такой вариант, у меня, лично, уйдёт 3-5 дней, и ещё не факт, что это будет нормально работать.:{
Вариант, указанный уважаемым SergeySV, по-моему, тоже сложен (как, например, поступать при скроллинге? Варианты для этого есть, но все - крайне заморочные.)
Люди !!!:o
кто может помочь идеей или советом?
Нужно пронумеровать строки в RichTextBoxe, причем так, что бы текст в RichtextBoxe можно было редактировать, а номера строк нет, и при изменении количества строк, строки должны перенумероваться.
Заранее благодарен всем, кто поможет
По моему надо вместо RichTextBox использовать OLE контейнер, а в нем Document Word. А в Wordе такая прибамбасина уже есть. Называется СПИСОК. И нумерует и не дает редактировать номера строк. Если это так, остается только с помощью VBA делать с этим списком все, что ты пожелаешь.
По моему надо вместо RichTextBox использовать OLE контейнер, а в нем Document Word. А в Wordе такая прибамбасина уже есть. Называется СПИСОК. И нумерует и не дает редактировать номера строк. Если это так, остается только с помощью VBA делать с этим списком все, что ты пожелаешь.
Всё гениальное - просто!!!:) :)
Люди !!!:o
кто может помочь идеей или советом?
Нужно пронумеровать строки в RichTextBoxe, причем так, что бы текст в RichtextBoxe можно было редактировать, а номера строк нет, и при изменении количества строк, строки должны перенумероваться.
Заранее благодарен всем, кто поможет
Если хочешь можешь поступить подругому
у тебя есть окно текста
добавь с лево от этого окна вплотную еще одно окно
textbox
после чего сделай такую вещь
поставь multilin = true
напиши код который будет отслеживать строки
и во втором окне будет показывать на них цифру строчки. При перемещении правого бокса текста сделай так чтобы менялись цифры в левом(тоесть тоже перемещались). Поставь например на движение мышки и на ввод. Так проще будет. Просто была у меня такая же проблема. Я так поступил. Может кто тут подскажет как сделать еще лучше.:) :) :)
Если хочешь можешь поступить подругому
у тебя есть окно текста
добавь с лево от этого окна вплотную еще одно окно
textbox
после чего сделай такую вещь
поставь multilin = true
напиши код который будет отслеживать строки
и во втором окне будет показывать на них цифру строчки. При перемещении правого бокса текста сделай так чтобы менялись цифры в левом(тоесть тоже перемещались). Поставь например на движение мышки и на ввод. Так проще будет. Просто была у меня такая же проблема. Я так поступил. Может кто тут подскажет как сделать еще лучше.:) :) :)
Да я собственно так и сделал, только вмето TextBoxa поставил еще один RichTextBox. Только вот проблемка: я хочу прокрутку обоих окон синхронизировать. Делаю GetScrollInfo из первого Richtexboxa (c текстом) и ставлю SetScrollInfo на второй (с цифрами) указатель прокрутки перемещается, а вот текст не прокручивается.:x
Кто подскажет как мне текст-то согласно SCROLLINFO прокрутить?
Да я собственно так и сделал, только вмето TextBoxa поставил еще один RichTextBox. Только вот проблемка: я хочу прокрутку обоих окон синхронизировать. Делаю GetScrollInfo из первого Richtexboxa (c текстом) и ставлю SetScrollInfo на второй (с цифрами) указатель прокрутки перемещается, а вот текст не прокручивается.:x
Кто подскажет как мне текст-то согласно SCROLLINFO прокрутить?
По идее так делать и надо: считать SCROLLINFO и передать SCROLLINFO.
Текст не прокручивается наверное потому, что через эти функции мы напрямую обращаемся к скроллам, заставляя второй передвинуться всед за первым, а вот клиентская часть окна самого RichTextBox почему-то не получает никаких сообщений о необходимости изменить содержимое... тут надо подумать, чейто ей надо послать, завтра попробую поковыряться с кодом, может просто послать через PostMessage сообщение типа WM_VSCROLL...
Я тут занимался написанием класса по создание собств. popup окна через API и у меня проблема с изменением стиля окна, когда пропадала рамка окна и я никак не мог заставить систему перерисовать окно уже без рамки. В своих поисках инфы по перерисовки неклиентской части окна я попал на один сайт с описанием модуля VB, который средствами API вытворяет..... вообщем что я пишу, зайди поссылке и сам посмотри на эту красоту (скачать ее можно бесплатно :P ): http://www.elitevb.com/content/01,0099,01/01.aspx
Caca пляши, тебе подарок из далекой Америки.:) :roll: :P
Я тут занимался написанием класса по создание собств. popup окна через API и у меня проблема с изменением стиля окна, когда пропадала рамка окна и я никак не мог заставить систему перерисовать окно уже без рамки. В своих поисках инфы по перерисовки неклиентской части окна я попал на один сайт с описанием модуля VB, который средствами API вытворяет..... вообщем что я пишу, зайди поссылке и сам посмотри на эту красоту (скачать ее можно бесплатно :P ): http://www.elitevb.com/content/01,0099,01/01.aspx
Большущее спасибо, а я уже думал что эта тема так и заглохнет. В общем я танцую!!:P :P :P
Большущее спасибо, а я уже думал что эта тема так и заглохнет. В общем я танцую!!:P :P :P
:)
Пример оказался очень поучительным и для меня. Я как раз расправился с рамкой и думал как бы мне отодвинуть текст в окне от бордюра, а то он рисуется прям в плотную, а лишний пробел впереди слишком далеко отодвигает текст.
Оказалось просто - надо изменить размеры клиентской части окна - на стоко пикселей, скоко тебе надо. Да и вообще свобода, отхопал кусо у окна и рисуй там в свое удовольствие, отхопать то можно у любого и даже стандартного окна :P