Здравствуйте. Вот такой вопрос.
I. Пытаюсь сделать добавление и вставку строк в грид с группами (DataGrouping).
При использовании метода DataAppend происходит добавление строки вне группы (см. рис)
Вложение:
Безымянный 1.JPG [ 51.55 KiB | Просмотров: 1170 ]
А если нажать кнопку VK_DOWN на последней строки таблицы, то добавляется сразу в текущую группу (что и требуется)
Вложение:
Безымянный 2.JPG [ 44.91 KiB | Просмотров: 1170 ]
Пытаюсь заставить Grid всегда добавлять строки как-будто нажата VK_DOWN в последней строке последней группы.
Но возникает трудность в получении последней строки.
Делаю так
DBGridEh.DataSource.DataSet.Last;
SendMessage(DBGridEh.Handle, WM_KEYDOWN, VK_DOWN , 0);
или так
DBGridEh.Row:=DBGridEh.RowCount-1;
SendMessage(DBGridEh.Handle, WM_KEYDOWN, VK_DOWN , 0);
Если это последняя строка Dataset, то она может не быть последней в Grid из-за сортировки групп. Тоже касается DBGridEh.Row.
Более того, если выполнить DBGridEh.Row:=DBGridEh.RowCount-1;
и щелкнуть мышью на верхнюю группу , то курсор упрыгивает не на ту строку.
Если последняя группа свернута, VK_DOWN не работает (но это лекго обойти).
Как мне решить эту проблему?
Трудно будет пользователям заполнять огромные формы, если строки будут добавляться всегда на самый верх.
II. И еще дополнение к вопросу.
Мне пришлось отказаться от суммирующего Footer'а, т.к. строка Всего должна быть сверху , Наименование должно в ней задаваться, а в разделе Всего может быть несколько строк, которые введет пользователь по своему желанию.
Отсюда получается так, что текст групп Всего/В том числе повторяется 2 раза (в заголовке самой группы и в первой строке группы).
Как лучше скрыть его из виду? (переопределить OnDrawDataCell?)