Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 ширину выпадающего списка сделать строго по ширине значений в нем  [new]
Yellin
Member

Откуда:
Сообщений: 48
При переходе от одной записи к другой меняется RowSource у комбобокса. Причем длина вариантов в выпадающем списке меняется значительно. Нужно сделать так, что-бы ширина выпадающего списка была строго по ширине значений в нем. Т.е., что-бы значение в выпавшем списке было видно оператору полностью.

Как это лучше всего сделать?
18 янв 06, 14:53    [2265984]     Ответить | Цитировать Сообщить модератору
 Re: ширину выпадающего списка сделать строго по ширине значений в нем  [new]
Rivkin Dmitry
Member

Откуда: Israel
Сообщений: 5500
Если я правильно понял, хочется динамически раздвигать или уменьшать ширину комбобокса, который, по-видимому, содержит только один столбец. И все только для того, чтобы оператор видел в раскрывающемя списке всю запись.
Возникают вопросы. А что если длина записи шире экрана?
А если в листе существуют одновременно очень короткик (или даже пустые) записи и очень длинные? А если с комбобоксом соседствуют другие контролы?

Акс не любит изменять динамически ширину колонок и самого листа в комбобоксе и листбоксе. Решением является, на мой взгляд, определения листа и колонок, как максимально возможных для длины записей в таблице. Легко определяется экспериментом.

Можно, конечно, попробовать вычислить среднюю ширину символа (pixel) в листе и, затем найти максимально длинную строку и вычислить ширину текста на экране (pixel), а затем
Me.MyCombo.ColumnWidths = n
Me.MyCombo.Width = n+ 227 'добавить на ширину скролбара
Работает
Проверять только, чтобы комбо не заскочил за границу формы - будет ругаться
18 янв 06, 16:16    [2266406]     Ответить | Цитировать Сообщить модератору
 Re: ширину выпадающего списка сделать строго по ширине значений в нем  [new]
Yellin
Member

Откуда:
Сообщений: 48
Rivkin Dmitry
Если я правильно понял, хочется динамически раздвигать или уменьшать ширину комбобокса, который, по-видимому, содержит только один столбец. И все только для того, чтобы оператор видел в раскрывающемя списке всю запись.
Возникают вопросы. А что если длина записи шире экрана?
А если в листе существуют одновременно очень короткик (или даже пустые) записи и очень длинные? А если с комбобоксом соседствуют другие контролы?

почти правильно. только ширину самого комбобокса менять не нужно, а нужно только варьировать ширину выпадающего под ним списка.

скажем на одной записи в списке значения:
1. да
2. нет

а при переходе на следующую запись RowSource меняется и варианты длинные:
1. Сетевая торговля монобрендовой продукцией, самостоятельное развитие сети
2. Сетевая торговля монобрендовой продукцией, развитие сети по принципу франчайзинга

это нужно для call-центра и нужно, что-бы оператор видел (и зачитывал) сразу все, не делая лишних движений.

можно, конечно ширину сделать спазу максимальной, но это не очень.


а как, зная тип и величину шрифта, узнать длину строки в пикселях или в твипах?
18 янв 06, 16:36    [2266510]     Ответить | Цитировать Сообщить модератору
 Re: ширину выпадающего списка сделать строго по ширине значений в нем  [new]
adv
Member

Откуда:
Сообщений: 3333
Yellin
а как, зная тип и величину шрифта, узнать длину строки в пикселях или в твипах?
Точно - никак.
В шрифте известного размера различные символы имеют различную ширину, также может различаться и межсимвольный интервал.
18 янв 06, 16:44    [2266538]     Ответить | Цитировать Сообщить модератору
 Re: ширину выпадающего списка сделать строго по ширине значений в нем  [new]
Yellin
Member

Откуда:
Сообщений: 48
В VC++ было такое. Сама строка - один из параметров.
18 янв 06, 16:46    [2266547]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить