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

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

Drag & Drop в DBGrid [D7, Paradox]


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

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]

заведи поле для упорядочивания, потом меняй значения


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

Наверх

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