powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / количество строк в текстбоксе
42 сообщений из 42, показаны все 2 страниц
количество строк в текстбоксе
    #38247954
Подскажите пожалуйста, как узнать сколько строк занимает текст в текстбоксе. Строки могут переноситься с помощью vbCrLf, а могут просто не умещаться по ширине текстбокса.
...
Рейтинг: 0 / 0
количество строк в текстбоксе
    #38247959
СхБд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
почемукалка,

имхо
без vbCrLf иль чонить аналогичного
это - одна строка
имхо

split(...)
...
Рейтинг: 0 / 0
количество строк в текстбоксе
    #38248437
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
почемукалка,

слепил на досуге
...
Рейтинг: 0 / 0
количество строк в текстбоксе
    #38248804
guest_rusimport, спасибо!
...
Рейтинг: 0 / 0
количество строк в текстбоксе
    #38248817
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
почемукалка,

рано радуетесь, там есть одна "маленькая" недоработка, если слова в текстбоксе пишутся через дефис , то подсчет строк будет выполняться не всегда правильно (типа финансово-экономическая и т.п.) , но это вам домашнее задание - разобрать алгоритм и доработать его :)
...
Рейтинг: 0 / 0
количество строк в текстбоксе
    #38519366
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
почемукалка,

решил переделать свой пример, а то от вида первоначального кода пришёл в тихий ужас)))))

Кому не лень - потестируйте пожалуйста (может всплывут случаи, когда считает некорректно)
...
Рейтинг: 0 / 0
количество строк в текстбоксе
    #38520025
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если кто-то пытался тестировать - спасибо, ошибки сам нашел, алгоритм переделал (похоже окончательно), прилагаю
...
Рейтинг: 0 / 0
количество строк в текстбоксе
    #38521177
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ещё малость подправил
...
Рейтинг: 0 / 0
количество строк в текстбоксе
    #38521296
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нашел ещё один "ляп" , как исправить - пока не знаю, для случаев центрирования текста по середине и по правому краю алгоритмы будут другие
...
Рейтинг: 0 / 0
количество строк в текстбоксе
    #38521461
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_rusimportнашел ещё один "ляп" , как исправить - пока не знаю, для случаев центрирования текста по середине и по правому краю алгоритмы будут другиеТак пойдёт? Ну ты заморочился...
...
Рейтинг: 0 / 0
количество строк в текстбоксе
    #38521706
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург,

авторТак пойдёт? Ну ты заморочился...


Спасибо, что проявил интерес, но , нет , не пойдет, в твоем примере для 9-й записи считает не верно (сразу предупреждаю, задача только на первый взгляд простая)
...
Рейтинг: 0 / 0
количество строк в текстбоксе
    #38521714
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_rusimportПанург,

авторТак пойдёт? Ну ты заморочился...


Спасибо, что проявил интерес, но , нет , не пойдет, в твоем примере для 9-й записи считает не верно (сразу предупреждаю, задача только на первый взгляд простая)

впрочем и не только для девятой:)
...
Рейтинг: 0 / 0
количество строк в текстбоксе
    #38521782
ILLHEAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_rusimport,

а регексп там никак прикрутить? в нем можно все условия указать
там вроде "\n" надо считать. нет?
...
Рейтинг: 0 / 0
количество строк в текстбоксе
    #38521817
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_rusimport,

Не учёл скрол...
...
Рейтинг: 0 / 0
количество строк в текстбоксе
    #38521868
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург,

девятая запись - считает 2 , на самом деле 3, одиннадцатая - считает -1, на самом деле -5 , можно далее продолжать:)
...
Рейтинг: 0 / 0
количество строк в текстбоксе
    #38521871
Прогер_самоучка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_rusimportПанург,

девятая запись - считает 2 , на самом деле 3, одиннадцатая - считает -1, на самом деле -5 , можно далее продолжать:)
Тактичное такое тролление. Раззадоривание-таки
...
Рейтинг: 0 / 0
количество строк в текстбоксе
    #38521881
почемукалкакак узнать сколько строк занимает текст в текстбоксе. А можно поинтересоваться - ЗАЧЕМ?
...
Рейтинг: 0 / 0
количество строк в текстбоксе
    #38521892
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_rusimport,

Прямо мой пример такие результаты даёт?
...
Рейтинг: 0 / 0
количество строк в текстбоксе
    #38521940
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панургguest_rusimport,

Прямо мой пример такие результаты даёт?

ну, а чей ? не мой же, я этот код не писал
...
Рейтинг: 0 / 0
количество строк в текстбоксе
    #38521951
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
c 0 индекс в массиве, если явно не переопределили в заголовке модуля через OPTION BASE
...
Рейтинг: 0 / 0
количество строк в текстбоксе
    #38522150
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Onec 0 индекс в массиве, если явно не переопределили в заголовке модуля через OPTION BASEТы имеешь ввиду это?
Код: vbnet
1.
.lfFaceName = Me.Поле0.FontName & Chr$(0)

Это единственное, что напоминает массив...


guest_rusimport,

добавь в заголовок модуля
Код: vbnet
1.
2.
3.
Option Compare Database
Option Explicit
Option Base 0
...
Рейтинг: 0 / 0
количество строк в текстбоксе
    #38522167
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панургguest_rusimport,

добавь в заголовок модуля
Код: vbnet
1.
2.
3.
Option Compare Database
Option Explicit
Option Base 0



добавил - результат тот же
...
Рейтинг: 0 / 0
количество строк в текстбоксе
    #38522169
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_rusimportПанургguest_rusimport,

добавь в заголовок модуля
Код: vbnet
1.
2.
3.
Option Compare Database
Option Explicit
Option Base 0



добавил - результат тот же

т.е. опять считает не правильно
...
Рейтинг: 0 / 0
количество строк в текстбоксе
    #38522328
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_rusimport,

Почитал внимательно про функция DrawText и выяснил (раньше не обращал внимание на это, т.к. не было нужды), что с параметром DT_CALCRECT функция будет считать правильно, если самое длинное слово в строке не превышает ширину ограничивающего прямоугольника. Если надо подробней, то в гугл
Таким образом, предложенный способ будет работать с контролом достаточной ширины...
...
Рейтинг: 0 / 0
количество строк в текстбоксе
    #38522482
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург,

это всё замечательно, но что же делать со всеми возможными встречающимися комбинациями слов в рамках конкретного текстбокса (хотя бы для случая правого выравнивания текста, я уже не говорю про случаи другого выравнивания текста в текстбоксе)? Будет ли правильно работать алгоритм, предложенный вами (с учетом того, что вы написали выше)? Что то меня терзают сомнения
...
Рейтинг: 0 / 0
количество строк в текстбоксе
    #38522514
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_rusimport,

С нормальными словами работало вроде нормально. При указанных выше условиях.

Кстати, у Эплмана ( Дэн Эплман, Win32 API и Visual Basic ) я не нашёл уточнения про изменение ширины ограничивающего прямоугольника при применения функции DrawText с параметром DT_CALCRECT и DT_WORDBREAK . Есть только про высоту. Или я так смотрел...
...
Рейтинг: 0 / 0
количество строк в текстбоксе
    #38522537
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург,

ну, так или иначе , буду "докручивать" свой вариант, ибо, как я понял ничего другого не остается, в моем варианте хотя бы во всех 19 записях примера считает правильно, но я наткнулся еще на одну комбинацию слов , обработку , которой не знаю, как увязать с уже имеющимся алгоритмом, будет время - разберусь и с этим, спасибо вам за внимание к этому вопросу
...
Рейтинг: 0 / 0
количество строк в текстбоксе
    #38522562
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_rusimport,

Вот этот вариант вроде считает нормально. Протестируй...
Я не знал пр параметр DT_EDITCONTROL
...
Рейтинг: 0 / 0
количество строк в текстбоксе
    #38522604
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург,

только что увидел твое последнее сообщение, спасибо , что ответил, решил тестануть твой пример на самом сложном случае , и вот результат - последняя (20-я запись) - подсчет не верный , пример твой разобрал "по запчастям" , и вроде придраться не к чему, а считает не правильно, пример приложил (см. последнюю запись в таблице)
...
Рейтинг: 0 / 0
количество строк в текстбоксе
    #38522627
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург,

вроде заужать надо на один символ, тогда корректно

lngWidth = lngWidth - Abs(.lfHeight)

но еще потестирую, спасибо
...
Рейтинг: 0 / 0
количество строк в текстбоксе
    #38522640
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург,

блин , "то хвост увязнет, то нос отвалится" , чо то с этим коэффициентом заужения сделать надо, а что - не пойму (та же 20-я - последняя запись - считает не верно)
...
Рейтинг: 0 / 0
количество строк в текстбоксе
    #38522781
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург,

у меня сложилось уже впечатление после безуспешных моих попыток поправить твой последний пример для последнего случая, приведенного мной выше, что это какой-то логический "тупик" в алгоритме :( , очень хочется надеяться, что я ошибаюсь
...
Рейтинг: 0 / 0
количество строк в текстбоксе
    #38522782
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_rusimport,

Что тут сказать -

Я так понимаю, это проблема GDI и целых чисел. Подробнее смотри у Фень Юаня ( Фень Юань, Программирование графики для Windows ) в главе "Точность шрифтовых метрик".
...
Рейтинг: 0 / 0
количество строк в текстбоксе
    #38522786
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панургguest_rusimport,

Что тут сказать -

Я так понимаю, это проблема GDI и целых чисел. Подробнее смотри у Фень Юаня ( Фень Юань, Программирование графики для Windows ) в главе "Точность шрифтовых метрик".

кабы у меня была ещё эта книга....а на твой взгляд профессионала (каким , уж извини за грубую лесть , я тебя безусловно считаю), что либо поможет для приведенного тобой алгоритма? У этого Юаня есть "лечебное " средство?
...
Рейтинг: 0 / 0
количество строк в текстбоксе
    #38522788
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_rusimport,
guest_rusimportкабы у меня была ещё эта книгаОна есть в этих интернетах

guest_rusimportУ этого Юаня есть "лечебное " средство?Я сильно не смотрел, но возможно у него есть (многообещающе выглядят названия) в главах "Нетривиальный вывод текста". Посмотри, может чего и накопаешь. Только там не VBA(VB6).
guest_rusimportа на твой взгляд профессионалаЯ скорее любитель, но эта деятельность приносит некоторую прибыль...
...
Рейтинг: 0 / 0
количество строк в текстбоксе
    #38522798
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург,

Спасибо , книгу уже скачал, главу прочитал, пока ничего утешительного не нашел
...
Рейтинг: 0 / 0
количество строк в текстбоксе
    #38523532
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург,

Было время , внимательно перечитал главу "Нетривиальный вывод текста", особо заинтересовал раздел "Аппаратно-независимое форматирование текста", советуют использовать метод KTextFormator::DrawText класса KTextFormator, код класса приведен в этом разделе, но поскольку это не VB (VBA), разобраться с этим мне будет сложновато, буду признателен , если поможешь
...
Рейтинг: 0 / 0
количество строк в текстбоксе
    #38523757
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург,

Извини , если напряг тебя ненароком ... Реализовал тупым до безобразия способом, не поверишь :) (Только , если не будет работать , то надо, чтобы в Параметрах акса на вкладке Клавиатура стоял переход в начало поля при входе в поле)
...
Рейтинг: 0 / 0
количество строк в текстбоксе
    #38523843
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_rusimportИзвини , если напряг тебя ненарокомДа ни чего страшного, я не смотрел пока ещё. По работе много дел, сейчас некогда...

guest_rusimportРеализовал тупым до безобразия способом, не поверишьРаботает, ну и хорошо! Главное что-бы надёжно было.

guest_rusimport(Только , если не будет работать , то надо, чтобы в Параметрах акса на вкладке Клавиатура стоял переход в начало поля при входе в поле)Сделай так и не надо перенастраивать.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
...
Dim rows As Long
Me.Поле0.SetFocus
Me.Поле0.SelStart = 0
rows = 0
pos = Me.Поле0.SelStart
1:
...
...
Рейтинг: 0 / 0
количество строк в текстбоксе
    #38523857
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПанургСделай так и не надо перенастраивать.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
...
Dim rows As Long
Me.Поле0.SetFocus
Me.Поле0.SelStart = 0
rows = 0
pos = Me.Поле0.SelStart
1:
...



да это я потом сообразил, после того , когда "на радостях" пример выложил, тогда уж и в начало надо добавить

Код: vbnet
1.
IF Len(Me.Поле0) = 0 Then MsgBox "Количество строк - 0" : Exit Sub
...
Рейтинг: 0 / 0
количество строк в текстбоксе
    #38523923
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_rusimport,

похоже работает и на memo/rtf с разным размером шрифта
...
Рейтинг: 0 / 0
количество строк в текстбоксе
    #38524004
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКАguest_rusimport,

похоже работает и на memo/rtf с разным размером шрифта

так чо б ему не работать - я ж говорю метод "дубовый" (тупой) до безобразия :)
...
Рейтинг: 0 / 0
42 сообщений из 42, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / количество строк в текстбоксе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]