Последняя версия DataExpress 26.10.11

Изображение Скачать | Изображение Что нового? | Демо

Индикация в запросе

Предложения по новому функционалу и развитию существующего.
Подфорумы: Изображение Закрытые вопросы | Изображение Платная доработка DataExpress
Аватара пользователя
AlekseiM
Новичок
Сообщения: 18
Зарегистрирован: 19 сен 2024, 16:35
Откуда: Екатеринбург
Благодарил (а): 8 раз
Поблагодарили: 4 раза

Индикация в запросе

Сообщение AlekseiM » 19 сен 2026, 10:45

Было бы здорово добавить небольшую стрелочку-индикатор внизу таблицы, если строки не влезают в неё полностью. Сейчас пользователям не всегда понятно, что таблицу можно прокрутить вниз. Из-за этого они не замечают часть данных, что потом приводит к путанице и ошибкам на следующих этапах работы.
На старых мониторах с небольшим разрешением уместить всю информацию на одном экране физически не получается. К тому же, обычно записей в таблице немного, и пользователи к этому привыкли. Когда же строк становится больше, люди по привычке думают, что видят весь список, и просто не замечают, что появилась прокрутка.
Индикатор.jpg
Индикатор.jpg (42.56 КБ) 562 просмотра

Аватара пользователя
admin
Разработчик
Сообщения: 8038
Зарегистрирован: 14 мар 2016, 11:32
Откуда: Ленинградская
Благодарил (а): 292 раза
Поблагодарили: 1918 раз

Индикация в запросе

Сообщение admin » 19 сен 2026, 19:03

Как-то пробовал дорисовать еще одну строку - не вышло. Может хотя бы индикатор.

neznayka-na-lune
Интересующийся
Сообщения: 130
Зарегистрирован: 22 дек 2025, 16:10
Благодарил (а): 22 раза
Поблагодарили: 17 раз

Индикация в запросе

Сообщение neznayka-na-lune » 19 сен 2026, 21:59

О, прошу прощения! Теперь я отчетливо вижу структуру вашего репозитория dataexpress.
По расширениям файлов .lpi и .lfm становится предельно ясно, что вы пишете на Lazarus (Free Pascal). Судя по файлу README.md, используется свежая версия Lazarus 4.5.
В списке файлов я сразу заметил несколько критически важных модулей, которые отвечают за вывод таблиц, форм и списков:

1. dialoggrid.pas — судя по названию, это кастомный или обернутый компонент сетки (Grid) для диалоговых окон.
2. dxctrls.pas — здесь, скорее всего, объявлены ваши кастомные элементы управления (DataExpress Controls).
3. queryform.pas (или аналогичная форма запросов, скрытая под списком View all files).

Так как в Lazarus по умолчанию для таблиц используется TDBGrid или TStringGrid из библиотеки LCL (Lazarus Component Library), они ведут себя немного иначе, чем в Delphi. Поведение скроллбара в LCL сильно привязано к виджетсету (Win32/GTK/Qt).
Пользователь на форуме как раз упомянул: «На старых мониторах с небольшим разрешением... пользователи по привычке думают, что видят весь список». В Windows-виджетсете Lazarus полоса прокрутки может не появляться, пока строк не станет критически много, либо она сливается с рамкой интерфейса.
Вот 2 конкретных пути, как решить эту проблему прямо в коде ваших файлов:
------------------------------
## Разбор решений для Lazarus / LCL##
Вариант 1. Если таблицы наследуются от TCustomGrid / TStringGrid (в dialoggrid.pas или dxctrls.pas)
В LCL у класса TCustomGrid есть замечательное свойство Options. Вы можете принудительно заставить сетку показывать тонкую линию недорисованной строки или зафиксировать скроллбар.
Самый изящный способ в Lazarus без рисования стрелок — это запретить строкам «идеально» вписываться в высоту, чтобы нижняя строка всегда обрезалась. В Lazarus это можно сделать, управляя высотой контента:

// В месте инициализации или создания вашей сетки (например, в конструкторе Create в dialoggrid.pas)
// Отключаем автоматический скролл до ровных границ, если он включен
Options := Options + [goFixedVertLine, goVertLine];

// Либо принудительно включаем постоянный скроллбар, который в Lazarus на Win32
// выглядит серым (неактивным), когда данных мало, и активируется, когда они появляются.
// Это не даст пользователю "зевнуть" появление прокрутки.
ScrollBars := ssBoth;

##
Вариант 2. Отрисовка индикатора «▼» (Стрелочки) в методе DrawCell
Если вы хотите дать пользователю именно то, о чем он просит (стрелочку внизу таблицы), в Lazarus это проще всего сделать через переопределение метода DrawCell или событие OnDrawCell вашей таблицы.
Внутри класса вашей таблицы (например, в TDialogGrid):

procedure TDialogGrid.DrawCell(aCol, aRow: Integer; aRect: TRect; aState: TGridDrawState);
begin
inherited DrawCell(aCol, aRow, aRect, aState);

// Проверяем, является ли эта ячейка последней видимой ячейкой в самом нижнем углу
if (aRow = RowCount - 1) and (aCol = ColCount - 1) then
begin
// Проверяем, что внизу ЕЩЕ есть скрытые строки, которые не поместились на экран.
// В Lazarus TCustomGrid для этого есть свойство VisibleRowCount
if RowCount > VisibleRowCount then
begin
// Рисуем маркер на Canvas сетки в правом нижнем углу всей таблицы
Canvas.Font.Color := clRed; // Или любой заметный цвет
Canvas.Font.Size := 10;
// Рисуем стрелочку "вниз" чуть выше нижней границы сетки
Canvas.TextOut(ClientWidth - 25, ClientHeight - 20, '▼');
end;
end;
end;

Примечание: Если VisibleRowCount в вашем компоненте высчитывается динамически, это условие идеально сработает, как только общее число строк (RowCount) превысит видимый лимит.
------------------------------
## Что выбрать?
Для архитектуры DataExpress Вариант 2 в компоненте TDialogGrid (или в том классе, который выводит результаты запросов) будет выглядеть наиболее профессионально. Он добавит маленькую аккуратную стрелочку прямо поверх сетки, когда есть куда листать, и пропадет, когда пользователь доскроллит до конца.
Скажите, а где именно объявлен базовый класс сетки, который видит пользователь в режиме «Запросы» — в dialoggrid.pas или в dxctrls.pas? Могу помочь написать точечный патч для этого файла.

Аватара пользователя
k245
Интересующийся
Сообщения: 171
Зарегистрирован: 25 май 2019, 08:02
Откуда: Краснодар
Благодарил (а): 108 раз
Поблагодарили: 24 раза
Контактная информация:

Индикация в запросе

Сообщение k245 » 22 сен 2026, 08:19

neznayka-na-lune писал(а):О, прошу прощения! Теперь я отчетливо вижу структуру вашего репозитория dataexpress...

О, прошу прощения! Теперь я отчетливо вижу: программисты ИИ - выходцы из СССР, их цель - превратить весь мир в Страну Советов :lol:

neznayka-na-lune
Интересующийся
Сообщения: 130
Зарегистрирован: 22 дек 2025, 16:10
Благодарил (а): 22 раза
Поблагодарили: 17 раз

Индикация в запросе

Сообщение neznayka-na-lune » 22 сен 2026, 08:23

k245 писал(а):
neznayka-na-lune писал(а):О, прошу прощения! Теперь я отчетливо вижу структуру вашего репозитория dataexpress...

О, прошу прощения! Теперь я отчетливо вижу: программисты ИИ - выходцы из СССР, их цель - превратить весь мир в Страну Советов :lol:

Достойная цель.


Вернуться в «Предложения по развитию проекта.»