Components for Delphi and C++ Builder.

Перейти в английский форум
Перейти на EhLib.com
Текущее время: 15 июн 2024, 11:20

Часовой пояс: UTC




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
СообщениеДобавлено: 30 дек 2022, 14:54 
Не в сети

Зарегистрирован: 15 мар 2018, 15:31
Сообщений: 48
Подскажите пожалуйста как можно отловить событие OnClick в выпадающем списке TDBLookupComboboxEh.
Есть TDBLookupComboboxEh с выпадающим списком. В этом списке созданы два поля (Наименование и Примечание). В поле "Примечание" находится гиперссылка.
Как отловить событие щелчка по этой гиперссылке и естественно текст этой гиперссылки. События OnClick для выпадающего списка нету. Другими методами найти решение не удалось.
Картинка прилагается.
V.9.4.015
procedure Tfrm.cbb_postavDropDownBoxColumns1GetCellParams(Sender: TObject; EditMode: Boolean; Params: TColCellParamsEh);
begin
inherited;
Params.TextIsLink := true;
end;


Вложения:
2022-12-30_17-29-28.png
2022-12-30_17-29-28.png [ 18.81 KiB | Просмотров: 781 ]
Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 31 дек 2022, 15:22 
Не в сети

Зарегистрирован: 21 дек 2011, 18:48
Сообщений: 1569
Добрый день.

Скорее всего не получиться перехватить.
В гриде (выпадающем списке) захардкодено чтобы нажатие мышкой на выбранном элементе выбиралось значение из списка и закрывался список.

Даже если присвоить событие OnCellDataLinkClick в коде

Код:
procedure TForm1.FormCreate(Sender: TObject);
var
  Column: TColumnEh;
begin
  Column := (DBLookupComboboxEh1.DropDownBox.Columns[1] as TColumnEh);
  Column.OnCellDataLinkClick := DBGridEh2Columns1CellDataLinkClick;
end;


в TDBLookupGridEh.MouseUp данное событие перехватывается на себя.

_________________
Best regards
EhLib support Team


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 31 дек 2022, 16:33 
Не в сети

Зарегистрирован: 15 мар 2018, 15:31
Сообщений: 48
Спасибо. Через несколько часов после этого вопроса выкрутился так:

...
private
{ Private declarations }
column: TColumnEh; //Назначил переменную column
public
...
...
procedure Tfrm.cbb_postavDropDownBoxColumns1GetCellParams(Sender: TObject; EditMode: Boolean; Params: TColCellParamsEh);
begin
Params.TextIsLink := true;
column := TColumnEh(Sender);
end;

procedure Tfrm_AddRabot.cbb_postavDropDownBoxColumns0GetCellParams(
Sender: TObject; EditMode: Boolean; Params: TColCellParamsEh);
begin
column := TColumnEh(Sender);
end;

procedure Tfrm.cbb_postavCloseUp(Sender: TObject; Accept: Boolean); //При закрытии комбобокса получаю нужные данные.
begin
if column <> nil then
if TColumnEh(column).FieldName = 'prim' then
if pos('http', qrLpostav.fieldByName('prim').AsString) > 0 then
executeUrl(qrLpostav.fieldByName('prim').AsString)
else if (pos('mailto', qrLpostav.fieldByName('prim').AsString) > 0) then
executeUrl(qrLpostav.fieldByName('prim').AsString);
end;
...
Т.е. на двух колонках в процедурах GetCellParams я получаю колонку по которой был клик. А при закрытии отлавливаю и колонку и нужное мне поле prim.
В общем можно обойтись без клик. Работает приемлемо в моем случае.
executeUrl - это моя процедура с shellExecute(...)


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 02 янв 2023, 04:57 
Не в сети

Зарегистрирован: 15 мар 2018, 15:31
Сообщений: 48
К сожалению, это плохое решение. :?


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB