Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
3-72094
Smirnoff
2002-12-28 14:58
2003.01.23
Помогите! Какая то странная ошибка


3-72032
Basil
2003-01-03 18:35
2003.01.23
Принцип работы


3-72141
novill
2002-12-30 16:01
2003.01.23
Мастаки, как QRCompositeReport просмотреть через QRPreview?


14-72517
Дмитрий К.К.
2003-01-06 20:38
2003.01.23
Программа для снятия скриншотов программы


1-72288
Delph
2003-01-15 11:25
2003.01.23
QuickReport печать с N страницы по K возможна?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский