Ширина символа - ширина элемента контрола

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Ширина символа - ширина элемента контрола

Сообщение SLIM » 04.11.2008 (Вт) 0:35

Собственно проблема в следующем. Нужно установить размер столбца ListView равным самой широкой записи в столбце.
Все бы ничего, но вот как ширину текста узнать.
Да узнать то ине проблема - в твипах это TextWidth. А вот как исходя из этого установить ширину колонки? Может быть она в чем-то ином измеряется, может есть какие-то способы сопастовления ширины текста с размерами контролов, их элементов.
Смотрел поиск - похожего нашел мало. Задачи не те были. Еще нашел пример именно о приведении ширины столбца, но не хочу его использовать, хочу сам написать. Так как раз все очень странно. К ширине текста, изхмеренного TextWidth добавляется
---для первого столбца (когда перебирают ListItem-ы 12*15
---для отсальных (SubItem-ы) добавляется 6*15
Что и зачем это я не понимаю, но их пример работает
Пишите жизнь на чистовик.....переписать не удастся.....

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Ширина символа - ширина элемента контрола

Сообщение iGrok » 04.11.2008 (Вт) 1:07

SLIM писал(а):---для первого столбца (когда перебирают ListItem-ы 12*15
---для отсальных (SubItem-ы) добавляется 6*15

Скорей всего подобрано опытным путём.
Ширина там тоже в твипах. 15 твипов - это один пиксель. Т.е. первую колонку выделяют чуть больше (12px), остальные - чуть меньше(6px).
label:
cli
jmp label

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: Ширина символа - ширина элемента контрола

Сообщение SLIM » 04.11.2008 (Вт) 1:14

iGrok писал(а):Ширина там тоже в твипах. 15 твипов - это один пиксель. Т.е. первую колонку выделяют чуть больше (12px), остальные - чуть меньше(6px).

Хе.Ширина там это где? в Listview-е? Тогда странно как-то. Я когда пытаюсь также выделять - у меня точно не выходит. Может что-то в TextWidth не так
Пишите жизнь на чистовик.....переписать не удастся.....

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Ширина символа - ширина элемента контрола

Сообщение iGrok » 04.11.2008 (Вт) 2:24

Ну так ты посмотри, что за цифирь у тебя выдаёт TextWidth, и что за цифири в Width колонок ListView...

А что не выходит?
label:
cli
jmp label

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: Ширина символа - ширина элемента контрола

Сообщение SLIM » 04.11.2008 (Вт) 12:40

Так посмотрел уже. Связи пока не обнаружил. К примеру - ширина (Width) равна 1440, а ширина текста заголовка равна (TextWidth) 345. Если к величине ширины текста (325 ) прибавляю 6*15 - то изменений правтически никаких.
Пишите жизнь на чистовик.....переписать не удастся.....

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

Re: Ширина символа - ширина элемента контрола

Сообщение Хакер » 04.11.2008 (Вт) 14:15

Велосипед изобретаешь.

Отправь ListView сообщение LVM_SETCOLUMNWIDTH с флагом LVSCW_AUTOSIZE, и всё само собой сделается.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: Ширина символа - ширина элемента контрола

Сообщение SLIM » 04.11.2008 (Вт) 16:28

Вот елки палки. Этож API. SendMassage. Только что-то не выходит послать сообщение LVM_SETCOLUMNWIDTH. Не может найти что это такое.
я API в первый раз использую, может что-то не так делаю

[Добавлено]
Пробовал так
Код: Выделить всё
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Private Const LVM_FIRST As Integer = &O1000
Private Const LVM_SETCOLUMNWIDTH As Integer = (LVM_FIRST + 30)
Private Const LVSCW_AUTOSIZE As Integer = -1

Call SendMessage(Me.lstvReq.hwnd, LVM_SETCOLUMNWIDTH, LVSCW_AUTOSIZE, 0)

Все как и было осталось
Пишите жизнь на чистовик.....переписать не удастся.....

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Ширина символа - ширина элемента контрола

Сообщение iGrok » 04.11.2008 (Вт) 16:58

SLIM писал(а):Вот елки палки. Этож API. SendMassage. Только что-то не выходит послать сообщение LVM_SETCOLUMNWIDTH. Не может найти что это такое.
я API в первый раз использую, может что-то не так делаю

[Добавлено]
Пробовал так
Код: Выделить всё
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Private Const LVM_FIRST As Integer = &O1000
Private Const LVM_SETCOLUMNWIDTH As Integer = (LVM_FIRST + 30)
Private Const LVSCW_AUTOSIZE As Integer = -1

Call SendMessage(Me.lstvReq.hwnd, LVM_SETCOLUMNWIDTH, LVSCW_AUTOSIZE, 0)

Все как и было осталось

Ну естественно. У тебя параметры местами немного перепутаны..
http://msdn.microsoft.com/en-us/library/bb761163(VS.85).aspx
label:
cli
jmp label

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: Ширина символа - ширина элемента контрола

Сообщение SLIM » 04.11.2008 (Вт) 17:13

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

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Ширина символа - ширина элемента контрола

Сообщение iGrok » 04.11.2008 (Вт) 20:04

SLIM писал(а):Пробовал так
Код: Выделить всё
Call SendMessage(Me.lstvReq.hwnd, LVM_SETCOLUMNWIDTH, LVSCW_AUTOSIZE, 0)



Выдержки из инфо по ссылке (она почему-то криво вставилась.. Х.з. У меня уже в третий раз ссыки криво вставляются. )
Код: Выделить всё
Syntax
        (WPARAM) wParam,                     // = (WPARAM) (int) iCol
        (LPARAM) lParam                      // = (LPARAM) MAKELPARAM ((int) cx, 0)

Parameters
iCol
Zero-based index of a valid column. For list-view mode, this parameter must be set to zero.

cx
New width of the column, in pixels. For report-view mode, the following special values are supported:
LVSCW_AUTOSIZE
Automatically sizes the column.
LVSCW_AUTOSIZE_USEHEADER
Automatically sizes the column to fit the header text. If you use this value with the last column, its width is set to fill the remaining width of the list-view control.


Соответственно там, где у тебя LVSCW_AUTOSIZE должен быть номер колонки, а там, где 0 - LVSCW_AUTOSIZE.

Вот нормальная ссылка: http://msdn.microsoft.com/en-us/library/bb761163(VS.85).aspx
label:
cli
jmp label

Бяка
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 219
Зарегистрирован: 21.09.2005 (Ср) 21:28

Re: Ширина символа - ширина элемента контрола

Сообщение Бяка » 04.11.2008 (Вт) 20:12

а ты попробуй вместо Private Const LVM_FIRST = &01000 напечатать Private Const LVM_FIRST = &H1000 :lol:



и вызывать не
Call SendMessage(Me.lstvReq.hwnd, LVM_SETCOLUMNWIDTH, LVSCW_AUTOSIZE, 0)

а
SendMessage lstvReq.hwnd, LVM_SETCOLUMNWIDTH, 0&, LVSCW_AUTOSIZE
SendMessage lstvReq.hwnd, LVM_SETCOLUMNWIDTH, 1&, LVSCW_AUTOSIZE

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: Ширина символа - ширина элемента контрола

Сообщение SLIM » 04.11.2008 (Вт) 21:27

Гы , получилось. Спасибо
Пишите жизнь на чистовик.....переписать не удастся.....


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

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

Сейчас этот форум просматривают: Google-бот и гости: 29

    TopList