"EhLib.Com"
https://forum.ehlib.com/ru/

Просьба помочь как отловить событие OnClick в DropDownBox
https://forum.ehlib.com/ru/viewtopic.php?f=4&t=3294
Страница 1 из 1

Автор:  Alexsashka [ 30 дек 2022, 14:54 ]
Заголовок сообщения:  Просьба помочь как отловить событие OnClick в DropDownBox

Подскажите пожалуйста как можно отловить событие 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 | Просмотров: 675 ]

Автор:  EhLibSupport [ 31 дек 2022, 15:22 ]
Заголовок сообщения:  Re: Просьба помочь как отловить событие OnClick в DropDownBo

Добрый день.

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

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

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


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

Автор:  Alexsashka [ 31 дек 2022, 16:33 ]
Заголовок сообщения:  Re: Просьба помочь как отловить событие OnClick в DropDownBo

Спасибо. Через несколько часов после этого вопроса выкрутился так:

...
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(...)

Автор:  Alexsashka [ 02 янв 2023, 04:57 ]
Заголовок сообщения:  Re: Просьба помочь как отловить событие OnClick в DropDownBo

К сожалению, это плохое решение. :?

Страница 1 из 1 Часовой пояс: UTC
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/