123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207 |
- using FastReport.Forms;
- using FastReport.Utils;
- using System;
- using System.Collections.Generic;
- using System.Drawing;
- using System.Windows.Forms;
- namespace FastReport.FastQueryBuilder
- {
- internal partial class QueryDesigner : BaseForm, IQueryDesigner
- {
- private Workspace workspace;
- private FieldsView fieldsView;
- private DataBaseView dataBaseView;
- public QueryDesigner()
- {
- InitializeComponent();
- CanSaveRestoreState = true;
- #if AVALONIA
- toolStrip1.BorderThickness = toolStrip2.BorderThickness = new Padding(0);
- #endif
- workspace = new Workspace();
- workspace.Dock = DockStyle.Fill;
- workspace.Parent = splitContainer2.Panel1;
- fieldsView = new FieldsView();
- fieldsView.Dock = DockStyle.Fill;
- fieldsView.Parent = splitContainer2.Panel2;
- dataBaseView = new DataBaseView();
- dataBaseView.Dock = DockStyle.Fill;
- dataBaseView.Parent = splitContainer1.Panel2;
- dataBaseView.DoubleClick += dataBaseView_DoubleClick;
- UpdateButtonsState();
- Localize();
- UIUtils.CheckRTL(this);
- UpdateDpiDependencies();
- }
- public override void Localize()
- {
- base.Localize();
- MyRes res = new MyRes("Forms,QueryBuilder");
- Text = res.Get("");
- btnOk.ToolTipText = Res.Get("Buttons,OK");
- btnCancel.ToolTipText = Res.Get("Buttons,Cancel");
- btnDesign.Text = res.Get("Designer");
- btnResult.Text = res.Get("Result");
- btnRunSql.Text = res.Get("Run");
- }
- protected override void SaveState()
- {
- base.SaveState();
- Storage.SetDip("VerticalSplitter", splitContainer1.SplitterDistance);
- Storage.SetDip("HorizontalSplitter", splitContainer2.SplitterDistance);
- }
- protected override void RestoreState()
- {
- base.RestoreState();
- splitContainer1.SplitterDistance = Storage.GetDip("VerticalSplitter", 600, 100, splitContainer1.Width - 100);
- splitContainer2.SplitterDistance = Storage.GetDip("HorizontalSplitter", 350, 100, splitContainer2.Height - 70);
- }
- public override void UpdateDpiDependencies()
- {
- base.UpdateDpiDependencies();
- toolStrip1.Height = toolStrip2.Height = this.LogicalToDevice(28);
- toolStrip1.Renderer = toolStrip2.Renderer = Config.DesignerSettings.ToolStripRenderer;
- toolStrip1.Font = toolStrip2.Font = Font;
- btnDesign.Image = GetImage(68);
- btnResult.Image = GetImage(54);
- btnOk.Image = GetImage(210);
- btnCancel.Image = GetImage(212);
- btnRunSql.Image = GetImage(3);
- btnOk.Size = btnCancel.Size = this.LogicalToDevice(new Size(23, 23));
- workspace.UpdateDpiDependencies();
- dataBaseView.UpdateDpiDependencies();
- tbSql.Font = this.LogicalToDevice(Storage.GetFont("QueryWindow", DrawUtils.FixedFont), true);
- dgvResult.RowTemplate.Height = this.LogicalToDevice(19);
- }
- #region Public Members
- public void DesignQuery()
- {
- OnGetTableList?.Invoke(this, EventArgs.Empty);
- ShowDialog();
- }
- public void DoFillTableList(List<Table> tl) => dataBaseView.FillTableList(tl);
- public void Clear() => workspace.Clear();
- public ITableView DoAddTable(Table table, Point position) => workspace.DoAddTable(table, position);
- public List<Link> Links
- {
- get => workspace.Links;
- set => workspace.Links = value;
- }
- public List<Field> Fields
- {
- get => fieldsView.Fields;
- set => fieldsView.Fields = value;
- }
- public List<Field> Groups
- {
- get => fieldsView.Groups;
- set => fieldsView.Groups = value;
- }
- public string SQLText
- {
- get => tbSql.Text;
- set => tbSql.Text = value;
- }
- public object DataSource
- {
- get => dgvResult.DataSource;
- set => dgvResult.DataSource = value;
- }
- public event EventHandler OnOk;
- public event EventHandler OnCancel;
- public event EventHandler OnGetTableList;
- public event AddTableEventHandler OnAddTable
- {
- add => workspace.OnAddTable += value;
- remove => workspace.OnAddTable -= value;
- }
- public event EventHandler OnGenerateSQL;
- public event EventHandler OnRunSQL;
- #endregion
- private void dataBaseView_DoubleClick(object sender, EventArgs e)
- {
- workspace.AddTable(dataBaseView.SelectedTable);
- }
- private void btnOk_Click(object sender, EventArgs e)
- {
- OnOk?.Invoke(sender, e);
- }
- private void btnCancel_Click(object sender, EventArgs e)
- {
- OnCancel?.Invoke(sender, e);
- }
- private void btnDesign_Click(object sender, EventArgs e)
- {
- pageControl1.ActivePageIndex = 0;
- tbSql.Text = "";
- UpdateButtonsState();
- }
- private void btnResult_Click(object sender, EventArgs e)
- {
- pageControl1.ActivePageIndex = 1;
- UpdateButtonsState();
- // to finish editing in the fields grid
- tbSql.Focus();
- OnGenerateSQL?.Invoke(sender, e);
- }
- private void UpdateButtonsState()
- {
- btnDesign.Checked = pageControl1.ActivePageIndex == 0;
- btnResult.Checked = pageControl1.ActivePageIndex == 1;
- }
- private void btnRunSql_Click(object sender, EventArgs e)
- {
- try
- {
- OnRunSQL?.Invoke(sender, e);
- dgvResult.ColumnHeadersVisible = true;
- }
- catch (Exception exc)
- {
- FRMessageBox.Error(exc.Message);
- }
- }
- }
- }
|