Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.04.11;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.006 c
7-32998
gurin
2002-01-18 05:18
2002.04.11
Virtual drive


14-32947
Ежик
2002-03-01 09:38
2002.04.11
Update Delphi6


6-32916
j21
2002-01-26 18:37
2002.04.11
Inet


1-32765
Hammer
2002-03-28 16:47
2002.04.11
Убрать SysTray


1-32762
SergeySh
2002-03-26 20:13
2002.04.11
ПОМОГИТЕ!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский