Форум: "Базы";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];
ВнизТуманный вопрос про дбгрид Найти похожие ветки
← →
Andrey V. (2003-10-15 08:47) [0]Хочется чтобы грид при переоткрытии датасета не изменялся . Сейчас поясню что я имею в виду.
Допустим мы стоим на какой-то строке. Если закрыть/открыть датасет (и позиционироваться на ту же строку, где мы были) то мы можем оказкться (скорее всего) не в том месте относительно координат ЭКРАНА. ТО есть если я стою на строке N , а визуально это 5-я, к примеру , строка сверху , то и после переоткрытия хочется , чтобы это была 5-я строка сверху.
Вот такой Subj.
← →
KSergey (2003-10-15 09:00) [1]У грида, если ничего не путаю, есть св-ство типа TopRow или что-то подобное
Попробуйте его запользовать
← →
Izyum (2003-10-15 09:46) [2]Используй Bookmark.
Либо сам (без закладок) запоминай позицию, отключай обновление контролов, закрывай/открывай дадасет, переходи на нужную тебе запись, включай обновление контролов.
← →
KSergey (2003-10-15 10:06) [3]Тут, как я понял, не про букмарки речь, а именно по позицию активной строки на экране.
Судя по "(и позиционироваться на ту же строку, где мы были)" про букмарки человек в курсе.
← →
Izyum (2003-10-15 10:07) [4]Ну дык перед всеми манипуляциями делаем DisableControls, а после EnableControls - на экране все без изменений.
← →
Johnmen (2003-10-15 10:11) [5]>Izyum © (15.10.03 10:07)
Не-а...:)
← →
Izyum (2003-10-15 10:13) [6]
> Johnmen © (15.10.03 10:11) [5]
Не-а... Это понимать как "не работает" или "не подходит"?
← →
Vlad (2003-10-15 10:14) [7]Возможно ScrollBy поможет
← →
Johnmen (2003-10-15 10:21) [8]>Izyum © (15.10.03 10:13)
1. Не то.
2. "на экране все без изменений."
Утверждение ошибочно.
>Andrey V.
Есть кусок кода по данному вопросу.
← →
Izyum (2003-10-15 10:24) [9]
> 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;
← →
Izyum (2003-10-15 10:26) [10]
> Izyum © (15.10.03 10:24) [9]
Может где ошибся в коде - писал по памяти.
← →
Johnmen (2003-10-15 10:33) [11]>Izyum © (15.10.03 10:24)
Медальки здесь непричем :) И спорить надо, если есть аргументы...
Попробуй так: давим на кнопу вниз, пока не переместимся к примерно середине НД, в котором кол-во записей больше 2*<макс.количество линий, выводимых в грид>. Потом - описанные тобой действия. Что получается ?
← →
Izyum (2003-10-15 10:36) [12]
> Johnmen © (15.10.03 10:33) [11]
Все вроде бы работало, хотя точно не пмню. Сейчас Делфей под рукой нет - вечером дома попробую, если успею.
← →
Andrey V. (2003-10-15 11:02) [13]Дискуссия идет в верном направлениии , но пока безрезультатно.
Johnmen
>Есть кусок кода по данному вопросу.
Это вопрос или предложение ? :o)
← →
Johnmen (2003-10-15 11:17) [14]>Andrey V. (15.10.03 11:02)
>Это вопрос или предложение ? :o)
Это то, что соответствует указанному мною знаку препинания.
:)))))
← →
Andrey V. (2003-10-15 11:46) [15]Я , в лице прочих , рад за тебя :-)
Покажешь ?
← →
Johnmen (2003-10-15 12:12) [16]>Andrey V. © (15.10.03 11:46)
Могу выслать.
← →
Andrey V. (2003-10-15 12:22) [17]Жду.Спасибо.
← →
Izyum (2003-10-15 12:53) [18]
> Johnmen © (15.10.03 12:12) [16]
Тоды и мне, плиз: izum(собака)fromru.com
← →
Izyum (2003-10-15 13:33) [19]Код поглядел, вечером попробую, но... Если я правильно понял (на вскидку), он после открытия датасета просто прокручивает грид на определенную дистанцию (дистанцию именно она и расчитывает). А если запрос сложный, БД большая, и, соответственно, открывается он долго. Грид все равно будет "дергаться". Если конечно пропадание инфы из грида не критично, а важно только точно после переоткрытия позиционироваться - то да.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.049 c