Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник
Коллекция курьезных вопросов из форумов
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

DBLookupCombobox – всплывающая подсказка элементов списка


KBO78   (11.01.19 15:27

Доброе время суток,
Пользуюсь компонентом «DBLookupCombobox» необходимо сделать так, чтоб он позволял бы выводить всплывающую подсказку в выпадающем списке, если элемент списка не влазит по длине в сам список.
просмотрел подобные темы, и понял, что с 2004г не нашли ничего лучше, как наследовать стандартный компонент «DBLookupCombobox», дописливать его самому и ловить сообщения "WM_CTLCOLORLISTBOX". или что-то появилось новенькое?

Заранее спасибо за ответ


Leonid Troyanovsky ©   (12.01.19 10:35[1]


> KBO78   (11.01.19 15:27) 

>  дописливать его самому и ловить сообщения "WM_CTLCOLORLISTBOX"

Есть старинный способ вывода хинта в статусную строку примерно так:

procedure TForm1.ApplicationEvents1Idle(Sender: TObject;
 var Done: Boolean); // TApplicationEvents
var
 i: Longint;
begin
  if ActiveControl is TComboBox then
    with TComboBox(ActiveControl) do
      begin
        if DroppedDown then
          begin
            i:= Perform(CB_GETCURSEL, 0, 0);
            if i >= 0 then
              StatusBar1.SimpleText := Items[i]
            else
              StatusBar1.SimpleText := '';
          end;
      end;
end;

--
Regards, LVT.


KBO78   (12.01.19 14:51[2]

Да, это работает, но в "DBLookupCombobox" наполовину, с учетом "DBLookupCombobox", ваш код выглядит так

if ActiveControl is TDBLookupComboBox then
    with TDBLookupComboBox(ActiveControl) do
      begin
          if ListVisible then
          begin
            i:= Perform(CB_GETCURSEL, 0, 0);
            if i >= 0 then
            begin
              Label1.Caption := IBDataSet1.FieldByName('DESCRIPTION').AsString;
              StatusBar1.Panels[0].Text := IBDataSet1.FieldByName('DESCRIPTION').AsString;
            end
            else
              StatusBar1.Panels[0].Text := '';
          end;
      end;


но в отличии от "Combobox" в "DBLookupCombobox", выделенный элемент в выпадающем списке не подсвечивается, и данный код работает только эсли водить мышкой по выпадшему списку с НАЖАТОЙ ее левой кнопкой


KBO78   (12.01.19 14:59[3]

А вот есть такой компонент "TDBLookupComboBoxEh" из библиотеки "EhLib" - у него все высвечивается и код работает как нужно.

Ну это все равно немного не то, лучше все таки "hint"


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо