Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 | 2 | 3 |

 

  Вопрос: Динамическая многострочность Добавлено: 12.09.09 11:32  

Автор вопроса:  VβÐUηìt | Web-сайт: смекаешь.рф

Ответить

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

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



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #31
Добавлено: 14.09.09 18:07
Как же я без этого доработаю интерпретатор окон в XQR2?

Ответить

Номер ответа: 32
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #32 Добавлено: 14.09.09 18:48
Ответ на этот вопрос интерисует только одного человека на форуме.
Ответ на вопрос "зачем это делать" - ни одного.

По-моему тебе уже все довольно хорошо объяснили, разжевали и положили в рот, прямо как в школе.

На всякий случай более кратко поясню
TextBox технически является окном.
При создании окна указывается его стиль, в том числе в этом стиле указывается, в каком режиме работает TextBox - однострочном или многострочном.
Некоторые стили после создания можно менять, некоторые - нет. Тебя интерисует именно тот который менять нельзя. Это ограничение Windows, не VB6, оно очень нелогичное на мой взгляд.
Поэтому ответ на твой вопрос - сделать то что ты хочешь (сменить определенный стиль текстбокса) невозможно, единственное что ты можешь сделать - смириться с этим и жить дальше.

Если же смотреть на проблему более широко (не "как сделать текстовое поле многострочным через SetWindowLong?", а как сделать из однострочного текстбокса многострочный), то можно найти решения.
Например, в Windows Forms (надеюсь не нужно объяснять что это такое?) у класса TextBox есть свойство MultiLine, оно доступно и для чтения и для записи, причем как в дизайнтайме, так и в райнтайме. Запустив пример кода, который я дал, ты бы мог убедиться в этом. А также понять в Windows Forms обошли указанное выше ограничение. При изменении этого свойства создается новое окно с точно такими же свойствами и стилями (кроме, разумеется, указанного MultiLine), и в него копируется старый текст. Старое окно удаляется. Заметить это очень легко - при изменении указанного свойства у TextBox оказывается новый идентификатор hWnd.

Все это можно реализовать на VB6. Примерный код создания окна приводил пан EROS, впрочем он опустил (ввиду ее очевидности) часть кода, отвечающую за сабклассинг и обработку событий новосозданного текстбокса. Сделав это, ты также столкнешься с некоторыми сложностями сабклассинга в среде VB6.

Более логичное и простое решение, которое сразу же находит опытный программист - создать два TextBox в дизайнтайме, с разными установками MultiLine. Установить для них одинаковые шрифты, одинаковое расположение. В каждый момент времени, используя свойствао Visible, один из текстбоксов прятать, другой показывать. При необходимости переключения режима, соответственно менять их местами, не забывая копировать текстовое содержимое. Реализация занимает около 5-8 очень очевидных строчек кода, которые бы уже давно написали все программисты, практикующие VB6, кроме одного.
Так-то.



Мне кажется или раньше школьникам не нужно было по 3 часа разжевывать абсолютно очевидные вещи?

Ответить

Номер ответа: 33
Автор ответа:
 portC



Вопросов: 14
Ответов: 101
 Web-сайт: feshin.info
 Профиль | | #33
Добавлено: 15.09.09 00:01
(to 15) че-то с аськой случилось либо у меня либо у тебя (не проходят сообщения)
пробовал step больше ставить? либо, как в архиве, что я тебе выслал - через деление

Ответить

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



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #34
Добавлено: 15.09.09 15:54
Благодарю.

Ответить

Страница: 1 | 2 | 3 |

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



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