Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: вопросы про textbox Добавлено: 18.08.09 13:04  

Автор вопроса:  Злобный программер :-)
Здрвствуйте. Возникли такие вопросы:
1) как в textbox разукрасить определённые слова? (подсветка синтаксиса) Мож быть с пом каких - нибудь API?
2) как приделать к textbox боковую панель?(рядом с каждой строкой отображается номер строки) Я где то видел такой пример, но хотелось бы понять технику...
Заранее спасибо

Ответить

  Ответы Всего ответов: 12  

Номер ответа: 1
Автор ответа:
 UnDeAdZak



Вопросов: 80
Ответов: 476
 Профиль | | #1 Добавлено: 18.08.09 13:16
1) Чтобы разукрасить определённые слова нада использовать RichTextBox (в Visual Basic 6.0 нада подключить библиотеку Microsoft Rich Textbox Control 6.0 а в Visual Basic.NET этот компонент есть изначально).
2)попробуй так: кинь на форму label рядом с текстбоксом, притом Label1.height долженбыть равен Textbox.height и добавь код на загрузку формы:
  1.  
  2. Dim a as Long
  3. Label1.text = 1
  4. For a = 2 to ...'количество строк в документе с этим сам как нибудь разберись
  5. label1.text = label1.text & VbCrLf & a
  6. next a

Ответить

Номер ответа: 2
Автор ответа:
 Unknown_Master



Вопросов: 11
Ответов: 264
 Профиль | | #2 Добавлено: 18.08.09 13:24
Можно просто кинуть возле него пикчербокс и в нём отрисовывать номера строк.

Ответить

Номер ответа: 3
Автор ответа:
 Unknown_Master



Вопросов: 11
Ответов: 264
 Профиль | | #3 Добавлено: 18.08.09 13:24
Хоть это и более муторно. Зато можно это сделать красиво =)

Ответить

Номер ответа: 4
Автор ответа:
 Злобный программер :-)



Вопросов: 14
Ответов: 24
 Профиль | | #4 Добавлено: 18.08.09 13:54
UnDeAdZak пишет:
2)попробуй так: кинь на форму label рядом с текстбоксом, притом Label1.height долженбыть равен Textbox.height и добавь код на загрузку формы:

сейчас попытаюсь.....
UnDeAdZak пишет:
1) Чтобы разукрасить определённые слова нада использовать RichTextBox (в Visual Basic 6.0 нада подключить библиотеку Microsoft Rich Textbox Control 6.0 а в Visual Basic.NET этот компонент есть изначально).

Я знаю про RichTextBox. Просто я пишу компилятор, а RichTextBox не совсем подходит для этих целей. Например тем, что незадачливый юзер может скопировать туда картинку или же весь код программы может отображаться разными шрифтами (если юзер опять постарается). Мнебы стандартный textbox какими нибудь API исковеркать =)

Ответить

Номер ответа: 5
Автор ответа:
 Злобный программер :-)



Вопросов: 14
Ответов: 24
 Профиль | | #5 Добавлено: 18.08.09 14:04
  1. Private Sub Text1_Change()
  2.  Dim a As Long
  3.  Dim stroki() As String
  4.  Label1.Caption = 1
  5.  stroki = Split(Text1.Text, vbCrLf)
  6.  For a = 2 To UBound(stroki)
  7.  Label1.Caption = Label1.Caption & vbCrLf & a
  8.  Next a
  9. End Sub


Получилось так.... тока вот textbox прокручиваемый и надо бы чтоб и содержимое label прокручивалось.... такое считаю невозможно.... =( Думаю как решить проблему.

Ответить

Номер ответа: 6
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #6 Добавлено: 18.08.09 14:10
А не легче подменить контекстку ричтекста на свою?

Ответить

Номер ответа: 7
Автор ответа:
 Злобный программер :-)



Вопросов: 14
Ответов: 24
 Профиль | | #7 Добавлено: 18.08.09 14:18
если создать массив label'ов и поместить их в какой - нибудь прокручиваемый контейнер, и прокручивать его в соответствии с textbox... то проблема будет решена. Извините что думаю вслух =) но как это сделать?

Ответить

Номер ответа: 8
Автор ответа:
 Злобный программер :-)



Вопросов: 14
Ответов: 24
 Профиль | | #8 Добавлено: 18.08.09 14:20
Smith пишет:
А не легче подменить контекстку ричтекста на свою?

можно подменить, но юзер может просто нажать Ctrl + V....

Ответить

Номер ответа: 9
Автор ответа:
 Илья



Вопросов: 1
Ответов: 48
 Профиль | | #9 Добавлено: 18.08.09 17:25
Получилось так.... тока вот textbox прокручиваемый и надо бы чтоб и содержимое label прокручивалось.... такое считаю невозможно.... =( Думаю как решить проблему.

Прошу прощения что вмешиваюсь, но предлогаю сделать прокрутку от текущего положения SelStart, или же просто выводить текущую линию и позицию, пользователь просто кликнет куда ему надо, и получит данные об этой линии

А вообще, можно свой TextBox сделать...

Ответить

Номер ответа: 10
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #10
Добавлено: 18.08.09 18:27
Можно и RichTextBox обойтись:

http://www.xqr2.com/codebloom.png

1,5 килострок - и готовый редактор кода. Внутри XQR2 =)

Ответить

Номер ответа: 11
Автор ответа:
 Skywalker



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #11
Добавлено: 18.08.09 19:32
насчет шрифтов, ты все равно должен при вставке текста вызывать функцию подсвечивания, иначе будет идти код, а потом черный текст, так что шрифты юзер никак не вставит корявые, ну а картинку уж проверять нада и все.

Ответить

Номер ответа: 12
Автор ответа:
 Илья



Вопросов: 1
Ответов: 48
 Профиль | | #12 Добавлено: 19.08.09 14:07
насчет шрифтов, ты все равно должен при вставке текста вызывать функцию подсвечивания, иначе будет идти код, а потом черный текст, так что шрифты юзер никак не вставит корявые, ну а картинку уж проверять нада и все.


Вот, код помогает избавиться от сторонних форматирований и картинок

  1. ' Нанесите на форму 2 RichTextBox-а с именами BText (Visible = False) и Text1
  2. Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
  3.  
  4. Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
  5. If GetAsyncKeyState(vbKeyControl) Then
  6.     If GetAsyncKeyState(vbKeyV) Then
  7.     BText.Text = Clipboard.GetText
  8.     Call Clipboard.Clear
  9.     BText.SelStart = 0
  10.     BText.SelLength = Len(BText.Text)
  11.     
  12.     BText.SelFontSize = Text1.Font.Size
  13.     BText.SelFontName = Text1.Font.Name
  14.     
  15.     ' - Здесь можно использовать форматирование текста
  16.     
  17.     Call Clipboard.SetText(BText.SelText)
  18.     BText.Text = ""
  19.     End If
  20. End If
  21. End Sub

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам