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