как узнать ширину строки

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
m0use
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 11.04.2006 (Вт) 10:06

как узнать ширину строки

Сообщение m0use » 11.08.2006 (Пт) 16:20

есть ListVIew в виде lvwReport, в нём три столбца... строки которые туда добавляются разной длинны. как узнать ширину строки чтоб выровнять по ней ширину столбца? пробывал Form.TextWidth и Printer.TextWidth но выдают слишком маленькую длинну, выставлял ListView.Font.Size = Form.Font.Size
памагите плз

зы а лутьше может кто знает как переносы поставить... пробывал добавить в конец строки vbCr он добавляет аски символ а не переносит...

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 11.08.2006 (Пт) 17:04

Конец строки vbCrLf однако.
Если всё делать своими ручками, они скоро отвалятся !

onell
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 131
Зарегистрирован: 21.06.2006 (Ср) 16:04
Откуда: 2taev City

Re: как узнать ширину строки

Сообщение onell » 11.08.2006 (Пт) 17:13

Font.Size = Form.Font.Size


как это может повлиять на ширину столбцов в ListView?

BDSoft
Новичок
Новичок
 
Сообщения: 33
Зарегистрирован: 25.07.2006 (Вт) 21:24

Сообщение BDSoft » 11.08.2006 (Пт) 17:25

зы а лутьше может кто знает как переносы поставить... пробывал добавить в конец строки vbCr он добавляет аски символ а не переносит...

Я пользуюсь vbNewLine.

А ширину строки можно узнать показав его в Label у которого установлена AutoSize = true. Ширина лабла будет равна ширене текста.

m0use
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 11.04.2006 (Вт) 10:06

Сообщение m0use » 11.08.2006 (Пт) 17:27

Kovu писал(а):Конец строки vbCrLf однако.


аднака, не работает аднака... :(

onell писал(а):как это может повлиять на ширину столбцов в ListView?


никак, это влияет на ширину строки которая будет в столюце... ведь "W" восьмым шрифтом и "W" 500 шрифтом имеют разную ширину не так ли...

m0use
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 11.04.2006 (Вт) 10:06

Сообщение m0use » 11.08.2006 (Пт) 17:36

BDSoft писал(а):Я пользуюсь vbNewLine.

А ширину строки можно узнать показав его в Label у которого установлена AutoSize = true. Ширина лабла будет равна ширене текста.

опять же работает только если ListView отображается как lvwIcon...

думал про лейбл но хочется как-то красивше это сделать...

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 11.08.2006 (Пт) 17:43

Ну, автор топика мыслил верно логически, что если размер фонта будет один и тот же, то textwidth вернет ему, ширину текста, эквивалентную, что для формы что для столбца.

Serge Gavrilov
Начинающий
Начинающий
 
Сообщения: 19
Зарегистрирован: 26.01.2006 (Чт) 11:35

Сообщение Serge Gavrilov » 11.08.2006 (Пт) 18:18

RayShade писал(а):Ну, автор топика мыслил верно логически, что если размер фонта будет один и тот же, то textwidth вернет ему, ширину текста, эквивалентную, что для формы что для столбца.

Да, конечно. Только автор видимо забыл добавить некоторый размер на отступы.

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 11.08.2006 (Пт) 21:38

m0use писал(а): аднака, не работает аднака... :(


А можно поинтересоваться, где ты новую строку делаешь? Уж не в строке ли листвью?
Если всё делать своими ручками, они скоро отвалятся !

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 11.08.2006 (Пт) 22:14

vbCrLf - не конец строки, а так сказать, её первод.

Для получения TextWidth советую использовать спрятаный PictureBox.

Ну т.е.

Код: Выделить всё
GetTextWidthOfSpecialFont(xFont as STDFont, ByVal sString as string)
set pbHiddenPictureBox.Font = xFont
GetTestWidthOfSpecialFont = pbHiddenPictureBox.TextWidth(sString)
End Function


ЗЫ
Serge Gavrilov

Так вот почему было много вариантов "Я сам - GSerg". :wink:
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

MeMBus
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 450
Зарегистрирован: 23.02.2005 (Ср) 7:03
Откуда: Из леса...

Сообщение MeMBus » 12.08.2006 (Сб) 10:37

Хакер писал(а):vbCrLf - не конец строки, а так сказать, её перевод.

vbcrlf это обозначение конца строки и перевод курсора на новую строку, а не просто перевод
Бороться и искать, найти и перепрятать!

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 12.08.2006 (Сб) 10:45

Если уж стремится к точности, vbCrLf есть комбинация символа возврата каретки и перевода строки. Конец строки это все же нечто другое, нуль-терминатор, например.
Весь мир матрица, а мы в нем потоки байтов!

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 12.08.2006 (Сб) 10:47

MeMBus << !Viper!
угу. Нечего тут уточнения неправильные делать :wink:
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 12.08.2006 (Сб) 10:59

что есть это:
Хакер писал(а):MeMBus << !Viper!
?
Весь мир матрица, а мы в нем потоки байтов!

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 12.08.2006 (Сб) 11:01

это, это типа
cout<<"Hello word!" ; :lol:

ну это значит
"Вот Viper тебе сказал, +отквоченный текст Viper-а+"
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 12.08.2006 (Сб) 11:14

Мдя©! Такого применения оператора вставки, он же оператор сдвига я еще не видел! :D
Весь мир матрица, а мы в нем потоки байтов!

MeMBus
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 450
Зарегистрирован: 23.02.2005 (Ср) 7:03
Откуда: Из леса...

Сообщение MeMBus » 12.08.2006 (Сб) 14:19

Хакер писал(а):MeMBus << !Viper!

Учтемс :)
Бороться и искать, найти и перепрятать!

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 14.08.2006 (Пн) 10:08

Хакер писал(а):Для получения TextWidth советую использовать спрятаный PictureBox.

Чем тебя не устраивает форма?
Lasciate ogni speranza, voi ch'entrate.

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 14.08.2006 (Пн) 10:22

Чем тебя не устраивает форма?
Может тем, что на форме можно увидеть этот "темповый" текст? :wink:
А я все практикую лечение травами...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 14.08.2006 (Пн) 10:25

Поясни свою мысль.
Зачем на форму вообще выводить какой-либо текст, если есть TextWidth?
Lasciate ogni speranza, voi ch'entrate.

m0use
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 11.04.2006 (Вт) 10:06

Сообщение m0use » 14.08.2006 (Пн) 14:38

Да, конечно. Только автор видимо забыл добавить некоторый размер на отступы

нет, размер который выдает TextWidth слишком маленький чтоб нехватало только на отступы

А можно поинтересоваться, где ты новую строку делаешь? Уж не в строке ли листвью?

Код: Выделить всё
tmpText = "БЛАБЛАБЛА" & vbCrlf ' vbCr
ListView.ListItems.Add , , tmpText

вот так

зы данке всем кто откликнулся...
переходим на следующий уровень
возможно ли унаследовать от лейбла автосайз??? а вобще в вба как с этим делом обстоит???

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 14.08.2006 (Пн) 14:59

возможно ли унаследовать от лейбла автосайз???
Что значит унаследовать? Поясни.
А я все практикую лечение травами...

m0use
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 11.04.2006 (Вт) 10:06

Сообщение m0use » 14.08.2006 (Пн) 15:23

Что значит унаследовать? Поясни.

это когда один объект получает свойство или метод другого...

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 14.08.2006 (Пн) 15:24

Такого не бывает. Класс может унаследовать свойство или метод другого... в принципе...

Но не объект ListView у Label-а
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Serge Gavrilov
Начинающий
Начинающий
 
Сообщения: 19
Зарегистрирован: 26.01.2006 (Чт) 11:35

Сообщение Serge Gavrilov » 14.08.2006 (Пн) 17:51

m0use писал(а):
Да, конечно. Только автор видимо забыл добавить некоторый размер на отступы

нет, размер который выдает TextWidth слишком маленький чтоб нехватало только на отступы
Я проверил, работает нормально, достаточно, например, при определении ширины добавить конечные пробелы к строке для TextWidth.


Вернуться в Visual Basic 1–6

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

Сейчас этот форум просматривают: AhrefsBot и гости: 86

    TopList