Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как обновить грид без его перерисовки? / 25 сообщений из 27, страница 1 из 2
26.07.2003, 14:04
    #32218821
max_s
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновить грид без его перерисовки?
Используется два DBGridEh, один подчинен другому, по команде контекстного меню в подчиненном гриде, изменяются данные, которые отображаются в основном гриде, после обновления данных с подчиненным гридом все вроде в порядке, а основной перерисовывает, вроде я только прогу запустил. Посоветуйте что-нибудь: как обновить данные в гриде без его перерисовки?

Заранее спасибо.
...
Рейтинг: 0 / 0
27.07.2003, 10:07
    #32218946
JibSkeart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновить грид без его перерисовки?
а как ты без перересовки будещь обновлять грид ???

и что сие значит "без перересовки"
...
Рейтинг: 0 / 0
28.07.2003, 14:20
    #32219519
max_s
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновить грид без его перерисовки?
Это без скачка курсорной рамки на первую строку грида, как минимум
...
Рейтинг: 0 / 0
28.07.2003, 14:58
    #32219563
Alex_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновить грид без его перерисовки?
id:=Query1.FieldByName('ID').AsString;
Query1.False;
Query1.True;
Query1.Locate('ID',id,[]);
...
Рейтинг: 0 / 0
28.07.2003, 15:06
    #32219573
m_kus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновить грид без его перерисовки?
Типа (небольшой плагиат, сенкс ту Alex_):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
try
  id:=Query1.FieldByName('ID').AsString;
  Query1.DisableControls;
  Query1.Active:=False; 
  Query1.Active:=True; 
  try Query1.Locate('ID',id,[]);except end;
finally
  Query1.EnableControls;
end;
...
Рейтинг: 0 / 0
28.07.2003, 19:57
    #32219940
Cat2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновить грид без его перерисовки?
И через BookMark можно
...
Рейтинг: 0 / 0
28.07.2003, 20:19
    #32219957
MrAlex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновить грид без его перерисовки?
В любом случае, если количество записей превышает количество умещаемое для отображение (как минимум раза в два), скачок будет. Курсор то останется на той же строке, но передвинется на середину грида. Даже при использовании букмарков, дизейбл контролов и т.п. Глюки DBGridEh... Хотя может и не только его...
...
Рейтинг: 0 / 0
28.07.2003, 20:21
    #32219958
MrAlex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновить грид без его перерисовки?
Особенно DBGridEh не любит DisableControl и букмарки...
...
Рейтинг: 0 / 0
28.07.2003, 20:24
    #32219960
Cat2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновить грид без его перерисовки?
Стандартный грид ведет себя точно так же. Помогает запоминание позиции текущей строки в гриде. После того, как Bookmark сделает ее первой в сетке, надо сделать еще и скроллинг. Но тут все очень запутанно. Помню, я реализовывал такую фичу, но хоть убей, не помню как.
...
Рейтинг: 0 / 0
28.07.2003, 20:25
    #32219962
Cat2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновить грид без его перерисовки?
Блин, наврал
Ето я на Clippere делал
...
Рейтинг: 0 / 0
28.07.2003, 21:05
    #32219988
MrAlex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновить грид без его перерисовки?
Да я с этом проблемой борюсь уже давно... Начальство ругается, что прыгает, а что делать... У него и подбитие итогов также работает... Пробуешь сделать
RecalcAll, и... тот же эффект...
...
Рейтинг: 0 / 0
29.07.2003, 07:13
    #32220106
Alexander2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновить грид без его перерисовки?
народ, а не замечали как торомозит DBEhGrid когда показывает в футере количество записей?

как только уберу - так мгновенно а с SumList Active=True - как черепаха

не знает кто как бороться с этим?
...
Рейтинг: 0 / 0
29.07.2003, 08:33
    #32220129
Серега
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновить грид без его перерисовки?
2Alexander2
> народ, а не замечали как торомозит DBEhGrid когда показывает в футере количество записей?
как только уберу - так мгновенно а с SumList Active=True - как черепаха

А чего удивляться? Что бы подсчитать количество идет выфетчивание всех записей на клиента. Если это отключить, то ждать конца фетча не надо.

>не знает кто как бороться с этим?
Ограничивай выборки. А агрегатные значения - отдельным запросом.
...
Рейтинг: 0 / 0
29.07.2003, 10:57
    #32220288
MrAlex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновить грид без его перерисовки?
>не знает кто как бороться с этим?
Серега> Ограничивай выборки. А агрегатные значения - отдельным запросом.


и сам заполняй SumList... Довольно просто...

К тому же при редактировании в гриде, не совсем корректно итоги считаются...
Бывают довольно интересные глюки... У меня в проге, все такие обработки приходится ручками делать... Начиная с подсчитывания итогов...
...
Рейтинг: 0 / 0
29.07.2003, 11:03
    #32220298
Andrei_A
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновить грид без его перерисовки?
Я тут некоторое время назад задавал тот-же вопрос с варинтом локейта (Букмарки отпадают - так как они при квери клозе умирают). Но тогда все заглохло.

Может кто-то всетаки скажет - есть свойства дающие индекс первой отображаемой в текущий момент строки - можно ли через это както восстанавливать - убирая скачок на середину.

КТо-то говорил, что можно делать через Resync. - Может кто просветить как это - не отсылая на статью - так как код статьи у меня все равно не заработал.
...
Рейтинг: 0 / 0
29.07.2003, 12:06
    #32220431
max_s
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновить грид без его перерисовки?
2 m_kus.

Сенкс огромный! Хоть какое-то решение. Хотя на середину все-таки выставляет. Может кто-то знает про возможность запоминать верхнюю ОТОБРАЖАЕМУЮ строку? И от этого можно плясать? То есть после Query1.Active:= True выставлять эту запись опять верхней, а выделенной делать ту, которая и была выделена?
...
Рейтинг: 0 / 0
29.07.2003, 12:14
    #32220453
ZrenBy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновить грид без его перерисовки?
Если ADO

Код: plaintext
1.
2.
3.
ADODS.UpdateCursorPos;
ADODS.Recordset.Resync(adAffectCurrent,adResyncAllValues);
ADODS.Resync([rmExact]);


А еще можно использовать самый крутейший грид - TDrawGrid.
Чё хочу, то и ворочу.
...
Рейтинг: 0 / 0
29.07.2003, 12:28
    #32220506
max_s
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновить грид без его перерисовки?
2 ZrenBy
А чему у тебя константы adAffectCurrent, adResyncAllValues равны, а то у меня ругается на не описанные... В хелпе написано, что вроде как самомцу определять их надо.
...
Рейтинг: 0 / 0
29.07.2003, 12:56
    #32220590
max_s
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновить грид без его перерисовки?
2 ZrenBy
Ну с константами я разобрался. Но на строке ADOQuery1.Recordset.Resync(adAffectCurrent,adResyncAllValues) выпадает по ошибке EOleException 'Недостаточно сведений из основной таблицы' - это что имеется ввиду?
...
Рейтинг: 0 / 0
29.07.2003, 13:15
    #32220651
ZrenBy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновить грид без его перерисовки?
Много чего.

Во-первых, нужно определить
Код: plaintext
1.
2.
3.
4.
ADODS.Properties['Unique Table'].Value    := 'MyTable';
ADODS.Properties['Resync Command'].Value  := 'select * from MyTable where ID = ?';
ADODS.Properties['Update Criteria'].Value := adCriteriaKey;
ADODS.Properties['Update Resync'].Value   := adResyncAll;


Естественно, нужно разрешение на select на MyTable и ID - PK
...
Рейтинг: 0 / 0
29.07.2003, 13:34
    #32220704
max_s
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновить грид без его перерисовки?
2 ZrenBy
А если в ADOQuery выбираются поля из нескольких таблиц, то что писать в Properties['Unique Table']? Таблицу того поля, которое изменилось?
...
Рейтинг: 0 / 0
29.07.2003, 13:42
    #32220737
max_s
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновить грид без его перерисовки?
2 ZrenBy

И еще вопрос: в
Код: plaintext
Properties['Resync Command']
нужно в SELECT'е перечислить все поля, которые есть в гриде?
...
Рейтинг: 0 / 0
29.07.2003, 13:44
    #32220746
ZrenBy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновить грид без его перерисовки?
Я делаю в таких случаях вьюху

и

select * from MyView where ID = ?';

В Properties['Unique Table'] пишу, как бы это сказать,
ту таблицу откуда берется ID.

Если во вьюхе есть union то ничего не выйдет
...
Рейтинг: 0 / 0
29.07.2003, 13:44
    #32220750
Andrei_A
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновить грид без его перерисовки?
max_s
Ну с константами я разобрался.

Может и мне расскажешь - где их искать?
...
Рейтинг: 0 / 0
29.07.2003, 13:45
    #32220751
ZrenBy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновить грид без его перерисовки?
use ADOInt
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как обновить грид без его перерисовки? / 25 сообщений из 27, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]