Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Точное позиционирование в DBGrid [Win95/98]


Страницы:   1 2 3

msguns ©   (2005-05-19 17:03:00) 

Суть проблемы в том, чтобы после изменения записи в таблице и переоткрытия отображающего ее нередактируемогоНД не просто найти эту запись и сделать ее активной, а добиться того, чтобы она отображалась в том же самом месте грида.
Понимаю, что надо поиграться с предком грида, имеющем соотв.св-ва (Row), но это требует массу времени, которого, как всегда, не хватает.
Возможно, у кого-то есть хорошие (не громоздкие) решения, которыми не жаль поделиться. Сделайте одолжение - буду весьма признателен.


msguns   (2005-05-20 12:08:00) [21]

Спасибо, Жень, получил бандерольку ;)
При первом взгляде не очень красиво (в смысле громоздко, но, возможно, проще и не сделаешь).
Однако в целом похоже на то.
Буду пробовать.

Еще раз спасибо.


msguns   (2005-05-20 11:56:00) [22]

>ЮЮ ©   (20.05.05 11:52) [19]

Юр, ну чего ты придираешься. Да, при вставке будет фигня, если узер нажмет мышку, стоя на записи "Иванов", введет "Яковлев" и получит выброс курсора совсем в другое место после переоткрытия.
Но ведь он может (и часто так и делает) ввести "Ковалев".

Но, как правило, речь идет об удалении и редактировании, когда курсор должен оставаться в том же самом месте грида (пример хороший - TTable)


Max Zyuzin   (2005-05-20 11:54:00) [23]

>ЮЮ ©   (20.05.05 11:52) [19]
На скока я понял речь не про вставку а про редактирование, что бы в исходном гриде строчки не скакакли.
>Johnmen ©   (20.05.05 11:39) [17]
Жень, пришли мне, посмотреть хоцца.


ЮЮ   (2005-05-20 11:52:00) [24]

>запись после вставки в грид и Apply окажется внизу, т.е. не будет следовать заданной для всего рекордсета последовательностью.

А если после вставки записи внизу и переоткрытия запись должна быть уже вверху, то о каком "точное позиционировании в DBGridе" идет речь? Т.е. пользователь должен остаться внизу грида, недоумевая куда улетела только что вставленная запись и не повторить ли ему ввод, полагая, что это глюк программы ?


msguns   (2005-05-20 11:44:00) [25]

>Johnmen ©   (20.05.05 11:39) [17]
>Дык это, щас вышлю, если не возражаешь...:)

Наливай !


Johnmen   (2005-05-20 11:39:00) [26]

>msguns ©   (20.05.05 11:35) [16]

Дык это, щас вышлю, если не возражаешь...:)


msguns   (2005-05-20 11:35:00) [27]

>Johnmen ©   (20.05.05 11:31) [15]
>Серёга, я так и не понял, тебе сырцы нужны или ты уже решил проблему ?

Нет, не решил, конечно.
Сырцами ты помахал, как ворона перед лисой, и улетел. Где они ?


Johnmen   (2005-05-20 11:31:00) [28]

>msguns ©   (20.05.05 11:05) [14]

Серёга, я так и не понял, тебе сырцы нужны или ты уже решил проблему ?


msguns   (2005-05-20 11:05:00) [29]

>evvcom ©   (20.05.05 09:48) [12]

НД не редактируемый !
Если же я сделаю его редактируемым, то
1. способы делания нередактируемого НД редактируемым у разных "движков" разные
2. запись после вставки в грид и Apply окажется внизу, т.е. не будет следовать заданной для всего рекордсета последовательностью.

По-моему я достаточно подробно описал суть проблемы, чтобы понять то, ЧТО нужно. Советы типа Polevi, как, впрочем, и комментарии в этом духе, прошу не давать.
Если проблема кажется надуманной - выразите возмущение, но в душе, ладненько ?
Основная цель - разобраться с гридом, а не с средствами доступа. Именно поэтому вопрос изначально был помещен в "Основную".


Виталий Панасенко   (2005-05-20 10:02:00) [30]

Может, глянь на VisibleRowCount/TopRow в Grids.pas - предке DBGrid


evvcom   (2005-05-20 09:48:00) [31]

Ну изменил запись, ну вызвал метод типа ApplyUpdates, а НД зачем переоткрывать? Если для того, чтобы вернуть с сервера какие-то вычисляемые параметры, генерируемые на сервере ключи например, то для этого есть OUT-параметры. Непонятна проблема.


Polevi   (2005-05-20 09:36:00) [32]

чушь какаято, имхо


msguns   (2005-05-20 09:22:00) [33]

>DSKalugin ©   (19.05.05 18:04) [8]
>refreshSQL не помогает?

>Polevi ©   (19.05.05 18:52) [9]
>close open в топку
>см [6]

Вся мулька в том, что технология не должна зависеть от формата БД и используемых механизмов доступа. Проще всего "стать ногами на таблицу", например TTable, и редактировать средствами эитого класса, однако это не решение.
Во-первых потому, что не парадокс/дбэйз
Во-вторых, потому что НД может быть выбран из нескольких таблиц либо может возвращаться ХП, т.е. изначально сам по себе не редактируемый
В-третьих, нельзя ориаентироваться на конкретику в св-ве грида Datasource.Dataset, грид должен уметь это делать сам по себе.

Смысл в том, что хочется иметь 2 функции
Первая воззвращает относительный номер строки текущей активной строки грида,
Вторая - перерисовывает грид так, чтобы строка, относительный номер который представлен на входе одним параметром, перерисовывалась так, чтобы она имела относительный номер, представленный вторым параметром. Возвращает true, если перерисовка удалась либо false, если нет (например, кол-во записей в НД стало меньше после переоткрытия)

Вопрос не так уж и празден, как может показаться с первого взгляда.


Polevi   (2005-05-19 18:52:00) [34]

close open в топку
см [6]


DSKalugin   (2005-05-19 18:04:00) [35]

refreshSQL не помогает?


Johnmen   (2005-05-19 17:43:00) [36]

>msguns ©   (19.05.05 17:03)  

Есть сырцы этого дела.
Кому-то когда-то давал. Говорили, что работает. Основания не верить нет. Сам не проверял.


Bronco   (2005-05-19 17:39:00) [37]


> msguns ©   (19.05.05 17:32) [5]


>  я вот не понял, почему вопрос выкинули из основной

Видимо потому что грид - он DB :-)
Кстати, если это так уж мешает сдвиг картинки, то все-таки искренне советую отойти от метода Close-Open, с последующим позиционированием и копнуть в сторону рефреша отдельной записи в DataSet'e


msguns   (2005-05-19 17:32:00) [38]

Кстати, я вот не понял, почему вопрос выкинули из основной, ведь его суть вовсе не в базах данных, а чисто ооповская : как оптимально использовать "зов предков" для придания потомкам большей функциональности.
ИМХО, необъективное решение, вызванное нежеланием вникнуть в смысл сабжа.
Последствия таковы, что проблема останется вне поля зрения таких монстров, как VMcl или ЮЗ, которые в "Базы" наведываются нечасто.

Грустно, бабоньки ;((


msguns   (2005-05-19 17:26:00) [39]

>DSKalugin ©   (19.05.05 17:18) [2]
>поиграйся с TBookmark лучше

Внимательней почитай сабж, я ж не зря подробно написал.

>Bronco ©   (19.05.05 17:21) [3]

Да, так точно тов.майор !
Только я не верю, что нет решения. Через предка его (решения) не может не быть.


Bronco   (2005-05-19 17:21:00) [40]


> msguns ©   (19.05.05 17:03)  

Ты имеешь ввиду смещение картинки в гриде после позиционирования на измененой записи?
Тут уже бились над этой проблемой.
На моей памяти решения со стандартным гридом так и не нашли.
По-моему проще организовать рефреш отдельной записи в датасете или же не делать close-open


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо