brunnengi Опубликовано 17 декабря, 2017 Поделиться Опубликовано 17 декабря, 2017 Здравствуйте. Как сделать Drag and Drop для строчки из TStringGrid? Что бы можно было строчку перетащить в текстовое поле или в DragTarget и получать содержимое ячейки? Цитата Ссылка на комментарий
0 gonzales Опубликовано 9 августа, 2019 Поделиться Опубликовано 9 августа, 2019 Чтобы не плодить темы спрошу в этой. Столкнулся с такой же задачей, не пойму как решить. Есть два грида, нужно перетаскивать ячейки из одного в другой. Более менее разобрался с гридом, из которого тяну ячейки procedure TForm2.GridMouseDown(Sender: TObject; button: TMouseButton; Shift: TShiftState; X, Y: single); var Svc: IFMXDragDropService; DragData: TDragObject; DragImage: TBitmap; rect:trectf; begin TPlatformServices.Current.SupportsPlatformService(IFMXDragDropService, Svc); with Sender as TStringGrid do begin Grid.CellByPoint(X, Y, SourceCol, SourceRow); DragImage:=TBitmap.Create; DragImage.Width:=round(Grid.Width); DragImage.Height:=round(grid.Height); rect:=rectf(0,(SourceRow+1)*grid.RowHeight,grid.Width,(SourceRow+2)*grid.RowHeight); DragImage.Canvas.BeginScene(); DragImage.Canvas.Fill.Color:=4280444565; //DragImage.Canvas.FillRect(rect,0,0,[],1); DragImage.Canvas.FillText(rect,grid.Cells[SourceCol,SourceRow],false,1.0,[],TTextalign.Leading); DragImage.Canvas.EndScene; form1.currentItem := form1.items.ChildNodes.Nodes[SourceRow]; DragData.Source := Sender; try DragData.Data := SourceRow; Svc.BeginDragDrop(self, DragData, DragImage); finally DragImage.Free; end; end; end; Вижу, что код отрабатывает, появляется изображение с текстом ячейки, которую перетаскиваю. Но вот заставить принять ее второй грид не могу. Более того, даже в droptarget ничего не попадает. Не пойму как гриду сказать, что он может принимать что-то по drag&drop В VCL это было так procedure TForm2.RoomGridDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); begin Accept := (Source = Grid); end; А как это сделать в FireMonkey? procedure TForm2.RoomGridDragOver(Sender: TObject; const Data: TDragObject; const Point: TPointF; var Operation: TDragOperation); begin Operation := TDragOperation.Copy; end; это не помогает... вообще не вызывается dragover... Цитата Ссылка на комментарий
0 gonzales Опубликовано 12 августа, 2019 Поделиться Опубликовано 12 августа, 2019 Отвечу сам себе. Проблема решена. Всего два дня поисков и вот он, случай - краеугольный камень поиска ошибок! Меня аж забомбило, когда я это откопал. Оказалось, что мой грид лежит на лайоуте, у которого hittest = false. Так вот до тех пор, пока я не перевел его в true грид отказывался принимать ondragover. Но как только layout.hittest:=true все заработало. Дальше дело техники. Ingalime, qz5, Евгений Корепов и 1 другой 4 Цитата Ссылка на комментарий
Вопрос
brunnengi
Здравствуйте.
Как сделать Drag and Drop для строчки из TStringGrid? Что бы можно было строчку перетащить в текстовое поле или в DragTarget и получать содержимое ячейки?
Ссылка на комментарий
2 ответа на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.