|
Imports WeifenLuo.WinFormsUI
Imports System.Data.OracleClient
Imports ICSharpCode.TextEditor
Imports ICSharpCode.TextEditor.Document
Public Class frmQuery
Inherits DockContent
Private oOracleReader As New clsOracleReader
Private ThreadQuery As System.Threading.Thread
Private strStatus As String
Private dStartTime As Date, dEndTime As Date
Private bQueryChanged As Boolean = False
Private strSavedAs As String
Private Delegate Sub BindDatagrid()
Private Sub frmQuery_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim strPathXSHD As String = My.Application.Info.DirectoryPath & "\res\"
Dim provider As New FileSyntaxModeProvider(strPathXSHD)
Dim manager As HighlightingManager = HighlightingManager.Manager
manager.AddSyntaxModeFileProvider(provider)
texteditorQuery.Document.HighlightingStrategy = manager.FindHighlighter("ORACLESQL")
With texteditorQuery
.Font = New Font("Courier New", 9, FontStyle.Regular)
.ShowEOLMarkers = False
.ShowInvalidLines = False
.ShowSpaces = False
.ShowTabs = False
.ShowVRuler = False
.ShowHRuler = False
.IsIconBarVisible = False
.ShowLineNumbers = True
.AutoScroll = True
End With
AddHandler texteditorQuery.ActiveTextAreaControl.Document.DocumentChanged, AddressOf DocumentEventHandler
End Sub
Private Sub DocumentEventHandler(ByVal sender As Object, ByVal e As ICSharpCode.TextEditor.Document.DocumentEventArgs)
If Not bQueryChanged Then
bQueryChanged = True
Me.TabText = Me.TabText & "*"
End If
End Sub
Private Sub frmQuery_Shown(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Shown
Me.ContextMenuStrip = Me.Parent.ContextMenuStrip
End Sub
Private Sub CutMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CutMenuItem.Click
texteditorQuery.ActiveTextAreaControl.TextArea.ClipboardHandler.Cut(sender, e)
End Sub
Private Sub CopyMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CopyMenuItem.Click
texteditorQuery.ActiveTextAreaControl.TextArea.ClipboardHandler.Copy(sender, e)
End Sub
Private Sub PasteMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PasteMenuItem.Click
texteditorQuery.ActiveTextAreaControl.TextArea.ClipboardHandler.Paste(sender, e)
End Sub
Private Sub SelectAllMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SelectAllMenuItem.Click
texteditorQuery.ActiveTextAreaControl.TextArea.ClipboardHandler.SelectAll(sender, e)
End Sub
Private Sub UndoMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles UndoMenuItem.Click
texteditorQuery.Undo()
End Sub
Private Sub RedoMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RedoMenuItem.Click
texteditorQuery.Redo()
End Sub
Public Sub ExecuteQuery()
AddHandler oOracleReader.QueryCompleted, AddressOf QueryCompleted
ThreadQuery = New System.Threading.Thread(AddressOf oOracleReader.ExecuteQuery)
ThreadQuery.IsBackground = True
dStartTime = DateTime.Now
ThreadQuery.Start(texteditorQuery.Text)
strStatus = "Executing..."
End Sub
Public Sub InterruptQuery()
oOracleReader.InterruptQuery()
If Not ThreadQuery Is Nothing Then ThreadQuery.Abort()
ThreadQuery = Nothing
strStatus = "Execution aborted..."
End Sub
Public Sub QueryCompleted()
If Me.InvokeRequired Then
Dim d As New BindDatagrid(AddressOf BindDatagridHandler)
Invoke(d)
Else
BindDatagridHandler()
End If
ThreadQuery = Nothing
oOracleReader.Clear()
End Sub
Private Sub BindDatagridHandler()
Dim oDataset As DataSet = oOracleReader.Dataset
If Not oDataset Is Nothing Then
DataGridView1.DataSource = oDataset.Tables(0)
DataGridView1.Show()
dEndTime = DateTime.Now
strStatus = oDataset.Tables(0).Rows.Count & " rows selected in " & System.Math.Round(dEndTime.Subtract(dStartTime).TotalSeconds, 3) & " seconds"
Me.Cursor = Cursors.Default
End If
End Sub
Private Sub btnExecute_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExecute.Click
Me.Cursor = Cursors.AppStarting
ExecuteQuery()
End Sub
Private Sub btnAbort_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAbort.Click
If MessageBox.Show("Do you wish to cancel the running query?", "Cancel query?", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then
Me.Cursor = Cursors.Default
InterruptQuery()
End If
End Sub
Public ReadOnly Property Status()
Get
Status = strStatus
End Get
End Property
Public Property Changed() As Boolean
Get
Return bQueryChanged
End Get
Set(ByVal value As Boolean)
bQueryChanged = value
End Set
End Property
Public Property SavedAs() As String
Get
Return strSavedAs
End Get
Set(ByVal value As String)
strSavedAs = value
End Set
End Property
Private Sub NewToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NewPageToolStripMenuItem.Click
Dim frmM As frmMain = Me.MdiParent
If Not frmM Is Nothing Then frmM.NewTab()
End Sub
Private Sub DuplicateToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DuplicateToolStripMenuItem.Click
Dim frmM As frmMain = Me.MdiParent
If Not frmM Is Nothing Then frmM.DuplicateTab()
End Sub
Private Sub CloseToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CloseToolStripMenuItem.Click
Me.Close()
End Sub
Private Sub frmQuery_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
If bQueryChanged And texteditorQuery.Text.Trim <> "" Then
Me.ActivateMdiChild(Me)
If MessageBox.Show("Do you wish save the changes before closing?", "Close...", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then
Dim frmM As frmMain = Me.MdiParent
If Not frmM Is Nothing Then frmM.SaveTab(Me, False)
End If
End If
End Sub
Private Sub SaveToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveToolStripMenuItem.Click
Dim frmM As frmMain = Me.MdiParent
If Not frmM Is Nothing Then frmM.SaveTab(Me, False)
End Sub
Private Sub SaveAsToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveAsToolStripMenuItem.Click
Dim frmM As frmMain = Me.MdiParent
If Not frmM Is Nothing Then frmM.SaveTab(Me, True)
End Sub
Private Sub CloseAllToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CloseAllToolStripMenuItem.Click
Dim frmM As frmMain = Me.MdiParent
If Not frmM Is Nothing Then frmM.CloseAll()
End Sub
Private Sub CloseAllButActiveToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CloseAllButActiveToolStripMenuItem.Click
Dim frmM As frmMain = Me.MdiParent
If Not frmM Is Nothing Then frmM.CloseAllButActive()
End Sub
Private Sub RenameTabToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RenameTabToolStripMenuItem.Click
Dim strInputText As String = InputBox("Please insert a new name for the selected page", "Rename page", "")
If strInputText.Trim <> "" Then Me.TabText = strInputText
End Sub
End Class
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
I am 40 years old and I've been working with C++, Visual Basic .NET, C# and ASP.NET. I have a large experience in Industrial Automation solutions, but I've worked also as Web developer and DBA. I like to share knowledge and projects with other people.