These Visual Basic code sections are used on the Main Form of an Andorville™ Application.
They can be copied from this web page and pasted into your application.
A typical Andorville™ main form and a messages form are shown below.
The Project tab on the main form shows the details of the selected project.
Other tabs can be created to provide user interfaces to the application.
The Messages tab on the Messages window displays staus messages and warnings.
The XMessage Instructions tab displays instructions exchanged between applications over the Application Network.
The controls can be copied from the main form in the Application Template project to the main form in your application.
Insert your copyright notice and selected software license at the start of the code.
The example below shows the Signalworks copyright notice and the Apache 2.0 license notice.
'---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ' 'Copyright 2016 Signalworks Pty Ltd, ABN 26 066 681 598 'Licensed under the Apache License, Version 2.0 (the "License"); 'you may not use this file except in compliance with the License. 'You may obtain a copy of the License at ' 'http://www.apache.org/licenses/LICENSE-2.0 ' 'Unless required by applicable law or agreed to in writing, software 'distributed under the License is distributed on an "AS IS" BASIS, ''WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 'See the License for the specific language governing permissions and 'limitations under the License. ' '----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Add a brief application description to the start of the code.
Public Class Main 'The ADVL_Application_Template provides template code for developing an Andorville (TM) software application.
End Class
These are the main code regions used in an Andorville™ Application form.
Code regions can be collapsed to show only the region heading, or expanded to examine and edit the code.
#Region " Coding Notes - Notes on the code used in this class." '------------------------------------------------------------------------------------------------------------------------------ #End Region 'Coding Notes --------------------------------------------------------------------------------------------------------------------------------------------------------------------- #Region " Variable Declarations - All the variables and class objects used in this form and this application." '------------------------------------------------------------------------------------------------- #End Region 'Variable Declarations ------------------------------------------------------------------------------------------------------------------------------------------------------------ #Region " Properties - All the properties used in this form and this application" '------------------------------------------------------------------------------------------------------------ #End Region 'Properties ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- #Region " Process XML files - Read and write XML files." '------------------------------------------------------------------------------------------------------------------------------------- #End Region 'Process XML Files ---------------------------------------------------------------------------------------------------------------------------------------------------------------- #Region " Form Display Methods - Code used to display this form." '---------------------------------------------------------------------------------------------------------------------------- #End Region 'Form Display Methods ------------------------------------------------------------------------------------------------------------------------------------------------------------- #Region " Open and Close Forms - Code used to open and close other forms." '------------------------------------------------------------------------------------------------------------------- #End Region 'Open and Close Forms ------------------------------------------------------------------------------------------------------------------------------------------------------------- #Region " Form Methods - The main actions performed by this form." '--------------------------------------------------------------------------------------------------------------------------- #End Region 'Form Methods --------------------------------------------------------------------------------------------------------------------------------------------------------------------- #Region " Form Events - Events raised by this form." '----------------------------------------------------------------------------------------------------------------------------------------- #End Region 'Form Events ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
Add any useful coding notes to this section.
#Region " Coding Notes - Notes on the code used in this class." '------------------------------------------------------------------------------------------------------------------------------ 'ADD THE SYSTEM UTILITIES REFERENCE: ========================================================================================== 'The following references are required by this software: 'Project \ Add Reference... \ ADVL_Utilities_Library_1.dll 'The Utilities Library is used for Project Management, Archive file management, running XSequence files and running XMessage files. 'If there are problems with a reference, try deleting it from the references list and adding it again. 'ADD THE SERVICE REFERENCE: =================================================================================================== 'A service reference to the Message Service must be added to the source code before this service can be used. 'This is used to connect to the Application Network. 'Adding the service reference to a project that includes the WcfMsgServiceLib project: ----------------------------------------- 'Project \ Add Service Reference 'Press the Discover button. 'Expand the items in the Services window and select IMsgService. 'Press OK. '------------------------------------------------------------------------------------------------------------------------------ '------------------------------------------------------------------------------------------------------------------------------ 'Adding the service reference to other projects that dont include the WcfMsgServiceLib project: ------------------------------- 'Run the ADVL_Application_Network_1 application to start the Application Network message service. 'In Microsoft Visual Studio select: Project \ Add Service Reference 'Enter the address: http://localhost:8733/ADVLService 'Press the Go button. 'MsgService is found. 'Press OK to add ServiceReference1 to the project. '------------------------------------------------------------------------------------------------------------------------------ ' 'ADD THE MsgServiceCallback CODE: ============================================================================================= 'This is used to connect to the Application Network. 'In Microsoft Visual Studio select: Project \ Add Class 'MsgServiceCallback.vb 'Add the following code to the class: 'Imports System.ServiceModel 'Public Class MsgServiceCallback ' Implements ServiceReference1.IMsgServiceCallback ' Public Sub OnSendMessage(message As String) Implements ServiceReference1.IMsgServiceCallback.OnSendMessage ' 'A message has been received. ' 'Set the InstrReceived property value to the message (usually in XMessage format). This will also apply the instructions in the XMessage. ' Main.InstrReceived = message ' End Sub 'End Class '------------------------------------------------------------------------------------------------------------------------------ #End Region 'Coding Notes ---------------------------------------------------------------------------------------------------------------------------------------------------------------------
Declare the variables used by the form.
#Region " Variable Declarations - All the variables and class objects used in this form and this application." '------------------------------------------------------------------------------------------------- Public WithEvents ApplicationInfo As New ADVL_Utilities_Library_1.ApplicationInfo 'This object is used to store application information. Public WithEvents Project As New ADVL_Utilities_Library_1.Project 'This object is used to store Project information. Public WithEvents Message As New ADVL_Utilities_Library_1.Message 'This object is used to display messages in the Messages window. Public WithEvents ApplicationUsage As New ADVL_Utilities_Library_1.Usage 'This object stores application usage information. 'Declare Forms used by the application: Public WithEvents TemplateForm As frmTemplate 'Declare objects used to connect to the Application Network: Public client As ServiceReference1.MsgServiceClient Public WithEvents XMsg As New ADVL_Utilities_Library_1.XMessage Dim XDoc As New System.Xml.XmlDocument Public Status As New System.Collections.Specialized.StringCollection Dim ClientName As String 'The name of the client requesting service Dim MessageText As String 'The text of a message sent through the Application Network Dim MessageDest As String 'The destination of a message sent through the Application Network #End Region 'Variable Declarations ------------------------------------------------------------------------------------------------------------------------------------------------------------
Only the properties required to connect to the Application Network are shown below.
Add your own properties as required.
#Region " Properties - All the properties used in this form and this application" '------------------------------------------------------------------------------------------------------------ Private _connectionHashcode As Integer 'The Application Network connection hashcode. This is used to identify a connection in the Application Netowrk when reconnecting. Property ConnectionHashcode As Integer Get Return _connectionHashcode End Get Set(value As Integer) _connectionHashcode = value End Set End Property Private _connectedToAppNet As Boolean = False 'True if the application is connected to the Application Network. Property ConnectedToAppnet As Boolean Get Return _connectedToAppNet End Get Set(value As Boolean) _connectedToAppNet = value End Set End Property Private _instrReceived As String = "" 'Contains Instructions received from the Application Network message service. Property InstrReceived As String Get Return _instrReceived End Get Set(value As String) If value = Nothing Then Message.Add("Empty message received!") Else _instrReceived = value 'Add the message to the XMessages window: Message.Color = Color.CadetBlue Message.FontStyle = FontStyle.Bold Message.XAdd("Message received: " & vbCrLf) Message.SetNormalStyle() Message.XAdd(_instrReceived & vbCrLf & vbCrLf) If _instrReceived.StartsWith("<XMsg>") Then 'This is an XMessage set of instructions. Try Dim XmlHeader As String = "<?xml version=""1.0"" encoding=""utf-8"" standalone=""yes""?>" XDoc.LoadXml(XmlHeader & vbCrLf & _instrReceived) XMsg.Run(XDoc, Status) Catch ex As Exception Message.Add("Error running XMsg: " & ex.Message & vbCrLf) End Try 'XMessage has been run. 'Reply to this message: 'Add the message reply to the XMessages window: If ClientName = "" Then 'No client to send a message to! Else If MessageText = "" Then 'No message to send! Else Message.Color = Color.Red Message.FontStyle = FontStyle.Bold Message.XAdd("Message sent to " & ClientName & ":" & vbCrLf) Message.SetNormalStyle() Message.XAdd(MessageText & vbCrLf & vbCrLf) MessageDest = ClientName 'SendMessage sends the contents of MessageText to MessageDest. SendMessage() 'This subroutine triggers the timer to send the message after a short delay. End If End If Else End If End If End Set End Property #End Region 'Properties -----------------------------------------------------------------------------------------------------------------------------------------------------------------------
This code is used to save form settings in an xml file and restore the settings when the application is used again.
The code also reads Application Information stored in an XML file.
If the Application Information file is not found, a new one is created using the parameters specified in the DefaultAppProperties() subroutine.
#Region " Process XML files - Read and write XML files." '------------------------------------------------------------------------------------------------------------------------------------- Private Sub SaveFormSettings() 'Save the form settings in an XML document. Dim settingsData = <?xml version="1.0" encoding="utf-8"?> <!----> <!--Form settings for Main form.--> <FormSettings> <Left><%= Me.Left %></Left> <Top><%= Me.Top %></Top> <Width><%= Me.Width %></Width> <Height><%= Me.Height %></Height> <!----> </FormSettings> 'Add code to include other settings to save after the comment line <!----> Dim SettingsFileName As String = "FormSettings_" & ApplicationInfo.Name & "_" & Me.Text & ".xml" Project.SaveXmlSettings(SettingsFileName, settingsData) End Sub Private Sub RestoreFormSettings() 'Read the form settings from an XML document. Dim SettingsFileName As String = "FormSettings_" & ApplicationInfo.Name & "_" & Me.Text & ".xml" If Project.SettingsFileExists(SettingsFileName) Then Dim Settings As System.Xml.Linq.XDocument Project.ReadXmlSettings(SettingsFileName, Settings) If IsNothing(Settings) Then 'There is no Settings XML data. Exit Sub End If 'Restore form position and size: If Settings.<FormSettings>.<Left>.Value = Nothing Then 'Form setting not saved. Else Me.Left = Settings.<FormSettings>.<Left>.Value End If If Settings.<FormSettings>.<Top>.Value = Nothing Then 'Form setting not saved. Else Me.Top = Settings.<FormSettings>.<Top>.Value End If If Settings.<FormSettings>.<Height>.Value = Nothing Then 'Form setting not saved. Else Me.Height = Settings.<FormSettings>.<Height>.Value End If If Settings.<FormSettings>.<Width>.Value = Nothing Then 'Form setting not saved. Else Me.Width = Settings.<FormSettings>.<Width>.Value End If 'Add code to read other saved setting here: End If End Sub Private Sub ReadApplicationInfo() 'Read the Application Information. If ApplicationInfo.FileExists Then ApplicationInfo.ReadFile() Else 'There is no Application_Info.xml file. DefaultAppProperties() 'Create a new Application Info file with default application properties: End If End Sub Private Sub DefaultAppProperties() 'These properties will be saved in the Application_Info.xml file in the application directory. 'If this file is deleted, it will be re-created using these default application properties. 'Change this to show your application Name, Description and Creation Date. ApplicationInfo.Name = "ADVL_Application_Template_1" 'ApplicationInfo.ApplicationDir is set when the application is started. ApplicationInfo.ExecutablePath = Application.ExecutablePath ApplicationInfo.Description = "Application template provides template code for developing an Andorville (TM) software application." ApplicationInfo.CreationDate = "7-Jan-2016 12:00:00" 'Author ----------------------------------------------------------------------------------------------------------- 'Change this to show your Name, Description and Contact information. ApplicationInfo.Author.Name = "Signalworks Pty Ltd" ApplicationInfo.Author.Description = "Signalworks Pty Ltd" & vbCrLf & "Australian Proprietary Company" & vbCrLf & "ABN 26 066 681 598" & vbCrLf & "Registration Date 05/10/1994" ApplicationInfo.Author.Contact = "http://www.andorville.com.au/" 'File Associations: ----------------------------------------------------------------------------------------------- 'Add any file associations here. 'The file extension and a description of files that can be opened by this application are specified. 'The example below specifies a coordinate system parameter file type with the file extension .ADVLCoord. 'Dim Assn1 As New ADVL_System_Utilities.FileAssociation 'Assn1.Extension = "ADVLCoord" 'Assn1.Description = "Andorville (TM) software coordinate system parameter file" 'ApplicationInfo.FileAssociations.Add(Assn1) 'Version ---------------------------------------------------------------------------------------------------------- ApplicationInfo.Version.Major = My.Application.Info.Version.Major ApplicationInfo.Version.Minor = My.Application.Info.Version.Minor ApplicationInfo.Version.Build = My.Application.Info.Version.Build ApplicationInfo.Version.Revision = My.Application.Info.Version.Revision 'Copyright -------------------------------------------------------------------------------------------------------- 'Add your copyright information here. ApplicationInfo.Copyright.OwnerName = "Signalworks Pty Ltd, ABN 26 066 681 598" ApplicationInfo.Copyright.PublicationYear = "2016" 'Trademarks ------------------------------------------------------------------------------------------------------- 'Add your trademark information here. Dim Trademark1 As New ADVL_Utilities_Library_1.Trademark Trademark1.OwnerName = "Signalworks Pty Ltd, ABN 26 066 681 598" Trademark1.Text = "Andorville" Trademark1.Registered = False Trademark1.GenericTerm = "software" ApplicationInfo.Trademarks.Add(Trademark1) Dim Trademark2 As New ADVL_Utilities_Library_1.Trademark Trademark2.OwnerName = "Signalworks Pty Ltd, ABN 26 066 681 598" Trademark2.Text = "AL-H7" Trademark2.Registered = False Trademark2.GenericTerm = "software" ApplicationInfo.Trademarks.Add(Trademark2) 'License ------------------------------------------------------------------------------------------------------- 'Add your license information here. ApplicationInfo.License.CopyrightOwnerName = "Signalworks Pty Ltd, ABN 26 066 681 598" ApplicationInfo.License.PublicationYear = "2016" 'License Links: 'http://choosealicense.com/ 'http://www.apache.org/licenses/ 'http://opensource.org/ 'Apache License 2.0 --------------------------------------------- ApplicationInfo.License.Type = ADVL_Utilities_Library_1.License.Types.Apache_License_2_0 ApplicationInfo.License.Notice = ApplicationInfo.License.ApacheLicenseNotice 'Get the pre-defined Aapche license notice. ApplicationInfo.License.Text = ApplicationInfo.License.ApacheLicenseText 'Get the pre-defined Apache license text. 'Code to use other pre-defined license types is shown below: 'GNU General Public License, version 3 -------------------------- 'ApplicationInfo.License.Type = ADVL_Utilities_Library_1.License.Types.GNU_GPL_V3_0 'ApplicationInfo.License.Notice = 'Add the License Notice to ADVL_Utilities_Library_1 License class. 'ApplicationInfo.License.Text = 'Add the License Text to ADVL_Utilities_Library_1 License class. 'The MIT License ------------------------------------------------ 'ApplicationInfo.License.Type = ADVL_Utilities_Library_1.License.Types.MIT_License 'ApplicationInfo.License.Notice = ApplicationInfo.License.MITLicenseNotice 'ApplicationInfo.License.Text = ApplicationInfo.License.MITLicenseText 'No License Specified ------------------------------------------- 'ApplicationInfo.License.Type = ADVL_Utilities_Library_1.License.Types.None 'ApplicationInfo.License.Notice = "" 'ApplicationInfo.License.Text = "" 'The Unlicense -------------------------------------------------- 'ApplicationInfo.License.Type = ADVL_Utilities_Library_1.License.Types.The_Unlicense 'ApplicationInfo.License.Notice = ApplicationInfo.License.UnLicenseNotice 'ApplicationInfo.License.Text = ApplicationInfo.License.UnLicenseText 'Unknown License ------------------------------------------------ 'ApplicationInfo.License.Type = ADVL_Utilities_Library_1.License.Types.Unknown 'ApplicationInfo.License.Notice = "" 'ApplicationInfo.License.Text = "" 'Source Code: -------------------------------------------------------------------------------------------------- 'Add your source code information here if required. 'THIS SECTION WILL BE UPDATED TO ALLOW A GITHUB LINK. ApplicationInfo.SourceCode.Language = "Visual Basic 2015" ApplicationInfo.SourceCode.FileName = "" ApplicationInfo.SourceCode.FileSize = 0 ApplicationInfo.SourceCode.FileHash = "" ApplicationInfo.SourceCode.WebLink = "" ApplicationInfo.SourceCode.Contact = "" ApplicationInfo.SourceCode.Comments = "" 'ModificationSummary: ----------------------------------------------------------------------------------------- 'Add any source code modification here is required. ApplicationInfo.ModificationSummary.BaseCodeName = "" ApplicationInfo.ModificationSummary.BaseCodeDescription = "" ApplicationInfo.ModificationSummary.BaseCodeVersion.Major = 0 ApplicationInfo.ModificationSummary.BaseCodeVersion.Minor = 0 ApplicationInfo.ModificationSummary.BaseCodeVersion.Build = 0 ApplicationInfo.ModificationSummary.BaseCodeVersion.Revision = 0 ApplicationInfo.ModificationSummary.Description = "This is the first released version of the application. No earlier base code used." 'Library List: ------------------------------------------------------------------------------------------------ 'Add the ADVL_Utilties_Library_1 library: Dim NewLib As New ADVL_Utilities_Library_1.LibrarySummary NewLib.Name = "ADVL_System_Utilities" NewLib.Description = "System Utility classes used in Andorville (TM) software development system applications" NewLib.CreationDate = "7-Jan-2016 12:00:00" NewLib.LicenseNotice = "Copyright 2016 Signalworks Pty Ltd, ABN 26 066 681 598" & vbCrLf & vbCrLf & "Licensed under the Apache License, Version 2.0 (the ""License"");" & vbCrLf & "you may not use this file except in compliance with the License." & vbCrLf & "You may obtain a copy of the License at" & vbCrLf & vbCrLf & "http://www.apache.org/licenses/LICENSE-2.0" & vbCrLf & vbCrLf & "Unless required by applicable law or agreed to in writing, software" & vbCrLf & "distributed under the License is distributed on an ""AS IS"" BASIS," & vbCrLf & "WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied." & vbCrLf & "See the License for the specific language governing permissions and" & vbCrLf & "limitations under the License." & vbCrLf NewLib.CopyrightNotice = "Copyright 2016 Signalworks Pty Ltd, ABN 26 066 681 598" NewLib.Version.Major = 1 NewLib.Version.Minor = 0 NewLib.Version.Build = 1 NewLib.Version.Revision = 0 NewLib.Author.Name = "Signalworks Pty Ltd" NewLib.Author.Description = "Signalworks Pty Ltd" & vbCrLf & "Australian Proprietary Company" & vbCrLf & "ABN 26 066 681 598" & vbCrLf & "Registration Date 05/10/1994" NewLib.Author.Contact = "http://www.andorville.com.au/" Dim NewClass1 As New ADVL_Utilities_Library_1.ClassSummary NewClass1.Name = "ZipComp" NewClass1.Description = "The ZipComp class is used to compress files into and extract files from a zip file." NewLib.Classes.Add(NewClass1) Dim NewClass2 As New ADVL_Utilities_Library_1.ClassSummary NewClass2.Name = "XSequence" NewClass2.Description = "The XSequence class is used to run an XML property sequence (XSequence) file. XSequence files are used to record and replay processing sequences in Andorville (TM) software applications." NewLib.Classes.Add(NewClass2) Dim NewClass3 As New ADVL_Utilities_Library_1.ClassSummary NewClass3.Name = "XMessage" NewClass3.Description = "The XMessage class is used to read an XML Message (XMessage). An XMessage is a simplified XSequence used to exchange information between Andorville (TM) software applications." NewLib.Classes.Add(NewClass3) Dim NewClass4 As New ADVL_Utilities_Library_1.ClassSummary NewClass4.Name = "Location" NewClass4.Description = "The Location class consists of properties and methods to store data in a location, which is either a directory or archive file." NewLib.Classes.Add(NewClass4) Dim NewClass5 As New ADVL_Utilities_Library_1.ClassSummary NewClass5.Name = "Project" NewClass5.Description = "An Andorville (TM) software application can store data within one or more projects. Each project stores a set of related data files. The Project class contains properties and methods used to manage a project." NewLib.Classes.Add(NewClass5) Dim NewClass6 As New ADVL_Utilities_Library_1.ClassSummary NewClass6.Name = "ProjectSummary" NewClass6.Description = "ProjectSummary stores a summary of a project." NewLib.Classes.Add(NewClass6) Dim NewClass7 As New ADVL_Utilities_Library_1.ClassSummary NewClass7.Name = "DataFileInfo" NewClass7.Description = "The DataFileInfo class stores information about a data file." NewLib.Classes.Add(NewClass7) Dim NewClass8 As New ADVL_Utilities_Library_1.ClassSummary NewClass8.Name = "Message" NewClass8.Description = "The Message class contains text properties and methods used to display messages in an Andorville (TM) software application." NewLib.Classes.Add(NewClass8) Dim NewClass9 As New ADVL_Utilities_Library_1.ClassSummary NewClass9.Name = "ApplicationSummary" NewClass9.Description = "The ApplicationSummary class stores a summary of an Andorville (TM) software application." NewLib.Classes.Add(NewClass9) Dim NewClass10 As New ADVL_Utilities_Library_1.ClassSummary NewClass10.Name = "LibrarySummary" NewClass10.Description = "The LibrarySummary class stores a summary of a software library used by an application." NewLib.Classes.Add(NewClass10) Dim NewClass11 As New ADVL_Utilities_Library_1.ClassSummary NewClass11.Name = "ClassSummary" NewClass11.Description = "The ClassSummary class stores a summary of a class contained in a software library." NewLib.Classes.Add(NewClass11) Dim NewClass12 As New ADVL_Utilities_Library_1.ClassSummary NewClass12.Name = "ModificationSummary" NewClass12.Description = "The ModificationSummary class stores a summary of any modifications made to an application or library." NewLib.Classes.Add(NewClass12) Dim NewClass13 As New ADVL_Utilities_Library_1.ClassSummary NewClass13.Name = "ApplicationInfo" NewClass13.Description = "The ApplicationInfo class stores information about an Andorville (TM) software application." NewLib.Classes.Add(NewClass13) Dim NewClass14 As New ADVL_Utilities_Library_1.ClassSummary NewClass14.Name = "Version" NewClass14.Description = "The Version class stores application, library or project version information." NewLib.Classes.Add(NewClass14) Dim NewClass15 As New ADVL_Utilities_Library_1.ClassSummary NewClass15.Name = "Author" NewClass15.Description = "The Author class stores information about an Author." NewLib.Classes.Add(NewClass15) Dim NewClass16 As New ADVL_Utilities_Library_1.ClassSummary NewClass16.Name = "FileAssociation" NewClass16.Description = "The FileAssociation class stores the file association extension and description. An application can open files on its file association list." NewLib.Classes.Add(NewClass16) Dim NewClass17 As New ADVL_Utilities_Library_1.ClassSummary NewClass17.Name = "Copyright" NewClass17.Description = "The Copyright class stores copyright information." NewLib.Classes.Add(NewClass17) Dim NewClass18 As New ADVL_Utilities_Library_1.ClassSummary NewClass18.Name = "License" NewClass18.Description = "The License class stores license information." NewLib.Classes.Add(NewClass18) Dim NewClass19 As New ADVL_Utilities_Library_1.ClassSummary NewClass19.Name = "SourceCode" NewClass19.Description = "The SourceCode class stores information about the source code for the application." NewLib.Classes.Add(NewClass19) Dim NewClass20 As New ADVL_Utilities_Library_1.ClassSummary NewClass20.Name = "Usage" NewClass20.Description = "The Usage class stores information about application or project usage." NewLib.Classes.Add(NewClass20) Dim NewClass21 As New ADVL_Utilities_Library_1.ClassSummary NewClass21.Name = "Trademark" NewClass21.Description = "The Trademark class stored information about a trademark used by the author of an application or data." NewLib.Classes.Add(NewClass21) ApplicationInfo.Libraries.Add(NewLib) 'Add other library information here: -------------------------------------------------------------------------- End Sub 'Save the form settings if the form is being minimised: Protected Overrides Sub WndProc(ByRef m As Message) If m.Msg = &H112 Then 'SysCommand If m.WParam.ToInt32 = &HF020 Then 'Form is being minimised SaveFormSettings() End If End If MyBase.WndProc(m) End Sub #End Region 'Process XML Files ----------------------------------------------------------------------------------------------------------------------------------------------------------------
Code used to display the form.
#Region " Form Display Methods - Code used to display this form." '---------------------------------------------------------------------------------------------------------------------------- Private Sub Main_Load(sender As Object, e As EventArgs) Handles Me.Load 'Write the startup messages in a stringbuilder object. 'Messages cannot be written using Message.Add until this is set up later in the startup sequence. Dim sb As New System.Text.StringBuilder sb.Append("------------------- Starting Application: ADVL Template Application ---------------------------------------------------------------- " & vbCrLf) 'Set the Application Directory path: ------------------------------------------------ Project.ApplicationDir = My.Application.Info.DirectoryPath.ToString 'Read the Application Information file: --------------------------------------------- ApplicationInfo.ApplicationDir = My.Application.Info.DirectoryPath.ToString 'Set the Application Directory property If ApplicationInfo.ApplicationLocked Then MessageBox.Show("The application is locked. If the application is not already in use, remove the 'Application_Info.lock file from the application directory: " & ApplicationInfo.ApplicationDir, "Notice", MessageBoxButtons.OK) Dim dr As System.Windows.Forms.DialogResult dr = MessageBox.Show("Press 'Yes' to unlock the application", "Notice", MessageBoxButtons.YesNo) If dr = System.Windows.Forms.DialogResult.Yes Then ApplicationInfo.UnlockApplication() Else Application.Exit() 'System.Windows.Forms.Application.Exit() End If End If ReadApplicationInfo() ApplicationInfo.LockApplication() 'Read the Application Usage information: -------------------------------------------- ApplicationUsage.StartTime = Now ApplicationUsage.SaveLocn.Type = ADVL_Utilities_Library_1.FileLocation.Types.Directory ApplicationUsage.SaveLocn.Path = Project.ApplicationDir ApplicationUsage.RestoreUsageInfo() sb.Append("Application usage: Total duration = " & Format(ApplicationUsage.TotalDuration.TotalHours, "#0.##") & " hours" & vbCrLf) 'Restore Project information: ------------------------------------------------------- Project.ApplicationName = ApplicationInfo.Name Project.ReadLastProjectInfo() Project.ReadProjectInfoFile() Project.Usage.StartTime = Now Project.ReadProjectInfoFile() ApplicationInfo.SettingsLocn = Project.SettingsLocn 'Set up the Message object: Message.ApplicationName = ApplicationInfo.Name Message.SettingsLocn = Project.SettingsLocn 'Restore the form settings: --------------------------------------------------------- RestoreFormSettings() 'Show the project information: ------------------------------------------------------ txtProjectName.Text = Project.Name txtProjectDescription.Text = Project.Description Select Case Project.Type Case ADVL_Utilities_Library_1.Project.Types.Directory txtProjectType.Text = "Directory" Case ADVL_Utilities_Library_1.Project.Types.Archive txtProjectType.Text = "Archive" Case ADVL_Utilities_Library_1.Project.Types.Hybrid txtProjectType.Text = "Hybrid" Case ADVL_Utilities_Library_1.Project.Types.None txtProjectType.Text = "None" End Select txtCreationDate.Text = Format(Project.Usage.FirstUsed, "d-MMM-yyyy H:mm:ss") txtLastUsed.Text = Format(Project.Usage.LastUsed, "d-MMM-yyyy H:mm:ss") Select Case Project.SettingsLocn.Type Case ADVL_Utilities_Library_1.FileLocation.Types.Directory txtSettingsLocationType.Text = "Directory" Case ADVL_Utilities_Library_1.FileLocation.Types.Archive txtSettingsLocationType.Text = "Archive" End Select txtSettingsLocationPath.Text = Project.SettingsLocn.Path Select Case Project.DataLocn.Type Case ADVL_Utilities_Library_1.FileLocation.Types.Directory txtDataLocationType.Text = "Directory" Case ADVL_Utilities_Library_1.FileLocation.Types.Archive txtDataLocationType.Text = "Archive" End Select txtDataLocationPath.Text = Project.DataLocn.Path sb.Append("------------------- Started OK ------------------------------------------------------------------------------------------------------------------------ " & vbCrLf & vbCrLf) Me.Show() 'Show this form before showing the Message form Message.Add(sb.ToString) End Sub Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnExit.Click 'Exit the Application DisconnectFromAppNet() 'Disconnect from the Application Network. SaveFormSettings() 'Save the settings of this form. ApplicationInfo.WriteFile() 'Update the Application Information file. ApplicationInfo.UnlockApplication() Project.SaveLastProjectInfo() 'Save information about the last project used. 'Project.SaveProjectInfoFile() 'Update the Project Information file. This is not required unless there is a change made to the project. Project.Usage.SaveUsageInfo() 'Save Project usage information. ApplicationUsage.SaveUsageInfo() 'Save Application usage information. Application.Exit() End Sub Private Sub Main_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing 'Save the form settings if the form state is normal. (A minimised form will have the incorrect size and location.) If WindowState = FormWindowState.Normal Then SaveFormSettings() End If End Sub #End Region 'Form Display Methods -------------------------------------------------------------------------------------------------------------------------------------------------------------
Code used to open and close other forms used in the application.
#Region " Open and Close Forms - Code used to open and close other forms." '------------------------------------------------------------------------------------------------------------------- Private Sub btnOpenTemplateForm_Click(sender As Object, e As EventArgs) Handles btnOpenTemplateForm.Click 'Open the Template form: If IsNothing(TemplateForm) Then TemplateForm = New frmTemplate TemplateForm.Show() Else TemplateForm.Show() End If End Sub Private Sub TemplateForm_FormClosed(sender As Object, e As FormClosedEventArgs) Handles TemplateForm.FormClosed TemplateForm = Nothing End Sub Private Sub btnMessages_Click(sender As Object, e As EventArgs) Handles btnMessages.Click 'Show the Messages form. Message.ApplicationName = ApplicationInfo.Name Message.SettingsLocn = Project.SettingsLocn Message.Show() Message.MessageForm.BringToFront() End Sub #End Region 'Open and Close Forms -------------------------------------------------------------------------------------------------------------------------------------------------------------
Code for the main actions performed by this form.
#Region " Form Methods - The main actions performed by this form." '--------------------------------------------------------------------------------------------------------------------------- Private Sub btnProject_Click(sender As Object, e As EventArgs) Handles btnProject.Click Project.SelectProject() End Sub Private Sub btnAppInfo_Click(sender As Object, e As EventArgs) Handles btnAppInfo.Click ApplicationInfo.ShowInfo() End Sub Private Sub btnAndorville_Click(sender As Object, e As EventArgs) Handles btnAndorville.Click ApplicationInfo.ShowInfo() End Sub #Region " Online/Offline code" Private Sub btnOnline_Click(sender As Object, e As EventArgs) Handles btnOnline.Click 'Connect to or disconnect from the Application Network. If ConnectedToAppnet = False Then ConnectToAppNet() Else DisconnectFromAppNet() End If End Sub Private Sub ConnectToAppNet() 'Connect to the Application Network. (Message Exchange) Dim Result As Boolean If IsNothing(client) Then client = New ServiceReference1.MsgServiceClient(New System.ServiceModel.InstanceContext(New MsgServiceCallback)) End If If client.State = ServiceModel.CommunicationState.Faulted Then Message.SetWarningStyle() Message.Add("client state is faulted. Connection not made!" & vbCrLf) Else Try client.Endpoint.Binding.SendTimeout = New System.TimeSpan(0, 0, 8) 'Temporarily set the send timeaout to 8 seconds Result = client.Connect(ApplicationInfo.Name, ServiceReference1.clsConnectionAppTypes.Application, False, False) 'Application Name is "Application_Template" 'appName, appType, getAllWarnings, getAllMessages If Result = True Then Message.Add("Connected to the Application Network as " & ApplicationInfo.Name & vbCrLf) client.Endpoint.Binding.SendTimeout = New System.TimeSpan(1, 0, 0) 'Restore the send timeaout to 1 hour btnOnline.Text = "Online" btnOnline.ForeColor = Color.ForestGreen ConnectedToAppnet = True SendApplicationInfo() Else Message.Add("Connection to the Application Network failed!" & vbCrLf) client.Endpoint.Binding.SendTimeout = New System.TimeSpan(1, 0, 0) 'Restore the send timeaout to 1 hour End If Catch ex As System.TimeoutException Message.Add("Timeout error. Check if the Application Network is running." & vbCrLf) Catch ex As Exception Message.Add("Error message: " & ex.Message & vbCrLf) client.Endpoint.Binding.SendTimeout = New System.TimeSpan(1, 0, 0) 'Restore the send timeaout to 1 hour End Try End If End Sub Private Sub DisconnectFromAppNet() 'Disconnect from the Application Network. Dim Result As Boolean If IsNothing(client) Then Message.Add("Already disconnected from the Application Network." & vbCrLf) btnOnline.Text = "Offline" btnOnline.ForeColor = Color.Black ConnectedToAppnet = False Else If client.State = ServiceModel.CommunicationState.Faulted Then Message.Add("client state is faulted." & vbCrLf) Else Try Message.Add("Running client.Disconnect(ApplicationName) ApplicationName = " & ApplicationInfo.Name & vbCrLf) client.Disconnect(ApplicationInfo.Name) 'NOTE: If Application Network has closed, this application freezes at this line! Try Catch EndTry added to fix this. btnOnline.Text = "Offline" btnOnline.ForeColor = Color.Black ConnectedToAppnet = False Catch ex As Exception Message.SetWarningStyle() Message.Add("Error disconnecting from Application Network: " & ex.Message & vbCrLf) End Try End If End If End Sub Private Sub SendApplicationInfo() 'Send the application information to the Administrator connections. If IsNothing(client) Then Message.Add("No client connection available!" & vbCrLf) Else If client.State = ServiceModel.CommunicationState.Faulted Then Message.Add("client state is faulted. Message not sent!" & vbCrLf) Else 'Create the XML instructions to send application information. Dim decl As New XDeclaration("1.0", "utf-8", "yes") Dim doc As New XDocument(decl, Nothing) 'Create an XDocument to store the instructions. Dim xmessage As New XElement("XMsg") 'This indicates the start of the message in the XMessage class Dim applicationInfo As New XElement("ApplicationInfo") Dim name As New XElement("Name", Me.ApplicationInfo.Name) applicationInfo.Add(name) Dim exePath As New XElement("ExecutablePath", Me.ApplicationInfo.ExecutablePath) applicationInfo.Add(exePath) Dim directory As New XElement("Directory", Me.ApplicationInfo.ApplicationDir) applicationInfo.Add(directory) Dim description As New XElement("Description", Me.ApplicationInfo.Description) applicationInfo.Add(description) xmessage.Add(applicationInfo) doc.Add(xmessage) client.SendMessage("ApplicationNetwork", doc.ToString) End If End If End Sub #End Region 'Online/Offline code #Region " Process XMessages" Private Sub XMsg_Instruction(Info As String, Locn As String) Handles XMsg.Instruction 'Process an XMessage instruction. 'An XMessage is a simplified XSequence. It is used to exchange information between Andorville (TM) applications. ' 'An XSequence file is an AL-H7 (TM) Information Vector Sequence stored in an XML format. 'AL-H7(TM) is the name of a programming system that uses sequences of information and location value pairs to store data items or processing steps. 'A single information and location value pair is called a knowledge element (or noxel). 'Any program, mathematical expression or data set can be expressed as an Information Vector Sequence. 'Add code here to process the XMessage instructions. 'See other Andorville(TM) applciations for examples. End Sub Private Sub SendMessage() 'Code used to send a message after a timer delay. 'The message destination is stored in MessageDest 'The message text is stored in MessageText Timer1.Interval = 100 '100ms delay Timer1.Enabled = True 'Start the timer. End Sub Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick If IsNothing(client) Then Message.SetWarningStyle() Message.Add("No client connection available!" & vbCrLf) Else If client.State = ServiceModel.CommunicationState.Faulted Then Message.SetWarningStyle() Message.Add("client state is faulted. Message not sent!" & vbCrLf) Else Try Message.Add("Sending a message. Number of characters: " & MessageText.Length & vbCrLf) client.SendMessage(MessageDest, MessageText) Message.XAdd(MessageText & vbCrLf) MessageText = "" 'Clear the message after it has been sent. Catch ex As Exception Message.SetWarningStyle() Message.Add("Error sending message: " & ex.Message & vbCrLf) End Try End If End If 'Stop timer: Timer1.Enabled = False End Sub #End Region 'Process XMessages #End Region 'Form Methods ---------------------------------------------------------------------------------------------------------------------------------------------------------------------