Форум: "Базы";
Текущий архив: 2003.01.23;
Скачать: [xml.tar.bz2];
ВнизDBGrid Найти похожие ветки
← →
cf (2002-12-23 18:47) [0]Всем привет!
Есть некий DataSet и отображающий его DBGrid.
После выполнения следующих действий:
DataSet.DisableControls;
.....
.....
DataSet.EnableControls;
активная строка таблицы помещается в середину DBGrid"а, т.е. происходит скачек курсора. Можно каким либо образом оставить неизменным положение активной строки в DBGrid"е после DataSet.EnableControls?
Спасибо.
← →
gsu (2002-12-23 18:48) [1]RecNo: integer
До:
RecNo:=Dataset.RecNo
После:
Dataset.RecNo:=RecNo
← →
cf (2002-12-23 18:54) [2]свойство RecNo только для чтения
← →
gsu (2002-12-23 19:01) [3]Да ?
А какже я уже n лет пользуюсь, ладно ща взгляну.
← →
cf (2002-12-23 19:03) [4]Извиняюсь, я не целиком дописал вопрос.
Код выглядит так:
var B: TBookmarkStr;
...
DataSet.DisableControls;
B:=DataSet.Bookmark;
....
....
DataSet.Bookmark:=B;
DataSet.EnableControls;
т.е. позицию курсора в БД я запоминаю и затем восстанавливаю, но после EnableControls активная строка в DBGrid"e переносится в середину DBGrid"a. Именно этого эффекта хотелось бы избежать...
← →
gsu (2002-12-23 19:08) [5]Да брось ты эти закладки, пиши так:
var B: Integer;
...
B:=DataSet.recno;
DataSet.DisableControls;
....
....
DataSet.recno:=B;
DataSet.EnableControls
← →
gsu (2002-12-23 19:13) [6]А с закладками работают так:
procedure TForm1.CopyDataClick(Sender: TObject);
var
SavePlace: TBookmark;
PrevValue: Variant;
begin
withClientDataSet1 do
begin
{ get a bookmark so that we can return to the same record }
SavePlace := GetBookmark;
try
{ move to prior record}
FindPrior;
{ get the value }
PrevValue := Fields[0].Value;
{Move back to the bookmark this may not be the next record anymore if something else is changing the dataset asynchronously }
GotoBookmark(SavePlace);
{ Set the value }
Fields[0].Value := PrevValue;
{ Free the bookmark }
finally
FreeBookmark(SavePlace);
end;
end;
end;
Ищи ошибки, по моему они налицо
← →
cf (2002-12-23 19:19) [7]>gsu © (23.12.02 19:13)
У меня нет проблем с сохранением позиции курсора в БД. Неважно, что я буду использовать TBookmarkStr или TBookmark...
Проблема с отображением активной строки таблицы в DBGrid"е после EnableControls. Она помещается в середину DBGrid"a
← →
gsu (2002-12-23 19:30) [8]Все я пас, помоему тут позиция курсора в БД и активная строка таблицы "одно и то же". И !!! у мя ничего не скачет, если Paradox, то RecNo, иначе лучше Bookmark
← →
MsGuns (2002-12-23 20:49) [9]Для того, чтобы "полазить" по НД и не оставить следов метод Disable/EnableControls не всегда хорош (например, его нельзя использовать на детальном НД). Я делаю проще:
Var
ds: TDataSource;
bm: TBookMark;
begin
ds := Grid1.DataSource;
Grid1.DataSource := nil; // Грид перестает реагировать на НД
Table1.GetBookMark(bm);
Table1.First;
....
Table1.GotoBookMark(bm);
Table1.FreeBookMark(bm);
Grid1.DataSource := ds; // Грид показывает что и показывал
end;
← →
Anatoly Podgoretsky (2002-12-24 07:29) [10]Зачем такие мучения, лазий в отдельном наборе данных
← →
cf (2002-12-24 11:54) [11]Конечно, спасибо за такое количество ответов, но они не на тот вопрос, который я задал.
>MsGuns
DataSource я отрубать не могу, т.к. работаю с DBase, через Apollo, а не через BDE. Тем более, что проблемы это не решит...
Вопрос в седующем:
Допустим, что DBGrid по высоте отображает 9 строк таблицы БД. Активная строка находится третьей снизу. После DisableControls/EndblrControls позиция этой же самой строки становится 5-ой, т.е. она переносится в середину DBGrid"a. Т.е. порядок записей и активный курсор в таблице БД отсаются прежними, просто Грид после EnableControls располагает активную запись в середине своего окна. А мне хочентся, что бы как она была 3-ей снизу, так там и оставалась...
← →
cf (2002-12-24 11:56) [12]>Anatoly Podgoretsky © (24.12.02 07:29)
>Зачем такие мучения, лазий в отдельном наборе данных
Анатолий, ваш вариант решит проблему, но в моем случае он мне не нравится...
← →
Anatoly Podgoretsky (2002-12-24 12:05) [13]Это один из вариантов, но в других случаях будет перерасчет отображения DBGrid тут ничего не поделаешь
← →
cf (2002-12-24 12:12) [14]>Anatoly Podgoretsky ©
Спорить не буду, но исходники DBGrid"a гляну...
← →
TTCustomDelphiMaster (2002-12-30 17:47) [15]http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1041093851&n=1
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.01.23;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.013 c