"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;
|
Автор: | 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/ |