Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.10;
Скачать: 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 вся ветка

Текущий архив: 2004.10.10;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.025 c
1-1095767994
avsam
2004-09-21 15:59
2004.10.10
Edit (Combobox) с выпадающим калькулятором


1-1096013372
Koala
2004-09-24 12:09
2004.10.10
Опять про MDI приложение....


1-1095976334
Ezhik
2004-09-24 01:52
2004.10.10
Поиск файлов


4-1094532736
Duka
2004-09-07 08:52
2004.10.10
USB


1-1095582580
appendix
2004-09-19 12:29
2004.10.10
время в потоке