![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
перетаскивание записей в dbgrid'e [D6, D7, PostgreSQL]
radiant09 © (2004-09-09 21:37:00)имеется таблица в бд, представляющая из себя утвержденную форму документа [ num№ пункта(int), nameнаименов-е свед. (ch), codeкод свед. (ch)].
требуется в dbgrid'e реализовать механизм перестановки пунктовс соотв. изменением num в базе, путем перетаскивания записей.
буду особенно признателен, если кто-нибудь скинет кусок исходника подобной задачи.
HSolo (2004-09-10 09:05:00) [1]Может, я чего-то не понимаю, но зачем перетаскивать-то? У Вас же есть в таблице поле "№ п/п"? Ну так и пусть пользователь его меняет, как ему угодно, а потом жмет кнопку "Упорядочить", по которой выборка сортируется по этому полю.
А при вставке/удалении записей вообще можно автоматически менять значение этого поля, что-нибудь вроде
update MyTable set NumPP = NumPP+1 where NumPP >= :NewNumPP
sniknik (2004-09-10 08:15:00) [2]> Мне вот интересно можно ли определить на какой записи стоит курсор,
не надо определять (ничего не даст), а курсор всегда стоит на текушей (в рекордсете) записи.
ну если хочется
type
TMyDBGrid = class(TDBGrid);
и дальше
TMyDBGrid(DBGrid1).Row - номер строки в гриде
а вот что может понадобится
DBGrid1.SelectedRows
(если делать то уж делать с возможностью граппу записей выделять)
radiant09 (2004-09-09 22:57:00) [3]Ясный красный ) Мне вот интересно можно ли определить на какой записи стоит курсор, может через высоту ячеек и прочее, но что делать если там вертикальный scroll и т.д.?
По другому то, конечно, можно, но больно неказисто на вид получится и вдобавок мне почему-то вперлось что я где-то похожее видел...
Zacho (2004-09-09 22:49:00) [4]Если такое действительно нужно (в чём я крайне сомневаюсь), то сделай это отдельно, (отедльная кнопка, пункт в меню и т.п.) например с помощью TListBox или ещё как-нибудь.
Imho, повторюсь, drag'n'drop в гриде в данном случае скорее вреден.
P.S. Думаю, что ты это знаешь, но на всякий случай напомню:
В TDBGrid данных нет, они есть в соответствующем TDataSet
radiant09 (2004-09-09 22:35:00) [5]и по чему сортировать? мне нужно просто переставить пункты в определенном порядке, в базе то я поменяю нумерацию, а как это на экране сделать? при drag&drop там только координаты мыши есть, а вот как определить перед какой записью я отпустил перетаскиваемый пункт вот в чем вопрос?
я не представляю как это можно сделать, и можно ли в принципе, может кто-нибудь знает как...
megabyte (2004-09-09 22:26:00) [6]Ну м.б. тебе нужна различная сортировка и фильтрация. Там имеет место перестановка записей и полей.
radiant09 (2004-09-09 22:10:00) [7]имеется утвержденнаяформа отчетности, которая содержит наименование, код сведений, дальше идут графы, заполняемые пользователем. смысл в том, что это форма отчетности иногда меняеется, т.е. могут добавлятся, удаляться к-л пункты и менятся местами. чтобы не вносить изменения в программу или шаблон надо сделать механизм создания документа для пользователя.
Zacho (2004-09-09 21:54:00) [8]1.Imho в гриде это нафиг не нужно и даже вредно.
2. Возможно, я просто не понял, нормально опиши задачу.