private PointF GetDragDropLocation(DragEventArgs e, XRControl control, XRControl parent) { PointF bandPoint = EvalBandPoint(e, parent.Band); bandPoint = BandViewSvc.SnapBandPoint(bandPoint, parent.Band, control, new XRControl[] { control }); PointF screenPoint = BandViewSvc.ControlViewToScreen(bandPoint, parent.Band); return(BandViewSvc.ScreenToControl(new RectangleF(screenPoint, SizeF.Empty), parent).Location); }
public override void HandleDragDrop(object sender, DragEventArgs e) { ResetUI(e); XRControl parent = BandViewSvc.GetControlByScreenPoint(new Point(e.X, e.Y)); if (parent == null) { return; } XRRichText demoRichText = new XRRichText(); PointF location = GetDragDropLocation(e, demoRichText, parent); DesignToolHelper.AddToContainer(Host, demoRichText); demoRichText.LocationF = location; demoRichText.Size = new Size(100, 25); demoRichText.DataBindings.Add("Rtf", null, "test"); }
public override void HandleDragDrop(object sender, DragEventArgs e) { ResetUI(e); DataInfo[] droppedData = e.Data.GetData(typeof(DataInfo[])) as DataInfo[]; XRControl parentControl = BandViewSvc.GetControlByScreenPoint(new Point(e.X, e.Y)); ISelectionService selectSvc = Host.GetService(typeof(ISelectionService)) as ISelectionService; if (((parentControl is XRPanel) || (parentControl is Band)) && ((droppedData.Length == 1))) { AddSingleField(e, droppedData, parentControl, selectSvc); } else if (((parentControl is XRPanel) || (parentControl is Band)) && ((droppedData.Length > 1))) { AddMultipleFields(e, droppedData, parentControl, selectSvc); } else { base.HandleDragDrop(sender, e); } }
private void AddMultipleFields(DragEventArgs e, DataInfo[] droppedData, XRControl parentControl, ISelectionService selectSvc) { XRTableCell headerCell; XRControl parent = BandViewSvc.GetControlByScreenPoint(new Point(e.X, e.Y)); if (parent == null) { return; } SizeF size = new SizeF(100F * droppedData.Length, 25F); if (parentControl is DetailBand) { size.Width = CalculateWidth(parentControl); } XRTable detailTable = new XRTable() { Name = "DetailTable" }; detailTable.BeginInit(); XRTableRow detailRow = new XRTableRow(); detailTable.Rows.Add(detailRow); this.droppedControl = detailTable; detailTable.SizeF = size; Host.Container.Add(detailTable); Host.Container.Add(detailRow); for (int i = 0; i < droppedData.Length; i++) { XRTableCell cell = new XRTableCell(); string expression = ExpressionBindingHelper.NormalizeDataMember(droppedData[i].Member, parent.Report.DataMember); cell.ExpressionBindings.Add( new ExpressionBinding("Text", expression)); detailRow.Cells.Add(cell); Host.Container.Add(cell); } detailTable.EndInit(); PointF dropPoint = GetDragDropLocation(e, detailTable, parentControl); this.DropXRControl(parentControl, new PointF(0, dropPoint.Y)); selectSvc.SetSelectedComponents(new XRControl[] { detailTable }); if ((parentControl is DetailBand)) { PageHeaderBand band = null; if ((parentControl as DetailBand).Report.Bands.OfType <PageHeaderBand>().FirstOrDefault() != null) { band = (parentControl as DetailBand).Report.Bands[BandKind.PageHeader] as PageHeaderBand; } else { band = new PageHeaderBand(); (parentControl as DetailBand).Report.Bands.Add(band); Host.Container.Add(band); } XRTable headerTable = new XRTable() { Name = "HeaderTable" }; headerTable.BeginInit(); XRTableRow headerRow = new XRTableRow(); headerTable.Rows.Add(headerRow); headerTable.SizeF = size; Host.Container.Add(headerTable); Host.Container.Add(headerRow); for (int i = 0; i < droppedData.Length; i++) { headerCell = CreateTableCell(Host, headerRow, droppedData[i].DisplayName); } headerTable.Borders = BorderSide.All; headerTable.EndInit(); band.Controls.Add(headerTable); headerTable.LocationF = droppedControl.LocationF; } }