Конференция "Базы" » точно позиционирование строк в dxDbgrid
 
  • shiva © (21.06.12 10:56) [0]
    Всем привет.
    Возник вот такой вопрос.
    Как можно в компоненте TdxDbGrid сделать, что бы после переоткрытия запроса (Query.Close;Query.Open) - курсор устанавливался на ту строку которая была текущей до переоткрытия и на той же высоте в гриде что была?

    Искал в инете по этой тематике, нашел пример для TDbGrid
    http://www.delphimaster.net/view/3-1116507782/all

    Однако добиться того же эффекта для TdxDbGrid так и не смог. Курсор ставится на нужную строку, однако строка эта всегда отображается в самой нижней видимой части грида.
  • AV © (21.06.12 12:33) [1]
    если TdxDbGrid произошел от TCustomGrid (нет набора этого у меня)
    то можно попробовать получить видимую часть

    TCG = class (TCustomGrid);
    TCG(dg1).VisibleRowCount;

    потом, пролистать половину строк и вернуться по Locate на столько же назад
  • Виталий Панасенко (21.06.12 14:34) [2]
    ааа.а никто об закладках не в курсе?
  • Виталий Панасенко (21.06.12 14:35) [3]
    но на счет высоты... голяк
  • AV © (21.06.12 17:14) [4]

    > ааа.а никто об закладках не в курсе?

    по умолчанию предполагается
    gotobookmark приводит к отображению в иных гридах или вверху /или внизу этой строки


    > но на счет высоты... голяк

    т.е.?
    на стандартном dbgrid работает
  • Anatoly Podgoretsky © (21.06.12 18:52) [5]
    > shiva  (21.06.2012 10:56:00)  [0]

    Видимо это особенность TdxDbGrid, другие ставят в середину грида
  • Германн © (22.06.12 02:08) [6]

    > Курсор ставится на нужную строку, однако строка эта всегда
    > отображается в самой нижней видимой части грида.

    А чем это плохо?
  • shiva © (22.06.12 10:07) [7]
    Неудобно просто. У меня информация отображается в табличном виде. Когда происходит операция изменения данных одной строки или ввода новой, несколько неудобно что все смещается в самый низ..
  • Cobalt © (22.06.12 10:29) [8]
    а в чем необходимость переоткрытия запроса?
  • shiva © (25.06.12 09:58) [9]
    Есть база карточек, где в каждой карточке в виде таблицы (DxDBGrid) отображается вся информация по ней, это порядка 90 строк. Информация в этой карточке  как бы шаблон, т.е.  отображаются список "параметров" (90 шт).
    В новой не заполненной карточке отображаются сами параметры и справа от них ячейки (назовем их допустим "информация о параметре") будут изначально пустые. Их будет заполнять пользователь.
    При заполнении "информации о параметре" к-во строк так и остается 90, -  изменяется только заполненность строк справа от параметров.

    Когда вносишь изменения в одну из таких строк, надо информацию обновить после сохранения в таблице с параметрами, соответственно переоткрываешь запрос и переходишь на строку где был до внесения изменений. Сделано это через datasetsortedsearch.
    После этого курсор будет стоять на строке на какой и был, но в самом низу экрана, и если надо следующий перейти на параметр или посмотреть что после него идет -  надо снова скролить грид каждый раз. Оно руки не отвалятся, но не удобно искать глазами куда оно прыгнуло каждый раз ..
  • Inovet © (25.06.12 10:50) [10]
    > [9] shiva ©   (25.06.12 09:58)
    > .е.  отображаются список "параметров" (90 шт).

    И зачем это? Почему не в полях таблицы эти параметры?
  • shiva © (27.06.12 10:13) [11]
    программа не моя. я бы совсем иначе бы сделал. а менять кардинально мне зарпещают.
  • shiva © (27.06.12 10:19) [12]
    Параметры я условно назвал. Если хотите можно назвать "данные карточки" (я не зря название "параметры" в кавычки взял ) А "параметры" и так в полях таблицы. просто сам запрос очень большой берется информации из нескольких таблиц.
 
Конференция "Базы" » точно позиционирование строк в dxDbgrid
Есть новые Нет новых   [119769   +75][b:0][p:0]