![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Drag & Drop в DBGrid [D7, Paradox]
Mishechka © (2009-03-10 17:55:00)Мне необходимо менять порядок следования записей в DBGrid т.е. перетаскивать строки мышкой выше или ниже. Кто-нибудь знает как это сделать? Спасибо.
ЮЮ (2009-03-12 12:31:00) [61]
> Кто-нибудь знает как это сделать? Спасибо.
В простейшем случае: написать необходимый код в обработчиках Grid-a, визуально реализующий Drag & Drop на гриде, а фактически изменяющий данные в DataSete/базе данных.
При желании прикрутить аналогичное к другому гриду,
а) предыдущую реализацию оформить в виде функций с их вызовом в обработчиках
б) написать наследника с нужной визальной реализацией и механизмом изменения внутренней реализации.
Mishechka (2009-03-12 12:14:00) [62]
> Вырезать, удалить, переместить, добавить - это что, гама
> ?
> С СУЩНОСТЯМИ, которые собственно хранятся в БД, а в "гридах"
> всего лишь ОТОБРАЖАЮТСЯ. так поступать категорически нельзя
>
> И вообще чем "строже" функционал приложения работы с БД,
> тем проще с ним работать пользователю. Хотя бы потому что
> до минимума сводит вероятность СЛУЧАЙНОЙ ошибки, которую
> занефикделать можно допустить при том же перетаскивании.
>
>
Я знаю, что работать нужно не с гридом, а с источником данных. Просто посредством грида я могу видеть свои действия: редактирование, вставку, удаление записей. Надеюсь увидеть и их перемещение. Я побегал по интернету и увидел, что сотни людей задают такой же вопрос, значит, решение найти нужно. Что касается строгого функционала, то вырезать, удалить, переместить, добавить - это всего лишь действия, которые необходимы любому пользователю. Спасибо.
MsGuns (2009-03-11 16:27:00) [63]Вырезать, удалить, переместить, добавить - это что, гама ?
С СУЩНОСТЯМИ, которые собственно хранятся в БД, а в "гридах" всего лишь ОТОБРАЖАЮТСЯ. так поступать категорически нельзя
И вообще чем "строже" функционал приложения работы с БД, тем проще с ним работать пользователю. Хотя бы потому что до минимума сводит вероятность СЛУЧАЙНОЙ ошибки, которую занефикделать можно допустить при том же перетаскивании.
KSergey (2009-03-11 14:16:00) [64]> sniknik © (11.03.09 11:50) [11]
> > грамотно управлять первой видимой строкой. Вероятно это
> не очень удобно для ДБГрид в смысле?
Я про случай, когда все строки не влазят в экран. А переместить хочется выше видимой верхней, например.
> текущая позиция перемещалась стрелочками вверх и вниз при зажатом ctrl-е.
Вещь! как я не допер... все винды поганые мозг развратили. убежал делать
clickmaker (2009-03-11 13:35:00) [65]> с его помощью "Вырезать" а потом "Вставить" в нужное место?
что вырезать?
Mishechka (2009-03-11 13:22:00) [66]Скажите, если поставить PopupMenu и с его помощью "Вырезать" а потом "Вставить" в нужное место? Так получится? И как мне реализовать такие пункты в PopupMenu: "Вырезать", "Копировать", "Вставить", "Удалить"? Спасибо.
clickmaker (2009-03-11 13:17:00) [67]> [13] Mishechka © (11.03.09 12:59)
заведи в таблице поле OrdNumber
пронумеруй записи
при выборке добавь сортировку по OrdNumber
при нажатии кнопки вверх - переставляй значения у текущей и предыдущей записи
при нажатии кнопки вниз - соотв. у текущей и следующей записи
Mishechka (2009-03-11 12:59:00) [68]Подскажите, как реализовать эти две кнопочки. Может код покажете? Ведь я только учусь. Спасибо.
Mishechka (2009-03-11 12:57:00) [69]Подскажите, как реализовать эти две кнопочки. Может код покажете? Ведь я только учусь. Спасибо.
sniknik (2009-03-11 11:50:00) [70]> грамотно управлять первой видимой строкой. Вероятно это не очень удобно для ДБГрид
в смысле? при установленной сортировке по полю дать минимальное значение строке которая должна быть первой это "не очень удобно"?
а что же тогда удобно?
или я чего то не понимаю. что такое "удобная и красивая реализация"
когда то давно, когда еще писал на досовском фохпро нужно было подобное (накладные у одной компании зависели от позиции, т.е. возвраты и д.р. операции с ними должны по их правилам совпадать позиционно с присланной бумажной накладной...)
сделал просто (ни кнопочек, ни драг и дропа тогда не было) текущая позиция перемещалась стрелочками вверх и вниз при зажатом ctrl-е. имхо, это и теперь самый простой, и самый удобный способ. в тех редких случаях когда действительно нужно (что чаще всего не так).
Ega23 (2009-03-11 09:57:00) [71]Я такое делал когда-то очень давно. Но код не дам - стыдно... :)
KSergey (2009-03-11 08:48:00) [72]> Германн © (11.03.09 00:33) [8]
> поместил две красивые кнопочки со стрелками "вверх" и "вниз".
> Пользователи не жаловались на неудобства.
Я жалуюсь! В нашей проге такой же ужас! Но понятно, "так проще".
> sniknik © (10.03.09 22:44) [6]
> > Я бы заполнил какой-нибудь СтрингГрид, или ЛистВью Значениями, потом тасовал их
> а в чем будет разница? кроме того, что в датасете с данными работать было бы удобнее.
Для действительно удобной и красивой реализации необходимо грамотно управлять первой видимой строкой. Вероятно это не очень удобно для ДБГрид, но сам не пробовал.
Германн (2009-03-11 00:33:00) [73]Я когда-то делал именно так как в [1]. А справа от DBGrid поместил две красивые кнопочки со стрелками "вверх" и "вниз". Пользователи не жаловались на неудобства.
korneley (2009-03-10 23:11:00) [74]
> sniknik © (10.03.09 22:44) [6]
Ну не знаю. Мне было бы проще извлечь данные, а потом с ними разбираться. Тем более, что датасет, он, конечно, удобен, но ... как-то... со всеми претензиями, разбираться... Мой ответ: хочешь хорошо, делай САМ! Другого нет.
sniknik (2009-03-10 22:44:00) [75]> Я бы заполнил какой-нибудь СтрингГрид, или ЛистВью Значениями, потом тасовал их
а в чем будет разница? кроме того, что в датасете с данными работать было бы удобнее.
korneley (2009-03-10 22:10:00) [76]В простейшем случае, на OnDragOver акцептируешь посылателя, на OnDragDrop выполняешь [1] не забывая о [4] Да, и к чему такой джаз? Я бы заполнил какой-нибудь СтрингГрид, или ЛистВью Значениями, потом тасовал их, как душе угодно, и , по результатам, всандалил бы в базу :)
clickmaker (2009-03-10 18:24:00) [77]> А просто перетаскивать не получится?
нет. Грид не содержит данных. Он всего лишь их показывает. Поэтому сортировка должна быть именно у источника данных.
Mishechka (2009-03-10 18:21:00) [78]
> заведи поле для упорядочивания, потом меняй значения
А просто перетаскивать не получится?
KSergey (2009-03-10 18:17:00) [79]я делал, только наверное на основе StringGrid, хотя и не помню, может и на "оторванном" Ado DataSet лкально менял поле сортировки, как clickmaker [1] говорит.
clickmaker (2009-03-10 17:59:00) [80]заведи поле для упорядочивания, потом меняй значения