using System; using System.Collections.Generic; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; using DevComponents.DotNetBar; using System.IO; using System.Runtime.InteropServices; using System.Data.OleDb; using GeoScene.Data; using GeoScene.Globe; using GeoScene.Engine; namespace PipeLine.Forms { public partial class FrmReLiQuery : Office2007Form { private GSOGlobeControl globeControl1; private DevComponents.DotNetBar.Controls.DataGridViewX dataGridViewX1; public FrmReLiQuery(GSOGlobeControl ctl, DevComponents.DotNetBar.Controls.DataGridViewX d) { this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; this.MaximizeBox = false; this.MinimizeBox = false; InitializeComponent(); globeControl1 = ctl; dataGridViewX1 = d; } private void btnSel_Click(object sender, EventArgs e) { try { string type = combType.Text.ToString(); dataGridViewX1.Visible = true; string sql = "select " + Utility.Query_Fields["热力"] + " from 热力管线"; //"select 材质,类型,起始埋深,终点埋深,管径,压力,编号 from reli"; ArrayList filters = new ArrayList(); if (combType.SelectedIndex > 0) { string sql1 = " 埋设方式='" + combType.SelectedItem.ToString() + "'"; filters.Add(sql1); } if (combMaterial.SelectedIndex > 0) { string sql2 = " 材质='" + combMaterial.SelectedItem.ToString() + "'"; filters.Add(sql2); } if (txtGuanJing.Text != "") { string sql7 = " 管径_毫米>=" + txtGuanJing.Text + ""; filters.Add(sql7); } if (txtYali.Text != "") { string sql3 = " 压力=" + txtYali.Text + ""; filters.Add(sql3); } if (txtDeep1.Text != "") { string sql4 = " 起始埋深>=" + txtDeep1.Text + ""; filters.Add(sql4); } if (txtDeep1.Text != "") { string sql5 = "终止埋深>=" + txtDeep1.Text + ""; filters.Add(sql5); } if (combUserType.SelectedIndex > 0) { string sql7 = " 使用类型='" + combUserType.SelectedItem.ToString() + "'"; filters.Add(sql7); } if (combUse.SelectedIndex > 0) { string sql8 = " 是否废弃='" + combUse.SelectedItem.ToString() + "'"; filters.Add(sql8); } if (combBuild1.SelectedIndex > 0 && combBuild2.SelectedIndex > 0) { string sql6 = "建设年代 between '" + combBuild1.SelectedItem.ToString() + "' and '" + combBuild2.SelectedItem.ToString() + "'"; filters.Add(sql6); } string[] aa = (string[])(filters.ToArray(typeof(string))); if (aa.Length > 0) sql += " where " + string.Join(" and ", aa); DataTable table = OledbHelper.QueryTable(sql); dataGridViewX1.DataSource = table; dataGridViewX1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells; this.DialogResult = DialogResult.OK; this.Close(); } catch (Exception exp) { LogError.PublishError(exp); } } private void FrmReLiQuery_Load(object sender, EventArgs e) { dataGridViewX1.Visible = false; dataGridViewX1.ReadOnly = true; string sqltype = "select distinct 使用类型 from 热力管线"; DataTable table = OledbHelper.QueryTable(sqltype); combUserType.Items.Add("无"); for (int i = 0; i < table.Rows.Count; i++) { DataRow dr = table.Rows[i]; string colString1 = dr[0].ToString(); if (colString1 == null || colString1.Trim() == "") continue; combUserType.Items.Add(colString1); } string sqltype1 = "select distinct 材质 from 热力管线"; DataTable table1 = OledbHelper.QueryTable(sqltype1); combMaterial.Items.Add("无"); for (int j = 0; j < table1.Rows.Count; j++) { DataRow dr = table1.Rows[j]; string colString1 = dr[0].ToString(); if (colString1 == null || colString1.Trim() == "") continue; combMaterial.Items.Add(colString1); } string sqltype2 = "select distinct 埋设方式 from 热力管线"; DataTable table2 = OledbHelper.QueryTable(sqltype2); combType.Items.Add("无"); for (int k = 0; k < table2.Rows.Count; k++) { DataRow dr = table2.Rows[k]; string colString1 = dr[0].ToString(); if (colString1 == null || colString1.Trim() == "") continue; combType.Items.Add(colString1); } string sqltype3 = "select distinct 是否废弃 from 热力管线"; DataTable table3 = OledbHelper.QueryTable(sqltype3); combUse.Items.Add("无"); for (int h= 0; h < table3.Rows.Count; h++) { DataRow dr = table3.Rows[h]; string colString1 = dr[0].ToString(); if (colString1 == null || colString1.Trim() == "") continue; combUse.Items.Add(colString1); } } GSOFeature feature; //当前处于选中的feature private void dataGridViewX1_MouseClick(object sender, MouseEventArgs e) { if (feature != null && feature.HighLight == true) { feature.HighLight = false; } if (e.Button == MouseButtons.Right) { DataGridView.HitTestInfo hittestinfo = dataGridViewX1.HitTest(e.X, e.Y); if (hittestinfo.RowIndex > -1) { string featureName = dataGridViewX1.Rows[hittestinfo.RowIndex].Cells[0].Value.ToString(); contextMenuStrip1.Show(dataGridViewX1, e.X, e.Y); featureName = featureName.Trim(); for (int i = 0; i < globeControl1.Globe.Layers.Count; i++) { GSOLayer layer = globeControl1.Globe.Layers[i]; if (layer.Type == EnumLayerType.FeatureLayer) { GSOFeatures features = layer.GetFeatureByName(featureName, false); for (int j = 0; j < features.Length; j++) { if (features[j].Name == featureName) { feature = features[j]; } } } } } } } private void FrmReLiQuery_FormClosing(object sender, FormClosingEventArgs e) { if (feature != null) { feature.HighLight = false; } } private void FlyToMenu_Click(object sender, EventArgs e) { if (feature != null) { globeControl1.Globe.FlyToFeature(feature); } } int count = 0; private void timer1_Tick(object sender, EventArgs e) { if (count < 6) { count++; if (feature != null) { if (count % 2 != 0) { feature.HighLight = true; globeControl1.Refresh(); } else { feature.HighLight = false; globeControl1.Refresh(); } } } else { timer1.Stop(); count = 0; } } private void LightMenu_Click(object sender, EventArgs e) { timer1.Start(); } private void btnCanel_Click(object sender, EventArgs e) { this.Close(); } } }