438 lines
16 KiB
Plaintext
438 lines
16 KiB
Plaintext
Function NDW_Audit_Viewer_Events(CtrlEntId, Event, Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15)
|
|
|
|
/***********************************************************************************************************************
|
|
|
|
This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written
|
|
permission from SRP Computer Solutions, Inc.
|
|
|
|
Name : NDW_Audit_Viewer_Events
|
|
|
|
Description : This function acts as a commuter module for all events related to this window.
|
|
|
|
Notes : Commuter Modules are automatically called from the Promoted_Events function which is called by the
|
|
application-specific promoted event handler. This makes it possible to add QuickEvents that need to
|
|
execute Basic+ logic without having use the Form Designer to make the association, although this is
|
|
limited to the events which are currently promoted.
|
|
|
|
If the form needs to call the commuter module directly then the QuickEvent parameters should be
|
|
formatted like this:
|
|
|
|
'@SELF','@EVENT',['@PARAM1','@PARAMx']
|
|
|
|
Parameters :
|
|
CtrlEntId [in] -- The fully qualified name of the control calling the promoted event
|
|
Event [in] -- The event being executed. See the Notes section regarding "PRE" events
|
|
Param1-15 [in] -- Additional event parameter holders
|
|
EventFlow [out] -- Set to 1 or 0 so the calling event knows whether or not to chain forward. See comments in
|
|
EVENT_SETUP insert
|
|
|
|
History : (Date, Initials, Notes)
|
|
07/23/98 dmb Original programmer.
|
|
03/30/06 axf Removed reference to Application.dll.
|
|
04/06/13 dmb Replace ErrorLines property with MismatchLines property for better comparison viewing.
|
|
- [SRPFW-9]
|
|
|
|
***********************************************************************************************************************/
|
|
|
|
$insert APP_INSERTS
|
|
$insert EVENT_SETUP
|
|
$insert MSG_EQUATES
|
|
|
|
Equ WM_USER$ To 1024
|
|
Equ WM_SETREADONLY$ To WM_USER$ + 31
|
|
|
|
AuditManagerTable = "APP_INFO"
|
|
|
|
Declare Subroutine Msg, Send_Event, V119, SRP_Set_Prop_Array, Utility, Start_Window, Send_Message, Get_SysInfo, SRP_Show_Window, Set_Property, Post_Event
|
|
Declare Function GetPointer, GetSystemInfo, Send_Message
|
|
|
|
Begin Case
|
|
Case Control EQ Window
|
|
// This event is window specific.
|
|
|
|
Begin Case
|
|
Case Event EQ "CREATE" ; GoSub CREATE
|
|
Case Event EQ 'EXPAND_ROW' ; GoSub EXPAND_ROW
|
|
Case Event EQ 'COLLAPSE_ROW' ; GoSub COLLAPSE_ROW
|
|
Case Event EQ 'GOTO_MARKER' ; GoSub TOGGLE_CURSOR
|
|
End Case
|
|
|
|
Case EventType EQ "CLICK"
|
|
|
|
Begin Case
|
|
Case Control EQ "PUB_RESTORE" ; GoSub CLICK.PUB_RESTORE
|
|
Case Control EQ "PUB_COMPARE" ; GoSub CLICK.PUB_COMPARE
|
|
Case Control EQ "PUB_RETURN" ; GoSub CLICK.PUB_RETURN
|
|
End Case
|
|
|
|
Case Event EQ "PosChanged" ; GoSub PosChanged
|
|
Case Event EQ "OnGotFocus" ; GoSub PosChanged
|
|
Case Event EQ "OnVScroll"
|
|
|
|
Begin Case
|
|
Case Control EQ "OLE_ARCHIVE" ; GoSub OnVScroll.OLE_ARCHIVE
|
|
Case Control EQ "OLE_ORIGINAL" ; GoSub OnVScroll.OLE_ORIGINAL
|
|
End Case
|
|
|
|
Case Event EQ 'MENU.EXPAND_ROW' ; GoSub MENU.EXPAND_ROW
|
|
Case Event EQ 'MENU.COLLAPSE_ROW' ; GoSub MENU.COLLAPSE_ROW
|
|
Case Event EQ 'MENU.NEXT_DIFFERENCE' ; GoSub MENU.NEXT_DIFFERENCE
|
|
|
|
End Case
|
|
|
|
If Assigned(EventFlow) else EventFlow = EVENT_CONTINUE$
|
|
|
|
Return EventFlow
|
|
|
|
CREATE:
|
|
|
|
// qualify editor events
|
|
Events = "PosChanged,OnGotFocus,OnVScroll"
|
|
LenEvents = Len(Events)
|
|
Pos = 1
|
|
Loop Until Pos GE LenEvents
|
|
Event = "OLE.":Events[Pos, ","]
|
|
Pos = Col2() + 1
|
|
Send_Message(@Window:".OLE_ARCHIVE", "QUALIFY_EVENT", Event, Yes$)
|
|
Send_Message(@Window:".OLE_ORIGINAL", "QUALIFY_EVENT", Event, Yes$)
|
|
Repeat
|
|
Send_Message(@Window:".OLE_VIEWER", "QUALIFY_EVENT", "PosChanged", Yes$)
|
|
|
|
// show the viewer
|
|
SRP_Show_Window(@Window, "", "L", "T", Yes$, "", No$, No$)
|
|
|
|
return
|
|
|
|
EXPAND_ROW:
|
|
*----------------------------------------------------------------------------------------------------
|
|
* Expands row(s) in the Audit Viewer Window
|
|
*----------------------------------------------------------------------------------------------------
|
|
WindowControl = Get_Property(@Window, "FOCUS")
|
|
Set_Property(WindowControl, "READONLY", No$)
|
|
rv = Send_Message(WindowControl, "OLE.ExpandCurrLine")
|
|
Set_Property(WindowControl, "READONLY", Yes$)
|
|
|
|
return
|
|
|
|
COLLAPSE_ROW:
|
|
*----------------------------------------------------------------------------------------------------
|
|
* Collapses Row(s) in the Audit Viewer Window
|
|
*----------------------------------------------------------------------------------------------------
|
|
WindowControl = Get_Property(@Window, "FOCUS")
|
|
Set_Property(WindowControl, "READONLY", No$)
|
|
rv = Send_Message(WindowControl, "OLE.CollapseCurrLine")
|
|
Set_Property(WindowControl, "READONLY", Yes$)
|
|
return
|
|
|
|
TOGGLE_CURSOR:
|
|
*----------------------------------------------------------------------------------------------------
|
|
* Toggles from marker to marker in the Audit View Window
|
|
*----------------------------------------------------------------------------------------------------
|
|
Set_Property(WindowControl, "READONLY", No$)
|
|
WindowControl = Get_Property(@Window, "FOCUS")
|
|
rv = Send_Message(WindowControl, "OLE.GoToMarker")
|
|
Set_Property(WindowControl, "READONLY", Yes$)
|
|
return
|
|
|
|
CLICK.PUB_RESTORE:
|
|
*----------------------------------------------------------------------------------------------------
|
|
*
|
|
*----------------------------------------------------------------------------------------------------
|
|
|
|
Begin Case
|
|
Case Window = "NDW_AUDIT_TRAIL"
|
|
Win$ = @Window
|
|
Case Otherwise$
|
|
Win$ = Get_Property(@Window:".EDL_WINDOW", "INVALUE")
|
|
End Case
|
|
TableName = Get_Property(Win$:".COB_TABLE", "INVALUE")
|
|
Convert @Lower_Case to @Upper_Case in TableName
|
|
rVal = Get_Property(Win$:".EDT_INFO_BAK", "ARRAY")
|
|
Convert @VM to " " in rVal
|
|
rVal = Trim(rVal)
|
|
TestVal = Count(rVal, " ")
|
|
If TestVal GT 0 Then
|
|
ErrorMsg = "TOOMANY"
|
|
Gosub MsgAlert
|
|
End Else
|
|
ErrorMsg = "RESTORE"
|
|
Gosub MsgAlert
|
|
If rv = Yes$ Then
|
|
AuditId = rVal
|
|
OrigId = Get_Property(Win$:".EDL_ID", "INVALUE")
|
|
Begin Case
|
|
Case AuditId = ""
|
|
ErrorMsg = "ID"
|
|
IdName = "Audit Primary Key"
|
|
Gosub MsgAlert
|
|
Case OrigId = ""
|
|
ErorMsg = "ID"
|
|
IdName = "Primary Key"
|
|
Gosub MsgAlert
|
|
Case Otherwise$
|
|
Open TableName To hORT Then
|
|
Open "AUDIT_":TableName To hADT Then
|
|
ReadO Record From hADT, AuditId Then
|
|
Write Record To hORT, OrigId Then
|
|
ErrorMsg = "RESTORED"
|
|
Gosub MsgAlert
|
|
End Else
|
|
RecId = OrigId
|
|
ErrorMsg = "WRITE"
|
|
Gosub MsgAlert
|
|
End
|
|
End Else
|
|
ErrorMsg = "READ"
|
|
RecId = AuditId
|
|
Gosub MsgAlert
|
|
End
|
|
End Else
|
|
ErrorMsg = "OPEN"
|
|
Gosub MsgAlert
|
|
End
|
|
End Else
|
|
ErrorMsg = "OPEN"
|
|
Gosub MsgAlert
|
|
End
|
|
End Case
|
|
End
|
|
End
|
|
|
|
return
|
|
|
|
CLICK.PUB_RETURN:
|
|
*----------------------------------------------------------------------------------------------------
|
|
*
|
|
*----------------------------------------------------------------------------------------------------
|
|
Send_Event(@Window, "PAGE", 1)
|
|
cWin$ = @Window
|
|
Page = 1
|
|
Gosub ResetTabOrder
|
|
|
|
return
|
|
|
|
CLICK.PUB_COMPARE:
|
|
*----------------------------------------------------------------------------------------------------
|
|
*
|
|
*----------------------------------------------------------------------------------------------------
|
|
Post_Event(@Window, "PAGE", 2)
|
|
OrigWin$ = Get_Property(@Window:".EDL_WINDOW", "INVALUE")
|
|
TableName = Get_Property(OrigWin$:".COB_TABLE", "INVALUE")
|
|
Convert @Lower_Case to @Upper_Case In TableName
|
|
RecId = Get_Property(OrigWin$:".EDL_ID", "INVALUE")
|
|
Open TableName to hORT Then
|
|
ReadO RecInfo From hORT, RecId Then
|
|
Open "AUDIT_":TableName to hART Then
|
|
ARecId = Get_Property(@Window:".EDL_AREC_ID", "INVALUE")
|
|
ReadO ARecInfo From hART, ARecId Then
|
|
cWin$ = @Window
|
|
Page = 2
|
|
Gosub ResetTabOrder
|
|
Gosub CompareValues
|
|
End
|
|
End
|
|
End
|
|
End
|
|
|
|
return
|
|
|
|
MENU.EXPAND_ROW:
|
|
FocusCtrl = Get_Property("SYSTEM", "FOCUS")
|
|
* Set_Property(FocusCtrl, "OLE.ReadOnly", No$)
|
|
Send_Message(FocusCtrl, "OLE.ExpandCurrLine")
|
|
* Set_Property(FocusCtrl, "OLE.ReadOnly", Yes$)
|
|
return
|
|
|
|
MENU.COLLAPSE_ROW:
|
|
FocusCtrl = Get_Property("SYSTEM", "FOCUS")
|
|
* Set_Property(FocusCtrl, "OLE.ReadOnly", No$)
|
|
Send_Message(FocusCtrl, "OLE.CollapseCurrLine")
|
|
* Set_Property(FocusCtrl, "OLE.ReadOnly", Yes$)
|
|
return
|
|
|
|
MENU.NEXT_DIFFERENCE:
|
|
FocusCtrl = Get_Property("SYSTEM", "FOCUS")
|
|
Send_Message(FocusCtrl, "OLE.GotoMarker")
|
|
Begin Case
|
|
Case FocusCtrl EQ @Window:".OLE_ARCHIVE"
|
|
Set_Property(@Window:".OLE_ORIGINAL", "OLE.TopLine", Get_Property(@Window:".OLE_ARCHIVE", "OLE.TopLine"))
|
|
Case FocusCtrl EQ @Window:".OLE_ORIGINAL"
|
|
Set_Property(@Window:".OLE_ARCHIVE", "OLE.TopLine", Get_Property(@Window:".OLE_ORIGINAL", "OLE.TopLine"))
|
|
End Case
|
|
return
|
|
|
|
PosChanged:
|
|
|
|
TrailWindow = Get_Property(@Window:".EDL_WINDOW", "TEXT")
|
|
Table = Get_Property(TrailWindow:".COB_TABLE", "TEXT")
|
|
FieldsRec = Get_Property(@Window, "@RECORD_FIELDS")
|
|
CurrLine = Get_Property(CtrlEntId, "OLE.CurrPos")<2>
|
|
Line = Send_Message(CtrlEntId, "OLE.GetLineField", CurrLine)
|
|
|
|
Field = ""
|
|
If FieldsRec EQ "" then
|
|
DictTable = If Table[1, 5] EQ "DICT." then "DICT.SYSCOLUMNS" else "DICT.":Table
|
|
Open DictTable to hTable then
|
|
Read FieldsRec from hTable, "%FIELDS%" then
|
|
Set_Property(@Window, "@RECORD_FIELDS", FieldsRec)
|
|
end
|
|
end
|
|
end
|
|
|
|
Fields = FieldsRec<3>
|
|
Positions = FieldsRec<5>
|
|
Locate Line in Positions setting Pos then
|
|
Field = Fields<1, Pos>
|
|
end
|
|
|
|
Set_Property(@Window:".STA_COLUMN", "TEXT", Field)
|
|
|
|
return
|
|
|
|
OnVScroll.OLE_ARCHIVE:
|
|
Set_Property(@Window:".OLE_ORIGINAL", "OLE.TopLine", Param1)
|
|
return
|
|
|
|
OnVScroll.OLE_ORIGINAL:
|
|
Set_Property(@Window:".OLE_ARCHIVE", "OLE.TopLine", Param1)
|
|
return
|
|
|
|
*------------------------
|
|
* Internal Processes
|
|
*------------------------
|
|
|
|
CompareValues:
|
|
*----------------------------------------------------------------------------------------------------
|
|
*
|
|
*----------------------------------------------------------------------------------------------------
|
|
dRow = ""
|
|
MxORows = Count(RecInfo, @FM) + (RecInfo NE "")
|
|
MxARows = Count(ARecINfo, @FM) + (ARecInfo NE "")
|
|
|
|
If MxORows GE MxARows Then
|
|
MxRows = MxORows
|
|
End Else
|
|
MxRows = MxARows
|
|
End
|
|
|
|
For X = 1 to MxRows
|
|
If RecInfo<X> NE ARecInfo<X> Then
|
|
dRow<-1> = X
|
|
End
|
|
Next X
|
|
|
|
If dRow NE "" Then
|
|
Ctrls = @Window:".OLE_ARCHIVE":@RM:@Window:".OLE_ORIGINAL":@RM:@Window:".OLE_VIEWER"
|
|
* Props = "OLE.ErrorLines":@RM:"OLE.ErrorLines":@RM:"OLE.ErrorLines"
|
|
Props = "OLE.MismatchLines":@RM:"OLE.MismatchLines":@RM:"OLE.MismatchLines"
|
|
Vals = dRow:@RM:dRow:@RM:dRow
|
|
Set_Property(Ctrls, Props, Vals)
|
|
End
|
|
return
|
|
|
|
MsgAlert:
|
|
*-------------------------------------------------------------------------------------------------------------------------------------
|
|
*
|
|
*-------------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
Mess = ""
|
|
Mess<MTYPE$> = "BO"
|
|
Mess<MICON$> = "!"
|
|
Mess<MCAPTION$> = "Audit Trail"
|
|
|
|
Error = "An undefined error has occurred with this process"
|
|
Begin Case
|
|
Case ErrorMsg = "OPEN"
|
|
Error = "Unable to Open the ": TableName: " table."
|
|
|
|
Case ErrorMsg = "READ"
|
|
Error = "Unable to Read ": RecId:" record."
|
|
|
|
Case ErrorMsg = "WRITE"
|
|
Error = "Unable to Write ": RecId:" record."
|
|
|
|
Case ErrorMsg = "NOIDS"
|
|
Error = "There are no audit records for the ":TableName:" table."
|
|
|
|
Case ErrorMsg = "ID"
|
|
Error = IdName: " is Null."
|
|
|
|
Case ErrorMsg = "RESTORED"
|
|
Error = "Record ":OrigId:" has been restored to the ":TableName:" table."
|
|
|
|
Case ErrorMsg = "TOOMANY"
|
|
Error = "You only restore one record at a time."
|
|
|
|
Case ErrorMsg = "RESTORE"
|
|
Mess<MICON$> = "?"
|
|
Mess<MTYPE$> = "BNY"
|
|
Error = "Would you like to restore this entry?"
|
|
|
|
Case ErrorMsg = "NOTABLE"
|
|
Error = "No Table Selected"
|
|
End Case
|
|
|
|
Mess<MTEXT$> = Error
|
|
rv = Msg("",Mess)
|
|
|
|
return
|
|
|
|
ResetTabOrder:
|
|
*-------------------------------------------------------------------------------------------------------------------------
|
|
* Resets Tab Order
|
|
*-------------------------------------------------------------------------------------------------------------------------
|
|
|
|
LastPageCtrl = ""
|
|
LastCtrl = ""
|
|
FirstCtrl = ""
|
|
rVal = ""
|
|
PCtrls = ""
|
|
NCtrls = ""
|
|
NProps = ""
|
|
|
|
Begin Case
|
|
Case cWin$ EQ "NDW_AUDIT_TRAIL"
|
|
rVal<1> = @Window:".COB_TABLE"
|
|
rVal<2> = @Window:".EDL_ID"
|
|
rVal<3> = @Window:".EDT_AUDIT_INFO"
|
|
rVal<4> = @Window:".PUB_RESTORE"
|
|
rVal<5> = @Window:".PUB_VIEW"
|
|
|
|
Case Otherwise$
|
|
Begin Case
|
|
Case Page EQ 1
|
|
Set_Property("SYSTEM", "FOCUS", cWin$:".OLE_VIEWER")
|
|
rVal<1> = cWin$:".OLE_VIEWER"
|
|
rVal<2> = cWin$:".PUB_RESTORE"
|
|
rVal<3> = cWin$:".PUB_COMPARE"
|
|
rVal<4> = cWin$:".PUB_CLOSE"
|
|
Case Page EQ 2
|
|
Set_Property("SYSTEM", "FOCUS", cWin$:".OLE_ARCHIVE")
|
|
rVal<1> = cWin$:".OLE_ARCHIVE"
|
|
rVal<2> = cWin$:".OLE_ORIGINAL"
|
|
rVal<3> = cWin$:".PUB_RESTORE"
|
|
rVal<4> = cWin$:".PUB_RETURN"
|
|
rVal<5> = cWin$:".PUB_CLOSE"
|
|
End Case
|
|
End Case
|
|
MxC = Count(rVal,@FM) + (rVal NE "")
|
|
|
|
For i = 1 to MxC
|
|
If i = MxC Then
|
|
nVal = 1
|
|
End Else
|
|
nVal = i + 1
|
|
End
|
|
PCtrls<-1> = rVal<i>
|
|
NCtrls<-1> = rVal<nVal>
|
|
NProps<-1> = "NEXT"
|
|
Next i
|
|
|
|
Convert @FM to @RM in PCtrls
|
|
Convert @FM to @RM in NCtrls
|
|
Convert @FM to @RM in NProps
|
|
|
|
Set_Property(PCtrls, NProps, NCtrls)
|
|
return
|
|
|