using FastReport.Utils; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; namespace FastReport.FastQueryBuilder { internal class DataBaseView : ListBox { private Rectangle dragBoxFromMouseDown; public Table SelectedTable => SelectedItem as Table; public DataBaseView() { DrawMode = DrawMode.OwnerDrawFixed; IntegralHeight = false; } public void FillTableList(List tl) { BeginUpdate(); Items.Clear(); foreach (Table tbl in tl) { Items.Add(tbl); } EndUpdate(); } protected override void OnDrawItem(DrawItemEventArgs e) { e.DrawBackground(); if (e.Index >= 0) { this.DrawImageAndText(e, this.GetImage(222), Items[e.Index].ToString()); } } protected override void OnMouseDown(MouseEventArgs e) { base.OnMouseDown(e); if (SelectedItem != null) { Size dragSize = SystemInformation.DragSize; dragBoxFromMouseDown = new Rectangle(new Point(e.X - (dragSize.Width / 2), e.Y - (dragSize.Height / 2)), dragSize); } else dragBoxFromMouseDown = Rectangle.Empty; } protected override void OnMouseMove(MouseEventArgs e) { base.OnMouseMove(e); if ((e.Button & MouseButtons.Left) == MouseButtons.Left) { if ((dragBoxFromMouseDown != Rectangle.Empty) && !dragBoxFromMouseDown.Contains(e.X, e.Y)) { DoDragDrop(SelectedItem, DragDropEffects.Copy); } } } protected override void OnMouseUp(MouseEventArgs e) { base.OnMouseUp(e); dragBoxFromMouseDown = Rectangle.Empty; } public void UpdateDpiDependencies() { ItemHeight = this.LogicalToDevice(18); } } }