Components for Delphi and C++ Builder.

Перейти в английский форум
Перейти на EhLib.com
Текущее время: 27 апр 2024, 13:36

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




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
СообщениеДобавлено: 10 фев 2022, 12:43 
Не в сети

Зарегистрирован: 27 янв 2012, 09:40
Сообщений: 65
Откуда: Питер
Добрый день!

Есть известная методика выборки и автоподсветки желтым искомого текста с помощью ApplySearchFilter через такой код:
Код:
with МойГрид do
begin
  SearchPanel.Active:=True;
  SearchPanel.SearchingText:='Искомая подстрока';
  SearchPanel.ApplySearchFilter;
end;


Однако, в некоторых случаях все же требуется иное поведение. Поясню. У меня есть две сетки, у которых датасеты состоят в классических мастер-детэйл отношениях (таблица организаций - таблица контактных лиц). И алгоритм выборки\фильтрации реализован так, что искомый текст (который задается в едином поисковом контроле) может быть в обоих таблицах, а может быть только в какой то одной. Таким образом, если искомый текст есть в подчиненной (контактные лица), то подсветить искомое нужно только в ней.
Таким образом, ApplySearchFilter с его подсветкой здесь не вполне подходит, поскольку он работает строго только по одной таблице. Да и, кроме того, выборка у меня делается своими средствами. Все что мне нужно, это получить доступ к обработчикам подсветки, типа DrawHighlightSubstrs, но напрямую из моих сеток. Возможно ли это и как лучше реализовать, из какого события ?


Последний раз редактировалось Cinemaizer 10 фев 2022, 20:55, всего редактировалось 2 раз(а).

Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 10 фев 2022, 12:43 
Не в сети

Зарегистрирован: 27 янв 2012, 09:40
Сообщений: 65
Откуда: Питер
Приложил скрин для наглядности


Вложения:
2022-02-10_15-53-23.png
2022-02-10_15-53-23.png [ 47.13 KiB | Просмотров: 1226 ]
Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 14 фев 2022, 17:46 
Не в сети

Зарегистрирован: 27 янв 2012, 09:40
Сообщений: 65
Откуда: Питер
Господа разработчики, пятый день тема висит, определенно вы ее видели. Можно ответ получить?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 17 фев 2022, 09:55 
Не в сети

Зарегистрирован: 27 янв 2012, 09:40
Сообщений: 65
Откуда: Питер
Я как раз недавно специально на про-версию (с исходниками) мигрировал, чтобы разобраться с подсветкой, но самостоятельно не смог. Пока времени на это нет, поэтому помощи попросил. Печаль :roll:


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 22 фев 2022, 18:39 
Не в сети

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

Для подсветки текста одновременно в нескольких гридах можно использовать режиме SearchPanel.Location = splExternal

Установите внешний режим SearchPanel'и
DBGridEh1.SearchPanel.Location := splExternal;
Присвойте текст и активируйте режим SearchPanel
DBGridEh1.SearchPanel.SearchingText := DBEditEh1.Text;
DBGridEh1.SearchPanel.Active := True;

Вот примерный код реализации:

Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Caption := Caption + ' ' + EhLibVerInfo + ' ' + EhLibBuildInfo;
  DBGridEh1.SearchPanel.Location := splExternal;
  DBGridEh2.SearchPanel.Location := splExternal;
end;

procedure TForm1.DBEditEh1Enter(Sender: TObject);
begin
  DBGridEh1.SearchPanel.SearchingText := DBEditEh1.Text;
  DBGridEh1.SearchPanel.Active := True;
  DBGridEh2.SearchPanel.SearchingText := DBEditEh1.Text;
  DBGridEh2.SearchPanel.Active := True;
end;

procedure TForm1.DBEditEh1Exit(Sender: TObject);
begin
  DBGridEh1.SearchPanel.Active := False;
  DBGridEh1.SearchPanel.SearchingText := '';
  DBGridEh2.SearchPanel.Active := False;
  DBGridEh2.SearchPanel.SearchingText := '';
end;

procedure TForm1.DBEditEh1Change(Sender: TObject);
begin
  DBGridEh1.SearchPanel.SearchingText := DBEditEh1.Text;
  DBGridEh2.SearchPanel.SearchingText := DBEditEh1.Text;
end;


Код для перехода на следующую найденную ячейку в нужном гриде пока не рассматриваем.


Вложения:
sshot-236.png
sshot-236.png [ 14.38 KiB | Просмотров: 1033 ]

_________________
Best regards
EhLib support Team
Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 22 фев 2022, 20:47 
Не в сети

Зарегистрирован: 27 янв 2012, 09:40
Сообщений: 65
Откуда: Питер
Понял. Спасибо большое! Попробую


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

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


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

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


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

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