Вниз
Скачать: CL | DM;

перетаскивание записей в 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.026 c
14-1095503081
Ломброзо
2004-09-18 14:24
2004.10.10
Взял и умер!


4-1091205205
ASd
2004-07-30 20:33
2004.10.10
состояние лотка у CD


1-1096128732
ВиТ
2004-09-25 20:12
2004.10.10
Как правидлно закрыть Excel?


1-1095774770
nika_ufc
2004-09-21 17:52
2004.10.10
Работа с фонтами


3-1094789320
Mefodiy
2004-09-10 08:08
2004.10.10
Использование UCASE в SQL запросе




   Наверх