Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];

Вниз

обновление dxDBGrid...   Найти похожие ветки 

 
MakNik   (2005-08-02 10:41) [0]

Подскажите, пожалуйста, как при обновлении датасета на который ссылается dxDBGrid, визуально текущую выбранную записть установить в то же положение?
Например: есть набор данных из 50 строк. На экране отображены строки с 10-30. Указатель стоит на 15-й строке (т.е. визуально на 5-й сверху). Нужно сохранить это положение при обновлении датасета.


 
Sergey13 ©   (2005-08-02 10:50) [1]

И чего этот вопрос так всех беспокоит?


 
Johnmen ©   (2005-08-02 10:53) [2]

>Sergey13 ©   (02.08.05 10:50) [1]
>И чего этот вопрос так всех беспокоит?

Не, не всех, только начинающих, не пропитанных идеологией...:)


 
Sergey13 ©   (2005-08-02 11:04) [3]

2 [2] Johnmen ©   (02.08.05 10:53)
Согласен. Перегнул. 8-)


 
AndrewK   (2005-08-02 11:21) [4]

2Johnmen:  А как решается такой вопрос у пропитанных идеологией гуру?

2all:

Немного уточню вопрос.

Допустим есть выборка, к примеру перечень каких-нибудь документов. Документ правиться в дополнительной форме. После правки реестр надо изменить (закрыв и открыв DataSet). В результате курсор позиционируется на первую запись. Приходиться заново искать запись. Не удобно.

2MakNik:

Как решать.  
В выборке необходимо наличие какого-либо уникального поля (или группы полей, что неудобнее).

Алгоритм такой

1. Сохраняем значение уникального поля
2. Закрываем DataSet
3. Открываем DataSet
4. Позиционируем на позицию со значением уникального поля равным сохраненному.

Пример кода.


procedure TfrmMain.Refresh;
var
 CurrRecord : Integer;
begin
 with DataSource.DataSet do
 try
   DisableControls;
   CurrRecord := FieldByName("ID").AsInteger;
   Close;
   Open;
   Locate ("ID", CurrRecord, [loCaseInsensitive]);
 finally
   EnableControls;
 end;
end;


 
Sergey13 ©   (2005-08-02 11:26) [5]

2[4] AndrewK   (02.08.05 11:21)
Вопрос был про то чтобы грид "не дергался".


 
Johnmen ©   (2005-08-02 11:29) [6]

>AndrewK   (02.08.05 11:21) [4]
>2Johnmen:  А как решается такой вопрос у пропитанных идеологией гуру?

Никак не решается. Забивается на него, как на малозначительный и бесполезный, из области рюшечек...


 
AndrewK   (2005-08-02 12:22) [7]

>Sergey13:  Если так, то совсем другое дело. Значит я не правильно его понял.

>Johnmen:  :).  Нормальное решение. Поддерживаю.


 
MakNik   (2005-08-02 16:02) [8]


> Johnmen ©   (02.08.05 11:29) [6]

... именно хотельсь бы чтобы грид "не дергался"


 
Sergey13 ©   (2005-08-02 16:24) [9]

2[8] MakNik   (02.08.05 16:02)
> ... именно хотельсь бы чтобы грид "не дергался"
Сам по себе он не дергается. А если его специально дергают, то нечего пенять на реакцию.
Забей на это. И будет счастье. 8-)


 
msguns ©   (2005-08-02 17:03) [10]

>MakNik   (02.08.05 16:02) [8]
>... именно хотельсь бы чтобы грид "не дергался"

При работе в сети грид будет "дергаться" по-любому.
Если все же очень хоцца оставлять после переоткрытия НД не только активную запись (Locate), но и позицию ее относительно грида, можно создать класс от TCustomGrid, у которого открыты св-ва TopRow и RowCount и, "добираясь" через него к любимому TDBGrid, выставить эту запись в "старую" строку грида. Однако занятие это неблагодарное, т.к. другие узера могут, например, удалить другие записи, из-за чего текущая физически не сможет быть там же.

Честно говоря, желание странное. Если не сказать - каприз ;))


 
MakNik   (2005-08-02 17:26) [11]

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


 
Sergey13 ©   (2005-08-02 17:33) [12]

2 [11] MakNik   (02.08.05 17:26)
> уж больно часто им приходится обновлять данные...
А это тема для отдельного разговора.


 
evvcom ©   (2005-08-03 09:19) [13]


> уж больно часто им приходится обновлять данные...

Что значит часто? Если они сами жмут на кнопку Refresh, то вполне должны ожидать, что grid сейчас передернется. Если ты сам делаешь этот рефреш после каждого обновления/вставки записи, то тут уже ты сам виноват, неправильно это делаешь и вопрос надо ставить по-другому.


 
Maximus2002   (2005-08-03 09:26) [14]

var
 Book: TPointer;
begin
Book := Grid.DataSource.DataSet.GetBookmark
Grid.DisableControl;
DataSet.close;
Dataset.open;
Grid.DataSource.Dataset.SetBookmark(Book);
Grid.EnableControl;
end;


 
Johnmen ©   (2005-08-03 09:37) [15]

>Maximus2002   (03.08.05 09:26) [14]

Просьба не постить сюда не относящиеся к делу фрагменты бесполезного неработающего кода с бредовыми ошибками.


 
evvcom ©   (2005-08-03 09:37) [16]


> Maximus2002   (03.08.05 09:26) [14]

Ты наверняка встанешь даже не на ту запись, не говоря уже о Top Line в гриде.


 
msguns ©   (2005-08-03 10:21) [17]

>evvcom ©   (03.08.05 09:37) [16]
>> Maximus2002   (03.08.05 09:26) [14]
>Ты наверняка встанешь даже не на ту запись, не говоря уже о Top Line в гриде.

Он вообще никуда не встанет хотя бы потому, что у грида нету ни DisableControl, ни даже DisableControls
;)


 
evvcom ©   (2005-08-03 10:32) [18]


> что у грида нету ни DisableControl

А... ну да. Не обратил на это внимания. :)


 
MakNik   (2005-08-04 11:35) [19]

... и все же...  какие еще есть варианты решения даной проблемы (кроме как "забить" )?...



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.012 c
1-1125132162
Lamer@fools.ua
2005-08-27 12:42
2005.09.18
Ещё один баг в D6


3-1123079751
Гость22
2005-08-03 18:35
2005.09.18
Как в Database Desktop убрать ненужное поле таблицы Paradox?


3-1123517781
Ruslan D
2005-08-08 20:16
2005.09.18
Просмотр пользователей в Firebird


10-1102629822
turonix
2004-12-10 01:03
2005.09.18
Создание Excel файла


1-1125134063
Ландграф Павел
2005-08-27 13:14
2005.09.18
MsWord





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский