|
|
|
количество строк в текстбоксе
|
|||
|---|---|---|---|
|
#18+
Подскажите пожалуйста, как узнать сколько строк занимает текст в текстбоксе. Строки могут переноситься с помощью vbCrLf, а могут просто не умещаться по ширине текстбокса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2013, 23:29 |
|
||
|
количество строк в текстбоксе
|
|||
|---|---|---|---|
|
#18+
почемукалка, имхо без vbCrLf иль чонить аналогичного это - одна строка имхо split(...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2013, 23:35 |
|
||
|
количество строк в текстбоксе
|
|||
|---|---|---|---|
|
#18+
почемукалка, слепил на досуге ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2013, 02:07 |
|
||
|
количество строк в текстбоксе
|
|||
|---|---|---|---|
|
#18+
guest_rusimport, спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2013, 12:44 |
|
||
|
количество строк в текстбоксе
|
|||
|---|---|---|---|
|
#18+
почемукалка, рано радуетесь, там есть одна "маленькая" недоработка, если слова в текстбоксе пишутся через дефис , то подсчет строк будет выполняться не всегда правильно (типа финансово-экономическая и т.п.) , но это вам домашнее задание - разобрать алгоритм и доработать его :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2013, 12:52 |
|
||
|
количество строк в текстбоксе
|
|||
|---|---|---|---|
|
#18+
почемукалка, решил переделать свой пример, а то от вида первоначального кода пришёл в тихий ужас))))) Кому не лень - потестируйте пожалуйста (может всплывут случаи, когда считает некорректно) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2014, 07:04 |
|
||
|
количество строк в текстбоксе
|
|||
|---|---|---|---|
|
#18+
Если кто-то пытался тестировать - спасибо, ошибки сам нашел, алгоритм переделал (похоже окончательно), прилагаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2014, 00:54 |
|
||
|
количество строк в текстбоксе
|
|||
|---|---|---|---|
|
#18+
ещё малость подправил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 01:59 |
|
||
|
количество строк в текстбоксе
|
|||
|---|---|---|---|
|
#18+
нашел ещё один "ляп" , как исправить - пока не знаю, для случаев центрирования текста по середине и по правому краю алгоритмы будут другие ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 09:02 |
|
||
|
количество строк в текстбоксе
|
|||
|---|---|---|---|
|
#18+
guest_rusimportнашел ещё один "ляп" , как исправить - пока не знаю, для случаев центрирования текста по середине и по правому краю алгоритмы будут другиеТак пойдёт? Ну ты заморочился... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 10:50 |
|
||
|
количество строк в текстбоксе
|
|||
|---|---|---|---|
|
#18+
Панург, авторТак пойдёт? Ну ты заморочился... Спасибо, что проявил интерес, но , нет , не пойдет, в твоем примере для 9-й записи считает не верно (сразу предупреждаю, задача только на первый взгляд простая) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 12:28 |
|
||
|
количество строк в текстбоксе
|
|||
|---|---|---|---|
|
#18+
guest_rusimportПанург, авторТак пойдёт? Ну ты заморочился... Спасибо, что проявил интерес, но , нет , не пойдет, в твоем примере для 9-й записи считает не верно (сразу предупреждаю, задача только на первый взгляд простая) впрочем и не только для девятой:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 12:31 |
|
||
|
количество строк в текстбоксе
|
|||
|---|---|---|---|
|
#18+
guest_rusimport, а регексп там никак прикрутить? в нем можно все условия указать там вроде "\n" надо считать. нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 12:56 |
|
||
|
количество строк в текстбоксе
|
|||
|---|---|---|---|
|
#18+
guest_rusimport, Не учёл скрол... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 13:16 |
|
||
|
количество строк в текстбоксе
|
|||
|---|---|---|---|
|
#18+
Панург, девятая запись - считает 2 , на самом деле 3, одиннадцатая - считает -1, на самом деле -5 , можно далее продолжать:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 13:45 |
|
||
|
количество строк в текстбоксе
|
|||
|---|---|---|---|
|
#18+
guest_rusimportПанург, девятая запись - считает 2 , на самом деле 3, одиннадцатая - считает -1, на самом деле -5 , можно далее продолжать:) Тактичное такое тролление. Раззадоривание-таки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 13:47 |
|
||
|
количество строк в текстбоксе
|
|||
|---|---|---|---|
|
#18+
почемукалкакак узнать сколько строк занимает текст в текстбоксе. А можно поинтересоваться - ЗАЧЕМ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 13:53 |
|
||
|
количество строк в текстбоксе
|
|||
|---|---|---|---|
|
#18+
guest_rusimport, Прямо мой пример такие результаты даёт? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 13:57 |
|
||
|
количество строк в текстбоксе
|
|||
|---|---|---|---|
|
#18+
Панургguest_rusimport, Прямо мой пример такие результаты даёт? ну, а чей ? не мой же, я этот код не писал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 14:20 |
|
||
|
количество строк в текстбоксе
|
|||
|---|---|---|---|
|
#18+
c 0 индекс в массиве, если явно не переопределили в заголовке модуля через OPTION BASE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 14:24 |
|
||
|
количество строк в текстбоксе
|
|||
|---|---|---|---|
|
#18+
Konst_Onec 0 индекс в массиве, если явно не переопределили в заголовке модуля через OPTION BASEТы имеешь ввиду это? Код: vbnet 1. Это единственное, что напоминает массив... guest_rusimport, добавь в заголовок модуля Код: vbnet 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 15:46 |
|
||
|
количество строк в текстбоксе
|
|||
|---|---|---|---|
|
#18+
Панургguest_rusimport, добавь в заголовок модуля Код: vbnet 1. 2. 3. добавил - результат тот же ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 16:00 |
|
||
|
количество строк в текстбоксе
|
|||
|---|---|---|---|
|
#18+
guest_rusimportПанургguest_rusimport, добавь в заголовок модуля Код: vbnet 1. 2. 3. добавил - результат тот же т.е. опять считает не правильно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 16:01 |
|
||
|
количество строк в текстбоксе
|
|||
|---|---|---|---|
|
#18+
guest_rusimport, Почитал внимательно про функция DrawText и выяснил (раньше не обращал внимание на это, т.к. не было нужды), что с параметром DT_CALCRECT функция будет считать правильно, если самое длинное слово в строке не превышает ширину ограничивающего прямоугольника. Если надо подробней, то в гугл Таким образом, предложенный способ будет работать с контролом достаточной ширины... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 17:44 |
|
||
|
количество строк в текстбоксе
|
|||
|---|---|---|---|
|
#18+
Панург, это всё замечательно, но что же делать со всеми возможными встречающимися комбинациями слов в рамках конкретного текстбокса (хотя бы для случая правого выравнивания текста, я уже не говорю про случаи другого выравнивания текста в текстбоксе)? Будет ли правильно работать алгоритм, предложенный вами (с учетом того, что вы написали выше)? Что то меня терзают сомнения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 19:31 |
|
||
|
количество строк в текстбоксе
|
|||
|---|---|---|---|
|
#18+
guest_rusimport, С нормальными словами работало вроде нормально. При указанных выше условиях. Кстати, у Эплмана ( Дэн Эплман, Win32 API и Visual Basic ) я не нашёл уточнения про изменение ширины ограничивающего прямоугольника при применения функции DrawText с параметром DT_CALCRECT и DT_WORDBREAK . Есть только про высоту. Или я так смотрел... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 19:58 |
|
||
|
количество строк в текстбоксе
|
|||
|---|---|---|---|
|
#18+
Панург, ну, так или иначе , буду "докручивать" свой вариант, ибо, как я понял ничего другого не остается, в моем варианте хотя бы во всех 19 записях примера считает правильно, но я наткнулся еще на одну комбинацию слов , обработку , которой не знаю, как увязать с уже имеющимся алгоритмом, будет время - разберусь и с этим, спасибо вам за внимание к этому вопросу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 20:35 |
|
||
|
количество строк в текстбоксе
|
|||
|---|---|---|---|
|
#18+
guest_rusimport, Вот этот вариант вроде считает нормально. Протестируй... Я не знал пр параметр DT_EDITCONTROL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 21:17 |
|
||
|
количество строк в текстбоксе
|
|||
|---|---|---|---|
|
#18+
Панург, только что увидел твое последнее сообщение, спасибо , что ответил, решил тестануть твой пример на самом сложном случае , и вот результат - последняя (20-я запись) - подсчет не верный , пример твой разобрал "по запчастям" , и вроде придраться не к чему, а считает не правильно, пример приложил (см. последнюю запись в таблице) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 22:20 |
|
||
|
количество строк в текстбоксе
|
|||
|---|---|---|---|
|
#18+
Панург, вроде заужать надо на один символ, тогда корректно lngWidth = lngWidth - Abs(.lfHeight) но еще потестирую, спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 22:41 |
|
||
|
количество строк в текстбоксе
|
|||
|---|---|---|---|
|
#18+
Панург, блин , "то хвост увязнет, то нос отвалится" , чо то с этим коэффициентом заужения сделать надо, а что - не пойму (та же 20-я - последняя запись - считает не верно) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 22:59 |
|
||
|
количество строк в текстбоксе
|
|||
|---|---|---|---|
|
#18+
Панург, у меня сложилось уже впечатление после безуспешных моих попыток поправить твой последний пример для последнего случая, приведенного мной выше, что это какой-то логический "тупик" в алгоритме :( , очень хочется надеяться, что я ошибаюсь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2014, 09:07 |
|
||
|
количество строк в текстбоксе
|
|||
|---|---|---|---|
|
#18+
guest_rusimport, Что тут сказать - Я так понимаю, это проблема GDI и целых чисел. Подробнее смотри у Фень Юаня ( Фень Юань, Программирование графики для Windows ) в главе "Точность шрифтовых метрик". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2014, 09:07 |
|
||
|
количество строк в текстбоксе
|
|||
|---|---|---|---|
|
#18+
Панургguest_rusimport, Что тут сказать - Я так понимаю, это проблема GDI и целых чисел. Подробнее смотри у Фень Юаня ( Фень Юань, Программирование графики для Windows ) в главе "Точность шрифтовых метрик". кабы у меня была ещё эта книга....а на твой взгляд профессионала (каким , уж извини за грубую лесть , я тебя безусловно считаю), что либо поможет для приведенного тобой алгоритма? У этого Юаня есть "лечебное " средство? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2014, 09:15 |
|
||
|
количество строк в текстбоксе
|
|||
|---|---|---|---|
|
#18+
guest_rusimport, guest_rusimportкабы у меня была ещё эта книгаОна есть в этих интернетах guest_rusimportУ этого Юаня есть "лечебное " средство?Я сильно не смотрел, но возможно у него есть (многообещающе выглядят названия) в главах "Нетривиальный вывод текста". Посмотри, может чего и накопаешь. Только там не VBA(VB6). guest_rusimportа на твой взгляд профессионалаЯ скорее любитель, но эта деятельность приносит некоторую прибыль... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2014, 09:26 |
|
||
|
количество строк в текстбоксе
|
|||
|---|---|---|---|
|
#18+
Панург, Спасибо , книгу уже скачал, главу прочитал, пока ничего утешительного не нашел ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2014, 09:53 |
|
||
|
количество строк в текстбоксе
|
|||
|---|---|---|---|
|
#18+
Панург, Было время , внимательно перечитал главу "Нетривиальный вывод текста", особо заинтересовал раздел "Аппаратно-независимое форматирование текста", советуют использовать метод KTextFormator::DrawText класса KTextFormator, код класса приведен в этом разделе, но поскольку это не VB (VBA), разобраться с этим мне будет сложновато, буду признателен , если поможешь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2014, 16:04 |
|
||
|
количество строк в текстбоксе
|
|||
|---|---|---|---|
|
#18+
Панург, Извини , если напряг тебя ненароком ... Реализовал тупым до безобразия способом, не поверишь :) (Только , если не будет работать , то надо, чтобы в Параметрах акса на вкладке Клавиатура стоял переход в начало поля при входе в поле) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2014, 22:41 |
|
||
|
количество строк в текстбоксе
|
|||
|---|---|---|---|
|
#18+
guest_rusimportИзвини , если напряг тебя ненарокомДа ни чего страшного, я не смотрел пока ещё. По работе много дел, сейчас некогда... guest_rusimportРеализовал тупым до безобразия способом, не поверишьРаботает, ну и хорошо! Главное что-бы надёжно было. guest_rusimport(Только , если не будет работать , то надо, чтобы в Параметрах акса на вкладке Клавиатура стоял переход в начало поля при входе в поле)Сделай так и не надо перенастраивать. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2014, 08:10 |
|
||
|
количество строк в текстбоксе
|
|||
|---|---|---|---|
|
#18+
ПанургСделай так и не надо перенастраивать. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. да это я потом сообразил, после того , когда "на радостях" пример выложил, тогда уж и в начало надо добавить Код: vbnet 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2014, 08:59 |
|
||
|
количество строк в текстбоксе
|
|||
|---|---|---|---|
|
#18+
guest_rusimport, похоже работает и на memo/rtf с разным размером шрифта ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2014, 10:27 |
|
||
|
|

start [/forum/topic.php?all=1&fid=45&tid=1617872]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
63ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
83ms |
get tp. blocked users: |
2ms |
| others: | 245ms |
| total: | 439ms |

| 0 / 0 |
