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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Combobox, F1 
:(
    Опции темы
dimkaspaun
  Дата 25.8.2006, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 24.5.2006
Где: Новосибирск

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



помогите как сделать чтобы combobox показывал весь техт когда открывается поля с текстом а он не влазиет в него и не видно что дальше шири combobox не могу сделать и так длинный.
PM MAIL   Вверх
Pakshin A. S.
Дата 25.8.2006, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Компонент, реализующий Hint в выпадающем списке ComboBox:

Код

type
TVSComboBox = class(TCustomComboBox)
...
private
 FHint: THintWindow;
...
protected
 procedure WMCTLCOLORLISTBOX(var Message: TMessage); message WM_CTLCOLORLISTBOX;
...


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

...
begin
inherited Create(AOwner);
FHint:=THintWindow.Create(Self);
...

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

FHint.ActivateHint(TextRc, Items[ItemIndex]);

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

FHint.ReleaseHandle;


Добавлено @ 11:37 
Эт с книжечки пример... Не тестил ни разу...
PM   Вверх
Yanis
Дата 25.8.2006, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

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



Код
procedure TForm1.ComboBox1DropDown(Sender: TObject);
var
  i, max: Integer;
begin
  if ComboBox1.Items.Count = 0 then
    exit;

  max := ComboBox1.Canvas.TextWidth(ComboBox1.Items.Strings[0]);

  for i := 1 to ComboBox1.Items.Count - 1 do
    if ComboBox1.Canvas.TextWidth(ComboBox1.Items.Strings[i]) > max then
      max := ComboBox1.Canvas.TextWidth(ComboBox1.Items.Strings[i]);

  SendMessage(ComboBox1.Handle, CB_SETDROPPEDWIDTH,
              max + ComboBox1.Canvas.TextWidth(ComboBox1.Items.Strings[0][1]),
              0);
end;



--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
dimkaspaun
Дата 25.8.2006, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 24.5.2006
Где: Новосибирск

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



по чему не работает не твой совет Yanis не твой совет Pakshin A. S
PM MAIL   Вверх
Yanis
Дата 25.8.2006, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

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



dimkaspaun
Это "по чему" же? Показывай код, как применяешь, потому как у меня всё работает.


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
dimkaspaun
Дата 25.8.2006, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 24.5.2006
Где: Новосибирск

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



просто ошибок не выдаёт а как было так все и осталось а куда надо код вставлять в форму или в combobox.
PM MAIL   Вверх
Yanis
Дата 25.8.2006, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

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



dimkaspaun
Я бы сказал куда, если бы мы с тобой пиво за одним столом пили smile Код который я привёл (причём это там написано) нужно вставить в событие ComboBox'а OnDropDown.


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
dimkaspaun
Дата 28.8.2006, 06:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 24.5.2006
Где: Новосибирск

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



послушай Yanis а почему он не работает в DBCombobox.  а в COMBOX отлично работает.
PM MAIL   Вверх
bartram
Дата 28.8.2006, 07:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1606
Регистрация: 22.2.2004
Где: Russia, Samara

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



Цитата(dimkaspaun @  28.8.2006,  06:57 Найти цитируемый пост)
послушай Yanis а почему он не работает в DBCombobox.  а в COMBOX отлично работает.

Потому что компоненты по сути разные



--------------------
В каждом из нас спит гений, но с каждым днем все крепче ;-)
bartram.ru
Twitter
user posted image 

PM MAIL ICQ   Вверх
Yanis
Дата 28.8.2006, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

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



Цитата(dimkaspaun @  28.8.2006,  07:57 Найти цитируемый пост)
послушай Yanis а почему он не работает в DBCombobox.  а в COMBOX отлично работает.

Для DB аналога ComboBox'а этот код тоже работает. Только что сам проверил....

Цитата(bartram @  28.8.2006,  08:29 Найти цитируемый пост)
Потому что компоненты по сути разные

Иожет по сути да, а вооще они дети TCustomComboBox'а.


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
dimkaspaun
Дата 28.8.2006, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 24.5.2006
Где: Новосибирск

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



Послушай Yanis блин если текст заносится в ITEMS т.е. сам берёш и набираеш и он там постоянно а у меня он заносится с таблицы в items каждый раз новый корочи вот так

Код

begin
with Form4.Table1 do
begin
close;
open;
while not EOF do
begin
Form4.DBComboBox1.items.add(FieldByName('CPU').AsString);
next;
end;
end;

 
может по этому не работает?   
PM MAIL   Вверх
dimkaspaun
Дата 28.8.2006, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 24.5.2006
Где: Новосибирск

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



ВСЕМ СПАСИБО. Я сделал чтобы за работало я тупа забил в ITEMS большое количество знаков и теперь он открывается очень длинный.

А кстати левая тема почему у всех на форуме есть картинки под именен а уменя нет?
PM MAIL   Вверх
Yanis
Дата 28.8.2006, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

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



dimkaspaun
В каком событии ты делаешь SendMessage?


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
dimkaspaun
Дата 28.8.2006, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 24.5.2006
Где: Новосибирск

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



Цитата

В каком событии ты делаешь SendMessage?


Yanis ты сейчас с кем разговариваеш объясни ты очем.
PM MAIL   Вверх
Yanis
Дата 28.8.2006, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

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



Цитата(dimkaspaun @  28.8.2006,  12:13 Найти цитируемый пост)
Yanis ты сейчас с кем разговариваеш

dimkaspaun

Цитата(dimkaspaun @  28.8.2006,  12:13 Найти цитируемый пост)
объясни ты очем. 

Да как уж тут объяснить то.... Ты когда на форме 2 раза кликаешь генериется событие OnFormCreate под названием FormCreate. А код, который я привёл нужно засунуть в OnDropDown компонента DBComboBox.

Добавлено @ 11:45 
Цитата(Yanis @  25.8.2006,  12:38 Найти цитируемый пост)
procedure TForm1.ComboBox1DropDown(Sender: TObject);




--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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