Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.04.11;
Скачать: CL | DM;

Вниз

Drag and Drop   Найти похожие ветки 

 
AndrewK ©   (2002-03-20 08:41) [0]

Как сделать Drag and Drop из DBGrid в DBGrid?


 
AndrewK ©   (2002-03-20 11:19) [1]

Проблема в том, что при перетаскивании из одной DBGrid в другую я не могу получить запись в которую сбрасывается перетаскиваемый элемент. На StartDrag определяю номер записи в базе
DBGrid1.DataSource.DataSet.FieldByName("Code").AsInteger. Когда бросаю элемент аналогичным образом беру номер записи во второй DBGrid (DBGrid2.DataSource.DataSet.FieldByName("Code").AsInteger). Делов в том, что при сбросе у меня не меняет положения курсор в DBGrid2 и я получаю не верный номер записи. Как заставить курсор таблицы следовать за курсором мыши при перетаскивании на нее элемента?


 
Lusha ©   (2002-03-20 11:40) [2]

Предлагаю следующий вариант обработчика...

var Cell : TGridCoord;
BM: TBookMarkStr;
begin
Cell := TMyDBGrid(Sender).MouseCoord(X, Y);
with TMyDBGrid(Sender).DataLink do
try
DataSource.DataSet.DisableControls;
BM := DataSource.DataSet.BookMark;
ActiveRecord := Cell.y;


// действия по занесению значения

finally
DataSource.DataSet.BookMark := BM;
DataSource.DataSet.EnableControls;
end;
end;

где TMyDBGrid = class(TDBGrid)

P.S. писал по памяти, не проверял, так что не обессудьте...


 
xpdeveloper   (2002-03-20 15:06) [3]

Проблема в том, что при перетаскивании из одной DBGrid в другую я не могу получить запись в которую сбрасывается перетаскиваемый элемент.

Можно написать маленький DragObject в виде структуры где будут указаны источники
DataSet и Bookmark на запись которую надо перетаскивать.

Как заставить курсор таблицы следовать за курсором мыши при перетаскивании на нее элемента?

надо использовать CMDrag событие/сообщение
procedure CMDrag(var Message: TCMDrag); message CM_DRAG;
а в нем обрабатывать dragmessage:

procedure YourGrid.CMDrag(var Message: TCMDrag);
begin
inherited;
with Message, DragRec^ do
case DragMessage of
dmDragMove:
begin
//драг в котроле здесь
with ScreenToClient(Pos) do
//эта функция - вот она будет перемещать курсор таблицы
MoveGridCursor(Source, X, Y);
end;
dmDragEnter:
begin
//драг пришел на контрол
end;
dmDragLeave:
begin
//драг ушел на другой контрол
end;
dmDragDrop:
begin
//здесь запись кидается
end;
end;
end;




Страницы: 1 вся ветка

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

Наверх




Память: 0.47 MB
Время: 0.01 c
14-32944
IronHawk
2002-02-27 16:22
2002.04.11
Как программно определить, создана ли дочерняя форма ?


3-32616
ФФ
2002-03-19 07:41
2002.04.11
как открыть таблицу foxpro?


3-32640
Malder
2002-03-15 20:45
2002.04.11
Ограничение полномочий пользователей...


1-32742
dimonf
2002-03-29 09:39
2002.04.11
Народ, подскажите, как мне вывести на печать TConvas Panel-и?


1-32748
cok
2002-03-29 20:51
2002.04.11
Explorer.exe