Drag&Drop между двумя StringGrid'ами; не выделяется ячейка источника
Делаю так:
у Grid1:
DragMode = dmAutomatic;
у Grid2:
Код:
void __fastcall TmyClass::Grid2DragOver(TObject *Sender, TObject *Source,
int X, int Y, TDragState State, bool &Accept)
{
Accept = Source == Grid1;
}
void __fastcall TmyClass::Grid2DragDrop(TObject *Sender, TObject *Source,
int X, int Y)
{
int ACol, ARow;
Grid2->MouseToCell( X, Y, ACol, ARow);
Grid2->Cells[ACol][ARow] = Grid1->Cells[1][Grid1->Row];
}
int X, int Y, TDragState State, bool &Accept)
{
Accept = Source == Grid1;
}
void __fastcall TmyClass::Grid2DragDrop(TObject *Sender, TObject *Source,
int X, int Y)
{
int ACol, ARow;
Grid2->MouseToCell( X, Y, ACol, ARow);
Grid2->Cells[ACol][ARow] = Grid1->Cells[1][Grid1->Row];
}
сам процесс перетаскивания работает, кроме одного момента.
При нажатии кнопки мыши над первым гридом, не выделяется ячейка, над которой нажата кнопка.
Как решить?
Вообще не выделяется, или при начале перетаскивания? И не выделяется как - Select или Focus?
Стоит нажать левую кнопку мыши на первом гриде - курсор сразу принимает вид DrugCursor.
Видимо это называется Select, потому что при перетаскивании на второй грид в любом случае перетаскивается Cells[1][0], то есть ячейка первой строки, а не выбранной.
Я так понимаю в каком-то событии нужно явно указать где менять выбранную строку. Не могу только понять где...
Тогда вам надо делать dmManual DragDrop и отлавливать "желания" пользователя перетащить или выделить диапазон самостоятельно.
и возможно (нет просто времени проверять что имеет ввиду автор) возможно надо установить свойство HideSelection в false
Цитата: Phodopus
Тогда вам надо делать dmManual DragDrop и отлавливать "желания" пользователя перетащить или выделить диапазон самостоятельно.
А как это сделать? Я первый раз пытаюсь реализовать Drag and Drop, подскажите, если не тяжело.
Ознакомтесь пожалуйста с соотвествующими разделам справки. Эта тема там вполне достаточно освещена - форум не является заменой Ф1 - и размещение подобных вопросов являкется здесь нарушением.