Контрол для редактирования текста

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

Контрол для редактирования текста

Сообщение Joo » 18.09.2008 (Чт) 6:02

Привет народ!
Кто-то, возможно, занимался этим вопросом, я решил впервые.
Хочу написать контрол для редактирования текста. Тема довольно сложная.
Если у кого есть, какие не будь наработки, мысли по этому поводу, информация, поделитесь.
Хотя бы, в какую сторону рыть.
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Контрол для редактирования текста

Сообщение Денис » 18.09.2008 (Чт) 8:14

Тебе чисто в академических целях надо написать? Или ты хочешь нарастить функционал стандартного контрола? Если второе, то может лучше было бы не писать с нуля, а унаследовать стандартный контрол и добавить свои методы? .NET это позволяет, насколько я понимаю.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

Re: Контрол для редактирования текста

Сообщение Joo » 18.09.2008 (Чт) 8:37

Денис писал(а):Тебе чисто в академических целях надо написать? Или ты хочешь нарастить функционал стандартного контрола? Если второе, то может лучше было бы не писать с нуля, а унаследовать стандартный контрол и добавить свои методы? .NET это позволяет, насколько я понимаю.


Решил совместить приятное с полезным. Мне нужен контрол для моего с другом проекта Bred.Net, необходимо прикрутить подсветку синтаксиса, и еще пару фишек. Конечно можно было бы под это дело приспособить RichTextBox или обычный TextBox(благо он сейчас позволяет огромные файлы грузить), но я всегда хотел написать такой контрол с нуля, но все не решался ;)
Если не получится, то конечно буду переделывать существующие.
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Контрол для редактирования текста

Сообщение Денис » 18.09.2008 (Чт) 9:15

Scarabey писал(а):переделывать существующие.

Вот такой простенький пример: К контролу TextBox "прикручиваем" процедуру CalculateX
Код: Выделить всё
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim MyTxt As exTextBox

        MyTxt = New exTextBox

        With MyTxt

            .Parent = Me
            .Top = 10
            .Left = 10
            .CalculateX(12, 3)

        End With

    End Sub
End Class

'________________________________________________

Public Class exTextBox

    Inherits System.Windows.Forms.TextBox

    Public Sub CalculateX(ByVal X As Long, ByVal L As Long)

        Text = CStr(X ^ L)

    End Sub

End Class
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

Re: Контрол для редактирования текста

Сообщение Joo » 18.09.2008 (Чт) 10:01

Денис писал(а):Вот такой простенький пример: К контролу TextBox "прикручиваем" процедуру CalculateX
Код: Выделить всё
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim MyTxt As exTextBox
...
End Class

'________________________________________________

Public Class exTextBox
...
End Class


Да это то все понятно, дело ведь еще и в спортивном интересе, но информации по этому дело маловато.

К стати я вот ради примера хотел субклассировать TextBox попробовал обработать WM_PAINT, но при наборе текста событие не срабатывает (( хотя должно. Раньше на асме делал работало, тут не хочет, может я неправильно делаю это в .NET. Чуть позже выложу код.
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог

Atoman
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 109
Зарегистрирован: 01.02.2008 (Пт) 6:36

Re: Контрол для редактирования текста

Сообщение Atoman » 18.09.2008 (Чт) 18:24

На RSDN есть проект(Rsdn.Editor) с открытым кодом.
А если будешь делать подсетку в RichTextBox то наверно будет лучше заюзать TOM

Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

Re: Контрол для редактирования текста

Сообщение Joo » 19.09.2008 (Пт) 8:45

Atoman писал(а):На RSDN есть проект(Rsdn.Editor) с открытым кодом.
А если будешь делать подсетку в RichTextBox то наверно будет лучше заюзать TOM

Стесьняюсь спросить, что есть ТОМ?
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог

Atoman
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 109
Зарегистрирован: 01.02.2008 (Пт) 6:36

Re: Контрол для редактирования текста

Сообщение Atoman » 19.09.2008 (Пт) 9:05


Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

Re: Контрол для редактирования текста

Сообщение Joo » 21.09.2008 (Вс) 16:11

Хех… Подумал и решил для начала опробовать силы и сделать просто вьювер мда, не чего получилось, а вернее не чего путного не получилось.

Если бы не опция WordWrap то все было бы пучком, но так-как без переноса строк не куда, то приходится учитывать перенесенные строки, дабы сделать нормальную прокрутку и получить контроль над текстом, а для всего этого приходится при ресайзе окна пересчитывать строки, а потом придется еще и при изменении текста. Короче если будет большой файлик то все это дело будет работать медленно, а еще же и подсветить что не будь хочется.

В приложенном архиве
Split.zip
TextViewer-test(VS2008)
(116.03 Кб) Скачиваний: 42
исходник, там более или менее комментировано, разобраться можно, все тормоза скрыты за процедурой RecalcVirtualLines. Смотрите, может, у кого есть идеи.

p.s. Горизонтальный скроллинг не делал, т.к. с этим все просто, и код перегружать не хотелось.
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 106

    TopList