home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 1_2002.ISO / Data / Zips / VBhelWorkS46455152002.psc / VBHelpWorkShop / cModule.cls < prev    next >
Encoding:
Visual Basic class definition  |  2001-10-29  |  13.5 KB  |  551 lines

  1. VERSION 1.0 CLASS
  2. BEGIN
  3.   MultiUse = -1  'True
  4.   Persistable = 0  'NotPersistable
  5.   DataBindingBehavior = 0  'vbNone
  6.   DataSourceBehavior  = 0  'vbNone
  7.   MTSTransactionMode  = 0  'NotAnMTSObject
  8. END
  9. Attribute VB_Name = "cModule"
  10. Attribute VB_GlobalNameSpace = False
  11. Attribute VB_Creatable = True
  12. Attribute VB_PredeclaredId = False
  13. Attribute VB_Exposed = False
  14. Public Procs As New Collection
  15. Public Vars As New Collection
  16. Public UTypes As New Collection
  17. Public Objects As New Collection ' Collezione di cobj che descrivono i Controlli di un form
  18. Public Key As String
  19.  
  20. Public ModuleType As String
  21. Public ClassName As String
  22. Public FileName As String
  23.   
  24. Public Caption As String
  25. Public HelpDex As String
  26. Public HelpRemarks As String
  27. Public HelpTopic As String
  28. Public HelpScreenShoot As String
  29.  
  30.  
  31. Sub CleanUP()
  32.   Dim i As Long
  33.   
  34.   For i = 1 To Procs.Count
  35.      Procs.Remove 1
  36.   Next
  37.   For i = 1 To Vars.Count
  38.      Vars.Remove 1
  39.   Next
  40.   For i = 1 To Objects.Count
  41.      Objects.Remove 1
  42.   Next
  43.   
  44. End Sub
  45.  
  46. Sub ResolveObjects()
  47.   Dim i As Long, St As String
  48.   Dim C As cObj
  49.   Dim Ar() As String
  50.      
  51.   If ModuleType <> "FRM" And ModuleType <> "CTL" Then Exit Sub
  52.   
  53.   Open FileName For Input As #1
  54.   Do Until EOF(1)
  55.      Line Input #1, St
  56.      If Len(St) = 0 Then GoTo skip
  57.      
  58.      Ar = Split(Trim(St), " ")
  59.      On Error Resume Next
  60.      Count = -1
  61.      Count = UBound(Ar)
  62.      
  63.      If Count >= 0 Then
  64.         If Ar(0) = "Attribute" Then Exit Do ' Fine
  65.         If Ar(0) = "End" Then GoTo skip
  66.         If Count > 1 Then
  67.         If Ar(0) = "Begin" And Ar(1) <> "VB.Form" And Ar(1) <> "VB.MDIForm" And Ar(1) <> "VB.Frame" Then
  68.            Set C = New cObj
  69.            C.Interactive = ParseControlType(Ar)
  70.            C.ClassName = Ar(1)
  71.            C.Name = Ar(2)
  72.            C.GetChilds 1
  73.            Objects.Add Item:=C
  74.            Set C = Nothing
  75.         End If
  76.         End If
  77.      End If
  78. skip:
  79.   Loop
  80.   Close 1
  81. End Sub
  82.  
  83.  
  84. Sub ResolveProcedures()
  85.   
  86.   Dim St As String
  87.   Dim Ar() As String, Count As Long
  88.   Dim C As cProcedure, IProc As Long
  89.   Dim Lin As Long
  90.   Dim A2() As String
  91.   Dim StartProc As Boolean
  92.   
  93.   Open FileName For Input As #1
  94.   Do Until EOF(1)
  95.      
  96.      IProc = 0
  97.      Lin = Lin + 1
  98.      
  99.      Line Input #1, St
  100.      
  101.      Ar = Split(Trim(St), " ")
  102.      On Error Resume Next
  103.      Count = -1
  104.      Count = UBound(Ar)
  105.      
  106.      If Count >= 0 Then
  107.         
  108.         If ProcEnd(Ar) Then
  109.            C.Lines.Add Item:=St
  110.            Procs.Add Item:=C
  111.            Set C = New cProcedure
  112.         End If
  113.         
  114.         IProc = ProcStart(Ar)
  115.         If IProc > 0 Then
  116.            StartProc = True
  117.            Set C = New cProcedure
  118.            C.IsPublic = IsPublic(Ar)
  119.            A2 = Split(Ar(IProc), "(")
  120.            C.Name = A2(0)
  121.            C.FullName = St
  122.            C.Caption = C.FullName
  123.         End If
  124.         
  125.         If StartProc Then C.Lines.Add Item:=St
  126.         
  127.         
  128.      End If
  129.   Loop
  130.   
  131.   Close 1
  132.  
  133. End Sub
  134.  
  135. Sub ResolveVariables()
  136.   
  137.   Dim St As String, i As Long
  138.   Dim Ar() As String, Count As Long
  139.   Dim C As cVars
  140.   Dim U As UserType
  141.   
  142.   Open FileName For Input As #1
  143.   Do Until EOF(1)
  144. '    Set C = New cVars
  145.      
  146.      Line Input #1, St
  147.      
  148.      Ar = Split(Trim(St), " ")
  149.      On Error Resume Next
  150.      Count = -1
  151.      Count = UBound(Ar)
  152.      
  153.      If Count >= 0 Then
  154.         If ProcStart(Ar) > 0 Then Exit Do
  155.         
  156.         i = GetID(Ar(0))
  157.         If InRange(i, 1, 6) Then
  158.            If i = 6 Or GetID(Ar(1)) = 6 Then
  159.               TypeOpen = True
  160.               Set U = New UserType
  161.               If i = 6 Then
  162.                  U.Name = Ar(1)
  163.               Else
  164.                  U.Name = Ar(2)
  165.               End If
  166.            Else
  167.               If InRange(i, 1, 2) Then ' Private
  168.                  Set C = GetVar(Ar, 1)
  169.                  If Not C Is Nothing Then
  170.                     C.Mode = "Private"
  171.                     Vars.Add Item:=C
  172.                  End If
  173.               Else ' Public
  174.                  Set C = GetVar(Ar, 1)
  175.                  If Not C Is Nothing Then
  176.                     C.Mode = "Public"
  177.                     Vars.Add Item:=C
  178.                  End If
  179.               End If
  180.            End If
  181.         ElseIf TypeOpen Then
  182.            If Count >= 1 Then
  183.             If Ar(0) = "End" And Ar(1) = "Type" Then
  184.                 UTypes.Add Item:=U
  185.                 TypeOpen = False
  186.             End If
  187.            End If
  188.             If TypeOpen Then
  189.               Set C = GetVar(Ar, 0)
  190.               U.Vars.Add Item:=C
  191.             End If
  192.         End If
  193.            
  194. GoTo ex
  195.         
  196.         If TypeOpen Then
  197.            If Ar(0) = "End" And Ar(1) = "Type" Then
  198.               TypeOpen = False
  199.            Else
  200.               GoSub GetVar
  201.            End If
  202.         End If
  203.         
  204.         If Ar(0) = "Type" Then
  205.            Set C = New cVars
  206.         End If
  207.         
  208.         If Ar(0) = "Public" Or _
  209.                Ar(0) = "Global" Then
  210.            GoSub GetVar
  211.            C.Mode = "PUB"
  212.            Vars.Add Item:=C
  213.         ElseIf Ar(0) = "Private" Or _
  214.                Ar(0) = "Dim" Then
  215.            GoSub GetVar
  216.            C.Mode = "LOC"
  217.            Vars.Add Item:=C
  218.         End If
  219.         
  220. ex:
  221.      End If
  222.   Loop
  223.   
  224.   Close 1
  225.  
  226. Exit Sub
  227.  
  228. GetVar:
  229.            If Ar(1) = "Enum" Or Ar(1) = "Const" Then
  230.            ElseIf Ar(1) = "Type" Then
  231.               C.Name = Ar(2)
  232.               TypeOpen = True
  233.            Else
  234.               Set C = New cVars
  235.               C.Name = Ar(1)
  236.               If Count < 2 Then
  237.                  C.varType = GetFixedType(C.Name)
  238.                  If C.varType = 0 Then C.varType = "Variant"
  239.               Else
  240.                  C.varType = Ar(3)
  241.               End If
  242.            End If
  243. Return
  244. End Sub
  245.  
  246.  
  247. Sub ExportToHtml()
  248.   
  249.   Dim HtmFile As String
  250.   Dim St As String, Ps As Long, i As Long, j As Long
  251.   Dim Ar() As String
  252.   Dim ok As Boolean
  253.   HtmFile = Prj.HTMLPath & "\" & TrimExt(ClassName) & ".htm"
  254.   
  255.   Open HtmFile For Output As 1
  256.   
  257.   
  258.   WriteHeader 1
  259.   
  260.   
  261.   Name$ = Caption 'TrimExt(ClassName)
  262.   
  263.   Print #1, "<p align=""center""><strong><FONT SIZE=""5"" COLOR=""#000040"">" & Name & "</FONT></strong></p>"
  264.   Print #1, "<HR SIZE=""5"" WIDTH=""100%"">"
  265.   
  266.   If Len(HelpScreenShoot) > 0 Then WriteCenteredImage 1, HelpScreenShoot
  267.   
  268.   Print #1, "<BR><strong><FONT SIZE=""2.2"" COLOR=""#000040"">Members</strong></FONT>"
  269.   Print #1, "<HR SIZE=""1"" WIDTH=""100%"">"
  270.   
  271.   For i = 1 To Procs.Count
  272.       If PublicMBR Then ok = Procs(i).IsPublic Else ok = True
  273.       If ok Then
  274.          If SinglePage Then
  275.              Lnk$ = Procs(i).Name & Format$(i, "00") & ".htm"
  276.          Else
  277.              Lnk$ = "#" & Procs(i).Name
  278.          End If
  279.          Print #1, "<a href=""" & Lnk & """>" & Procs(i).Name & "</a>"
  280.          If SinglePage Then Print #1, "<BR>"
  281.       End If
  282.   Next
  283.   
  284.   Print #1, "<HR SIZE=""1"" WIDTH=""100%"">"
  285.   
  286.   Print #1, "<BR><strong><FONT SIZE=""2.2"" COLOR=""#000040"">Declarations</strong></FONT>"
  287.   Print #1, "<HR SIZE=""1"" WIDTH=""100%"">"
  288.   
  289.   For i = 1 To Vars.Count
  290.       'If PublicMBR Then Ok = Vars(i).IsPublic Else Ok = True
  291.       ok = True
  292.       Nome$ = Vars(i).Name & " As " & Vars(i).varType
  293.       If ok Then Print #1, Nome & ", "
  294.   Next
  295.   
  296.   Print #1, "<HR SIZE=""1"" WIDTH=""100%"">"
  297.   
  298.  If SinglePage Then
  299.    PrintFooter 1
  300.    Close 1
  301.  End If
  302.   
  303.   
  304.   For i = 1 To Procs.Count
  305.    
  306.       If PublicMBR Then ok = Procs(i).IsPublic Else ok = True
  307.       If ok Then
  308.       
  309.        If SinglePage Then
  310.             HtmFile = Prj.HTMLPath & "\" & Procs(i).Name & Format$(i, "00") & ".htm"
  311.             Open HtmFile For Output As 1
  312.             WriteHeader 1
  313.             Name$ = Caption 'TrimExt(ClassName)
  314.             Print #1, "<p align=""center""><strong><FONT SIZE=""5"" COLOR=""#000040"">" & Name & "." & Procs(i).Name & "</FONT></strong></p>"
  315.             Print #1, "<HR SIZE=""5"" WIDTH=""100%"">"
  316.        End If
  317.          Print #1, "<BR>"
  318.          Print #1, "<a name=""" & Procs(i).Name & """><font SIZE=""2.2"" COLOR=""#000000""><strong>" & Procs(i).FullName & "</strong></font></a>"
  319.          
  320.          j = ParseVars(Procs(i).FullName, Ar)
  321.          If j > 0 Then
  322.             WriteTableHead 1
  323.             For k = 1 To j
  324.                 WriteTableRow 1, Ar(k - 1), "To Do"
  325.             Next
  326.             WriteTableClose 1
  327.          End If
  328.          If Len(Procs(i).HelpDex) > 0 Then Print #1, "<BR>   " & Procs(i).HelpDex
  329.          If Len(Procs(i).HelpRemarks) > 0 Then
  330.             Print #1, "<BR>   Remarks:"
  331.             Print #1, "<BR>      " & Procs(i).HelpRemarks
  332.          End If
  333.          If Len(Procs(i).HelpScreenShoot) > 0 Then WriteCenteredImage 1, Procs(i).HelpScreenShoot
  334.          Print #1, "<HR SIZE=""1"" WIDTH=""100%"">"
  335.         
  336.         If SinglePage Then
  337.            PrintFooter 1
  338.            Close 1
  339.         End If
  340.       End If
  341.   Next
  342.   
  343.   
  344. If Not SinglePage Then
  345.  PrintFooter 1
  346.   Close 1
  347. End If
  348.   
  349.  
  350. End Sub
  351.  
  352.  
  353. Sub Save(hF As Long)
  354.   Dim fMod As rModule
  355.   With fMod
  356.     .nProc = Procs.Count
  357.     .nvars = Vars.Count
  358.     .nObjects = Objects.Count
  359.     .Key = Key
  360.     .ModuleType = ModuleType
  361.     .ClassName = ClassName
  362.     .FileName = FileName
  363.     .Caption = Caption
  364.     .HelpDex = HelpDex
  365.     .HelpRemarks = HelpRemarks
  366.     .HelpTopic = HelpTopic
  367.     .HelpScreenShoot = HelpScreenShoot
  368.   End With
  369.   
  370.   Put #hF, , fMod
  371.   
  372.   For i = 1 To Procs.Count
  373.        Procs(i).Save hF
  374.   Next
  375.   
  376.   For i = 1 To Vars.Count
  377.        Vars(i).Save hF
  378.   Next
  379.   
  380.   For i = 1 To Objects.Count
  381.        Objects(i).Save hF
  382.   Next
  383.   
  384. End Sub
  385.  
  386. Sub OpenClass(hF As Long)
  387.   
  388.   Dim fMod As rModule
  389.   
  390.   Dim P As cProcedure
  391.   Dim V As cVars
  392.   Dim O As cObj
  393.   
  394.   CleanUP
  395.   
  396.   Get #hF, , fMod
  397.   
  398.   With fMod
  399.     Key = .Key
  400.     ModuleType = .ModuleType
  401.     ClassName = .ClassName
  402.     FileName = .FileName
  403.     Caption = .Caption
  404.     HelpDex = .HelpDex
  405.     HelpRemarks = .HelpRemarks
  406.     HelpTopic = .HelpTopic
  407.     HelpScreenShoot = .HelpScreenShoot
  408.       
  409.     For i = 1 To .nProc
  410.         Set P = New cProcedure
  411.          P.OpenClass hF
  412.          Procs.Add Item:=P, Key:=P.Key
  413.         Set P = Nothing
  414.     Next
  415.     
  416.     For i = 1 To .nvars
  417.         Set V = New cVars
  418.          V.OpenClass hF
  419.          Vars.Add Item:=V ', Key:=V.Key
  420.         Set V = Nothing
  421.     Next
  422.     
  423.     For i = 1 To .nObjects
  424.         Set O = New cObj
  425.          O.OpenClass hF
  426.          Objects.Add Item:=O, Key:=O.Key
  427.         Set O = Nothing
  428.     Next
  429.     
  430.   End With
  431.   
  432. End Sub
  433.  
  434.  
  435. Sub WriteDoc()
  436.  
  437. ' Scrive una pagina HTML con le definizioni dei controlli del form
  438.  
  439.   Dim HtmFile As String
  440.   Dim St As String, Ps As Long, i As Long, j As Long
  441.   Dim Ar() As String
  442.   Dim ok As Boolean
  443.   HtmFile = Prj.HTMLPath & "\" & TrimExt(ClassName) & ".htm"
  444.   
  445.   Open HtmFile For Output As 1
  446.   
  447.   WriteHeader 1
  448.   
  449.   Name$ = Caption 'TrimExt(ClassName)
  450.   
  451.  ' Print #1, "<BODY BGCOLOR=""#FFFFFF"" TEXT#000000 style=""font-family: , Verdana"">"
  452.   Print #1, "<p align=""center""><strong><FONT SIZE=""5"" COLOR=""#000040"">" & Name & "</FONT></strong></p>"
  453.   Print #1, "<HR SIZE=""5"" WIDTH=""100%"">"
  454.   
  455.   If Len(HelpScreenShoot) > 0 Then WriteCenteredImage 1, HelpScreenShoot
  456.   If Len(HelpDex) > 0 Then
  457.      Print #1, "<br>"
  458.      Print #1, HelpDex
  459.      Print #1, "<HR SIZE=""1"" WIDTH=""100%"">"
  460.   End If
  461.   
  462.   ok = False
  463.   For i = 1 To Objects.Count
  464.     If Objects(i).ClassName = "VB.Menu" Then
  465.        If Not ok Then
  466.           WriteTableHead 1, "Menu"
  467.           ok = True
  468.        End If
  469.          Objects(i).WriteRow 1, 1
  470.     End If
  471.   Next
  472.   If ok Then WriteTableClose 1
  473.   
  474.   ok = False
  475.   For i = 1 To Objects.Count
  476.     If Objects(i).ClassName = "VB.TextBox" Then
  477.        If Not ok Then
  478.           WriteTableHead 1, "Input Fields"
  479.           ok = True
  480.        End If
  481.        Objects(i).WriteRow 1, 1
  482.     End If
  483.   Next
  484.   If ok Then WriteTableClose 1
  485.   
  486.   ok = False
  487.   For i = 1 To Objects.Count
  488.     If Objects(i).ClassName = "VB.CommandButton" Or Objects(i).ClassName = "MSComctlLib.Toolbar" Then
  489.        If Not ok Then
  490.           WriteTableHead 1, "Command Buttons"
  491.           ok = True
  492.        End If
  493.        Objects(i).WriteRow 1, 1
  494.     End If
  495.   Next
  496.   If ok Then WriteTableClose 1
  497.   
  498.   ok = False
  499.   For i = 1 To Objects.Count
  500.     If Objects(i).ClassName = "VB.OptionButton" Or Objects(i).ClassName = "VB.CheckBox" Then
  501.        If Not ok Then
  502.           WriteTableHead 1, "Options"
  503.           ok = True
  504.        End If
  505.        Objects(i).WriteRow 1, 1
  506.     End If
  507.   Next
  508.   If ok Then WriteTableClose 1
  509.   
  510.   ok = False
  511.   For i = 1 To Objects.Count
  512.     If Objects(i).ClassName = "VB.ListBox" Or Objects(i).ClassName = "MSComctlLib.TreeView" Or Objects(i).ClassName = "MSComctlLib.ListView" Or Objects(i).ClassName = "VB.ComboBox" Then
  513.        If Not ok Then
  514.           WriteTableHead 1, "Lists/Reports"
  515.           ok = True
  516.        End If
  517.        Objects(i).WriteRow 1, 1
  518.     End If
  519.   Next
  520.   If ok Then WriteTableClose 1
  521.   
  522.  
  523. ' **************************** Scrive tutti i controlli rimanenti
  524. If Not Prj.SkipStaticControls Then
  525.   ok = False
  526.   For i = 1 To Objects.Count
  527.     If Objects(i).Done = 0 Then
  528.        If Not ok Then
  529.           WriteTableHead 1, "Others"
  530.           ok = True
  531.        End If
  532.        Objects(i).WriteRow 1, 1
  533.     End If
  534.   Next
  535.   If ok Then WriteTableClose 1
  536. End If
  537.  
  538. ' **************************** END
  539.   
  540. PrintFooter 1
  541. Close 1
  542.  
  543. End Sub
  544.  
  545.  
  546. Private Sub Class_Initialize()
  547.   Key = GenHandle
  548. End Sub
  549.  
  550.  
  551.