Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ширина списка в ComboBox, как изменить? 
:(
    Опции темы
LipatOFF
Дата 26.8.2007, 09:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 6.7.2007

Репутация: нет
Всего: нет



Как можно изменить ширину выпадающего списка не изменяя ширину самого ComboBox или как в него запихнуть горизонтальное колесо прокрутки? 
Цель: чтобы можно было полностью проситать элементы, которые по длинне не вмещаются в окно списка?  smile 
PM MAIL   Вверх
volvo877
Дата 26.8.2007, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 9
Всего: 116



Код

  PostMessage(ComboBox1.Handle, CB_SETDROPPEDWIDTH, 300, 0); 
  // Вместо 300 можешь поставить другую ширину

PM MAIL   Вверх
LipatOFF
Дата 26.8.2007, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 6.7.2007

Репутация: нет
Всего: нет



 smile ааа, спасиба!  smile 
PM MAIL   Вверх
iskatel2
Дата 29.11.2007, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 11.5.2006
Где: 58 RU

Репутация: нет
Всего: нет



А возможно в ComboBox внедрить горизонтальный скролл или выводить подсказку содержащую текст той строки которая не умещается в окне выбора?
т.к. увеличивать ширину всего компанента не позволяет форма, а делать более мелкий шрифт некорректно по отношению к пользователю smile 
(если не затруднит ответьте с подробными примерами)
PM MAIL ICQ   Вверх
iskatel2
Дата 30.11.2007, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 11.5.2006
Где: 58 RU

Репутация: нет
Всего: нет



в DRKB нашол следующую статью:
Цитата

В практике программирования довольно часто встречается ситуация когда информация, предназначенная для отображения в имеющемся компоненте, не помещается по длине. С подобным обычно сталкиваются в работе с базами данных. В таких случая выручают всплывающие подсказки – Hint. Но, в некоторых случаях, даже такая возможность не спасает. К таким ситуациям можно отнести работу с выпадающим списком в DBComboBox. Представьте, что размер поля увеличился, а изменить ширину DBComboBox на форме, по тем или иным причинам, нет возможности. Конечно, можно увеличить ширину выпадающего списка. Но выглядит это не всегда красиво да и не делает чести разработчику. Предлагаемая идея позволит создать более изящный компонент. Взгляните на рисунок: 
В демонстрационном примере в выпадающем списке появляется всплывающая подсказка для строки не помещающейся по длине. 

При работе с Hint нужно помнить – использовать ToolTip из API, бесполезная затея. Delphi игнорирует любые попытки работы ним. Для этих целей в Delphi предусмотрен класс – THintWindow. 

В своем компоненте объявите FTipHint:

Code:
 
type

TVSComboBox = class(TCustomComboBox)



private

FHint: THintWindow;


protected

procedure WMCTLCOLORLISTBOX(var Message: TMessage);

message WM_CTLCOLORLISTBOX;

и не забудьте выполнить инициализацию в конструкторе вашего компонента:

Code:
 
begin

inherited Create(AOwner);

FHint := THintWindow.Create(Self);

Чтобы получить информацию об активной строке в выпадающем списке ComboBox перехватите сообщение WM_CTLCOLORLISTBOX. В процедуре сообщения анализируйте - если длина строки больше ширины выпадающего списка – передайте "длинную" строку в ваш Hint и активируйте его:

Code:
 
FHint.ActivateHint(TextRC, Items[ItemIndex]);

где

TextRC – прямоугольник для строки подсказки

Items[ItemIndex] – "длинная" строка из выпадающего списка 

Если активная строка в выпадающем списке "короткая" – спрячьте Hint:

Code:
 
FHint.ReleaseHandle;



Особенно непонятен механизм анализа длины активной строки в ComboBox при перехвате сообщения WM_CTLCOLORLISTBOX

если комуто не лень обьяснить новичку как всё это делается было бы очень здорово
заранее благодарю.......
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

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

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1009 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.