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

Как сделать событие OnAfterRowDetailPanelShow ?
https://forum.ehlib.com/ru/viewtopic.php?f=4&t=3257
Страница 1 из 1

Автор:  t0xin [ 11 сен 2022, 16:10 ]
Заголовок сообщения:  Как сделать событие OnAfterRowDetailPanelShow ?

Приветствую,
А можете показать как сделать наследника DBGridEh с событием OnAfterRowDetailPanelShow ?

Автор:  EhLibSupport [ 06 окт 2022, 09:01 ]
Заголовок сообщения:  Re: Как сделать событие OnAfterRowDetailPanelShow ?

Добрый день.

Наследованием, скорее всего, не получится.
Только если модификацией в методе

procedure TRowDetailPanelEh.SetVisible(const Value: Boolean);

Новое события вставлять после метода
FGrid.UpdateRowDetailPanel;

Автор:  t0xin [ 06 окт 2022, 17:00 ]
Заголовок сообщения:  Re: Как сделать событие OnAfterRowDetailPanelShow ?

Спасибо за ответ, но не хотелось бы править исходники.
А можете внедрить это событие в следующем релизе ?

Поясню зачем это надо: в моём проекте панельке деталей присваивается родительство формы которая грузится из dll.
Эта форма грузится каждый раз при открытии панели и освобождается после закрытия.
А проблема в том что единственное событие открытия панели_деталей срабатывает слишком рано для того что бы можно было
присвоить ей родительство формы из dll.

Вот и приходится, либо с каждым релизом править исходники добавляя новое событие, либо после открытия панели деталей делать паузу, а затем грузить форму.

Автор:  EhLibSupport [ 07 окт 2022, 08:03 ]
Заголовок сообщения:  Re: Как сделать событие OnAfterRowDetailPanelShow ?

Добрый день.

Вы можете описать проблему так, чтобы еще можно было точно также воспроизвести и на тестовом проекте.

Согласно нашим тестам, свойство DBGridEh1.RowDetailPanelControl.Handle уже доступно для запроса в событии OnRowDetailPanelShow

Код:
procedure TForm1.DBGridEh1RowDetailPanelShow(Sender: TCustomDBGridEh;
  var CanShow: Boolean);
var
  AHandle: HWND;
begin
  AHandle := DBGridEh1.RowDetailPanelControl.Handle;
  if (AHandle <> 0) then
    ShowMessage('Ok');
end;

Автор:  t0xin [ 08 окт 2022, 20:23 ]
Заголовок сообщения:  Re: Как сделать событие OnAfterRowDetailPanelShow ?

Вот навеял демку.

Небольшое пояснение:

DLL-ка с формой реализована немного не стандартно, и отображение этой dll-ки тоже немного не стандартное,
это связанно с тем что в dll-ке используется SpreadSheet от DevExpress и там есть свои нюансы.
Как бы то ни было Dll-ку прикладываю вместе с исходником.

По поводу тестового проекта: сильно заморачиваться не стал, просто сделал максимально по быстрому, что бы
было видно что к чему.

Запускаете проект, раскрываете детали любой записи и вуаля пусто, потом если откроете другую запись форма отобразится.

прикрепить файлы не смог тк > 256 kb, поэтому залил сюда
https://www.upload.ee/files/14564613/test-db.rar.html
https://www.upload.ee/files/14564615/DL ... t.rar.html

Автор:  EhLibSupport [ 11 окт 2022, 08:25 ]
Заголовок сообщения:  Re: Как сделать событие OnAfterRowDetailPanelShow ?

Добрый день.

А есть возможность скомпилировать проект если не установлены dx компоненты?

Автор:  t0xin [ 28 окт 2022, 09:35 ]
Заголовок сообщения:  Re: Как сделать событие OnAfterRowDetailPanelShow ?

Добрый день, не было времени ответить.

Я вас правильно понимаю, всё тоже самое но без DevExpress ?
Если да то вот.
Вложение:
dll-test.rar [95.02 KiB]
Скачиваний: 48


Напомню, что нестандартная загрузка формы из dll связанна с особеностями devexpress который в противном случаи работать не будет.

и маленький фидосик
Вложение:
20221028_123242.rar [82.96 KiB]
Скачиваний: 45

Автор:  EhLibSupport [ 09 ноя 2022, 03:51 ]
Заголовок сообщения:  Re: Как сделать событие OnAfterRowDetailPanelShow ?

Добрый день.

Напишите, пожалуйста, как надо донастраивать проекты client и dll чтобы они скомпилировались и запустились.
Проект dll\DLLProject.dpr компилируется и формируется DLLProject.dll
Проект client\Project1.dproj не компилируется т.к. не находит файлы SpreadSheetUnit, SpreadSheetUtilsUnit
Эти файлы находится в другой папке - в папке dll.
Надо прописывать пути из проекта Project1.dproj в проект dll\DLLProject.dpr?

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