![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Туманный вопрос про дбгрид [D5]
Andrey V. © (2003-10-15 08:47:00)
Хочется чтобы грид при переоткрытии датасета не изменялся . Сейчас поясню что я имею в виду.
Допустим мы стоим на какой-то строке. Если закрыть/открыть датасет (и позиционироваться на ту же строку, где мы были) то мы можем оказкться (скорее всего) не в том месте относительно координат ЭКРАНА. ТО есть если я стою на строке N , а визуально это 5-я, к примеру , строка сверху , то и после переоткрытия хочется , чтобы это была 5-я строка сверху.
Вот такой Subj.
Izyum (2003-10-15 13:33:00) [1]
Код поглядел, вечером попробую, но... Если я правильно понял (на вскидку), он после открытия датасета просто прокручивает грид на определенную дистанцию (дистанцию именно она и расчитывает). А если запрос сложный, БД большая, и, соответственно, открывается он долго. Грид все равно будет "дергаться". Если конечно пропадание инфы из грида не критично, а важно только точно после переоткрытия позиционироваться - то да.
Izyum (2003-10-15 12:53:00) [2]
> Johnmen © (15.10.03 12:12) [16]
Тоды и мне, плиз: izum(собака)fromru.com
Andrey V. (2003-10-15 12:22:00) [3]
Жду.Спасибо.
Johnmen (2003-10-15 12:12:00) [4]
>Andrey V. © (15.10.03 11:46)
Могу выслать.
Andrey V. (2003-10-15 11:46:00) [5]
Я , в лице прочих , рад за тебя :-)
Покажешь ?
Johnmen (2003-10-15 11:17:00) [6]
>Andrey V. (15.10.03 11:02)
>Это вопрос или предложение ? :o)
Это то, что соответствует указанному мною знаку препинания.
:)))))
Andrey V. (2003-10-15 11:02:00) [7]
Дискуссия идет в верном направлениии , но пока безрезультатно.
Johnmen
>Есть кусок кода по данному вопросу.
Это вопрос или предложение ? :o)
Izyum (2003-10-15 10:36:00) [8]
> Johnmen © (15.10.03 10:33) [11]
Все вроде бы работало, хотя точно не пмню. Сейчас Делфей под рукой нет - вечером дома попробую, если успею.
Johnmen (2003-10-15 10:33:00) [9]
>Izyum © (15.10.03 10:24)
Медальки здесь непричем :) И спорить надо, если есть аргументы...
Попробуй так: давим на кнопу вниз, пока не переместимся к примерно середине НД, в котором кол-во записей больше 2*<макс.количество линий, выводимых в грид>. Потом - описанные тобой действия. Что получается ?
Izyum (2003-10-15 10:26:00) [10]
> Izyum © (15.10.03 10:24) [9]
Может где ошибся в коде - писал по памяти.
Izyum (2003-10-15 10:24:00) [11]
> Johnmen © (15.10.03 10:21) [8]
У меня конечно нет медальки МАСТЕР в анкете, а посему спорить не буду, но...
У меня таблица переоткрывается без изменения грида вот так, и все работает.
<cade>
procedure TMainDM.GetClientsList;
var
i: integer;
begin
i:=Clients["id_c"];
Clients.DisableControls;
Clients.Close;
Clients.Open;
Clients.EnableControls;
Clients.Locate("id_c", i, []);
end;
Johnmen (2003-10-15 10:21:00) [12]
>Izyum © (15.10.03 10:13)
1. Не то.
2. "на экране все без изменений."
Утверждение ошибочно.
>Andrey V.
Есть кусок кода по данному вопросу.
Vlad (2003-10-15 10:14:00) [13]
Возможно ScrollBy поможет
Izyum (2003-10-15 10:13:00) [14]
> Johnmen © (15.10.03 10:11) [5]
Не-а... Это понимать как "не работает" или "не подходит"?
Johnmen (2003-10-15 10:11:00) [15]
>Izyum © (15.10.03 10:07)
Не-а...:)
Izyum (2003-10-15 10:07:00) [16]
Ну дык перед всеми манипуляциями делаем DisableControls, а после EnableControls - на экране все без изменений.
KSergey (2003-10-15 10:06:00) [17]
Тут, как я понял, не про букмарки речь, а именно по позицию активной строки на экране.
Судя по "(и позиционироваться на ту же строку, где мы были)" про букмарки человек в курсе.
Izyum (2003-10-15 09:46:00) [18]
Используй Bookmark.
Либо сам (без закладок) запоминай позицию, отключай обновление контролов, закрывай/открывай дадасет, переходи на нужную тебе запись, включай обновление контролов.
KSergey (2003-10-15 09:00:00) [19]
У грида, если ничего не путаю, есть св-ство типа TopRow или что-то подобное
Попробуйте его запользовать