-
Доброе время суток, Пользуюсь компонентом «DBLookupCombobox» необходимо сделать так, чтоб он позволял бы выводить всплывающую подсказку в выпадающем списке, если элемент списка не влазит по длине в сам список. просмотрел подобные темы, и понял, что с 2004г не нашли ничего лучше, как наследовать стандартный компонент «DBLookupCombobox», дописливать его самому и ловить сообщения "WM_CTLCOLORLISTBOX". или что-то появилось новенькое?
Заранее спасибо за ответ
-
> 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.
-
Да, это работает, но в " 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", выделенный элемент в выпадающем списке не подсвечивается, и данный код работает только эсли водить мышкой по выпадшему списку с НАЖАТОЙ ее левой кнопкой
-
А вот есть такой компонент "TDBLookupComboBoxEh" из библиотеки "EhLib" - у него все высвечивается и код работает как нужно.
Ну это все равно немного не то, лучше все таки "hint"
|