MDIMA.FRM

VERSION 2.00 
Begin MDIForm MDIMa
Caption = "Demo ADBPubs"
Height = 4755
Icon = MDIMA.FRX:0000
Left = 75
LinkTopic = "MDIForm1"
Top = 555
Width = 7740
WindowState = 2 'Maximized
Begin SSPanel panStatusbar
Align = 2 'Align Bottom
Alignment = 2 'Left Justify - BOTTOM
BackColor = &H00C0C0C0&
BevelInner = 2 'Raised
BevelOuter = 0 'None
BorderWidth = 0
FontBold = 0 'False
FontItalic = 0 'False
FontName = "MS Sans Serif"
FontSize = 8.25
FontStrikethru = 0 'False
FontUnderline = 0 'False
ForeColor = &H00000000&
Height = 420
Left = 0
Outline = -1 'True
TabIndex = 8
Top = 3645
Width = 7620
Begin SSPanel panInfo
Alignment = 2 'Left Justify - BOTTOM
AutoSize = 3 'AutoSize Child To Panel
BackColor = &H00C0C0C0&
BevelInner = 1 'Inset
BevelOuter = 0 'None
BorderWidth = 0
Caption = " Server: [Not logged in]"
FontBold = 0 'False
FontItalic = 0 'False
FontName = "MS Sans Serif"
FontSize = 8.25
FontStrikethru = 0 'False
FontUnderline = 0 'False
ForeColor = &H00000000&
Height = 300
Left = 120
TabIndex = 11
Top = 60
Width = 12930
End
Begin VBSQL VBSQL1
Caption = "VBSQL1"
Height = 210
Left = 12555
Top = 105
Visible = 0 'False
Width = 525
End
End
Begin SSPanel panToolbar
Align = 1 'Align Top
AutoSize = 3 'AutoSize Child To Panel
BackColor = &H00C0C0C0&
BorderWidth = 4
ForeColor = &H00000000&
Height = 435
Left = 0
Outline = -1 'True
TabIndex = 0
Top = 0
Width = 7620
Begin CommandButton cmdUnloadActForms
Caption = "Unload Forms"
Height = 270
Left = 9570
TabIndex = 12
Top = 75
Visible = 0 'False
Width = 1455
End
Begin SSCommand cmdLogin
BevelWidth = 1
Font3D = 1 'Raised w/light shading
ForeColor = &H00000000&
Height = 345
Left = 8610
Picture = MDIMA.FRX:0302
TabIndex = 10
TabStop = 0 'False
Top = 45
Width = 345
End
Begin SSCommand cmdLogout
BevelWidth = 1
Enabled = 0 'False
Font3D = 1 'Raised w/light shading
ForeColor = &H00000000&
Height = 345
Left = 9000
Picture = MDIMA.FRX:0604
TabIndex = 9
TabStop = 0 'False
Top = 45
Width = 345
End
Begin SSCommand MainButton
BevelWidth = 1
Font3D = 1 'Raised w/light shading
ForeColor = &H00000000&
Height = 340
Index = 1
Left = 75
Picture = MDIMA.FRX:0906
TabIndex = 7
Top = 45
Width = 340
End
Begin SSCommand MainButton
BevelWidth = 1
Font3D = 1 'Raised w/light shading
ForeColor = &H00000000&
Height = 340
Index = 2
Left = 465
Picture = MDIMA.FRX:0A70
TabIndex = 6
Top = 45
Width = 340
End
Begin SSCommand MainButton
BevelWidth = 1
Font3D = 1 'Raised w/light shading
ForeColor = &H00000000&
Height = 340
Index = 3
Left = 855
Picture = MDIMA.FRX:0BDA
TabIndex = 5
Top = 45
Width = 340
End
Begin SSCommand MainButton
BevelWidth = 1
Font3D = 1 'Raised w/light shading
ForeColor = &H00000000&
Height = 340
Index = 4
Left = 1380
Picture = MDIMA.FRX:0D44
TabIndex = 4
Top = 45
Width = 340
End
Begin SSCommand MainButton
BevelWidth = 1
Font3D = 1 'Raised w/light shading
ForeColor = &H00000000&
Height = 340
Index = 5
Left = 1905
Picture = MDIMA.FRX:0EAE
TabIndex = 3
Top = 45
Width = 340
End
Begin SSCommand MainButton
BevelWidth = 1
Font3D = 1 'Raised w/light shading
ForeColor = &H00000000&
Height = 340
Index = 6
Left = 2295
Picture = MDIMA.FRX:1048
TabIndex = 2
Top = 45
Width = 340
End
Begin SSCommand MainButton
BevelWidth = 1
Font3D = 1 'Raised w/light shading
ForeColor = &H00000000&
Height = 340
Index = 7
Left = 2820
Picture = MDIMA.FRX:11B2
TabIndex = 1
Top = 45
Width = 340
End
End
Begin Menu MenFile
Caption = "&File"
Begin Menu altLogin
Caption = "&Login"
Shortcut = ^L
End
Begin Menu altLogout
Caption = "Log&out"
Enabled = 0 'False
End
Begin Menu altDummy
Caption = "-"
End
Begin Menu AltExit
Caption = "&Exit"
End
End
Begin Menu MenForms
Caption = "F&orms"
WindowList = -1 'True
Begin Menu altAuthors
Caption = "&Authors"
Enabled = 0 'False
Shortcut = ^A
End
End
Begin Menu menHelp
Caption = "&Help"
Begin Menu altContents
Caption = "&Contents"
End
Begin Menu altDummy2
Caption = "-"
End
Begin Menu altAbout
Caption = "&About..."
End
End
End

Sub altAbout_Click ()
'
' Show the About box
'

fAbout.Show MODAL

End Sub

Sub altAuthors_click ()
'
' Open the Authors form
' The menu in the Authors form allows opening
' of several simultaneous instances of the Authors form
'

screen.MousePointer = 11
fAuthors.Show
screen.MousePointer = 0

End Sub

Sub altContents_Click ()
Dim X%, lHelpPath As String
'
' Activate the help system
'

lHelpPath = App.Path + "\pubs1.hlp"
X% = WinHelp(MDIMA.hWnd, lHelpPath, HELP_INDEX, 0)

End Sub

Sub altExit_Click ()
'
' Exit the application
'
Unload Me ' Unload the MDI form and so exit the app.
' Better then end, since unload will call
' the MDIForm_Unload procedure

End Sub

Sub altLogin_Click ()
'
' Call the log in procedure
'

' Auto press the cmdLogin push button if it is enabled:
If cmdLogin.Enabled Then
cmdLogin.Value = True
Else
Beep
End If

End Sub

Sub altLogout_Click ()
'
' Call the log out procedure
'

' Auto press the cmdLogout push button if it is enabled:
If cmdLogout.Enabled Then
cmdLogout.Value = True
Else
Beep
End If

End Sub

Sub cmdLogin_Click ()
'
' Show the login form
'

fLogin.Show

End Sub

Sub cmdLogout_Click ()
'
' Log out from SQL Server and do neccessary maintaneance
'

' Set caption of panel to show "not logged in":
panInfo.Caption = " Server: [Not logged in]"

SqlExit ' close all connections to SQL Server

' Press invisible push button to unload all active forms:
cmdUnloadActForms.Value = True

' Disable objects inappropriate when not logged in:
altAuthors.Enabled = False
altLogout.Enabled = False
cmdLogout.Enabled = False

End Sub

Sub cmdUnloadActForms_Click ()
'
' Unload all forms.
' Normally called when logging out.
' Thus no qualified info will be shown on the screen
' after the user with permissions has logged out
'

On Error GoTo cmdActFormError

' In a loop: unload all forms:
Do
' Unload the active form; make another active:
Unload ActiveForm
Loop

cmdActFormExit:
Exit Sub

cmdActFormError:
' Presume no more active forms; go to exit:
Resume cmdActFormExit:

End Sub

Sub MainButton_Click (index As Integer)
'
' The main buttons are organized as a button array,
' where each button has a corresponding button in
' each (or most) forms. When the users click on a
' button in the MDI form tool bar the corresponding
' button in the active form will be automatically
' clicked if it is enabled. Each form will have its
' own specialized procedure connected to each separate
' button. If you will, study the MainButton procedure
' in the authors form.
'
' This technique could be claimed to offer some sort
' of polymorphism to the app.
'
On Error GoTo MainButtonError

If ActiveForm.MainButton(index).Enabled Then
ActiveForm.MainButton(index).Value = True
Else
Beep
End If

MainButtonExit:
Exit Sub

MainButtonError:

Beep
Resume MainButtonExit

End Sub

Sub MDIForm_Load ()
'
' Set up the MDI form for processing.
' Call the log in procedure
'

' Set global variable AppName$ for log in purposes
AppName$ = "Demo Authors 1" 'Global variable

' Initialize the global variable NEWLINE$
NEWLINE$ = Chr$(13) + Chr$(10)

' When global variable ShowSQL is set to false
' SQL statements will not be shown. Set to true
' by means of the Option menu.
ShowSQL = False

' Setting the width of the Info Panel
SetPanelWidth

'Initialize VBSQL before log in:
msg$ = SQLInit$()
If msg$ = "" Then
Beep
MsgBox "Couldn't initialize VBSQL. Sorry. Must terminate.", 16
End
End If

fLogin.Show ' Open login form

End Sub

Sub MDIForm_Resize ()

SetPanelWidth

End Sub

Sub MDIForm_Unload (Cancel As Integer)
'
' Clean up any connection with SQL Server and close
' the help system, then exit the application (End).
'

Dim X%

SqlExit
SqlWinExit
X% = WinHelp(MDIMA.hWnd, "pubs1.hlp", HELP_QUIT, 0)
End

End Sub

Sub SetPanelWidth ()
Dim lWidth As Integer

lWidth = MDIMA.Width - 350
If lWidth >= 5500 Then panInfo.Width = MDIMA.Width - 350

End Sub

Sub VBSQL1_Error (SqlConn As Integer, Severity As Integer, ErrorNum As Integer, ErrorStr As String, RetCode As Integer)
'
' Minimal error management.
' Show the severity of the error, the error number
' and the error message in a message box.

Dim lMsg$

lMsg$ = "Severity: " & Severity & Chr$(13) + Chr$(13)
lMsg$ = lMsg$ + Str$(ErrorNum) + " " + ErrorStr + Chr$(13) + Chr$(13)
MsgBox lMsg$, 16, "SQL-Error"

End Sub

Sub VBSQL1_Message (SqlConn As Integer, Message As Long, State As Integer, Severity As Integer, MsgStr As String)
'
' Minimal SQL Server message management.
' Filter out very trivial messages (5701 and 5703)
' Show the others with message number and message
' string in a message box.
'
If Message <> 5701 And Message <> 5703 Then
MsgBox "MSG: " + Str$(Message) + ": " + MsgStr, 0, "SQL Message"
End If

End Sub