home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 1_2002.ISO / Data / Zips / CODE_UPLOAD7555792000.psc / VBRecentProjects / frmMainForm.frm (.txt) < prev    next >
Encoding:
Visual Basic Form  |  2000-06-14  |  17.6 KB  |  466 lines

  1. VERSION 5.00
  2. Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "Mscomctl.ocx"
  3. Begin VB.Form frmMainForm 
  4.    Caption         =   "VB Recent Projects"
  5.    ClientHeight    =   5895
  6.    ClientLeft      =   60
  7.    ClientTop       =   360
  8.    ClientWidth     =   9105
  9.    Icon            =   "frmMainForm.frx":0000
  10.    LinkTopic       =   "Form1"
  11.    ScaleHeight     =   5895
  12.    ScaleWidth      =   9105
  13.    StartUpPosition =   3  'Windows Default
  14.    Begin VB.CommandButton cmdMoveUp 
  15.       Caption         =   "Move Up"
  16.       Height          =   375
  17.       Left            =   2820
  18.       TabIndex        =   3
  19.       Top             =   5460
  20.       Width           =   975
  21.    End
  22.    Begin VB.CommandButton cmdMoveDown 
  23.       Caption         =   "Move Down"
  24.       Height          =   375
  25.       Left            =   3840
  26.       TabIndex        =   4
  27.       Top             =   5460
  28.       Width           =   1095
  29.    End
  30.    Begin VB.OptionButton optVBVersion 
  31.       Caption         =   "VB 6.0"
  32.       Height          =   255
  33.       Index           =   1
  34.       Left            =   8160
  35.       TabIndex        =   7
  36.       Top             =   5520
  37.       Value           =   -1  'True
  38.       Width           =   855
  39.    End
  40.    Begin VB.OptionButton optVBVersion 
  41.       Caption         =   "VB 5.0"
  42.       Height          =   255
  43.       Index           =   0
  44.       Left            =   7080
  45.       TabIndex        =   6
  46.       Top             =   5520
  47.       Width           =   855
  48.    End
  49.    Begin VB.CommandButton cmdDelete 
  50.       Caption         =   "R&emove from list"
  51.       Height          =   375
  52.       Left            =   1320
  53.       TabIndex        =   2
  54.       Top             =   5460
  55.       Width           =   1455
  56.    End
  57.    Begin MSComctlLib.ImageList imgIcons16 
  58.       Left            =   120
  59.       Top             =   4560
  60.       _ExtentX        =   1005
  61.       _ExtentY        =   1005
  62.       BackColor       =   -2147483643
  63.       ImageWidth      =   16
  64.       ImageHeight     =   16
  65.       MaskColor       =   16711935
  66.       _Version        =   393216
  67.       BeginProperty Images {2C247F25-8591-11D1-B16A-00C0F0283628} 
  68.          NumListImages   =   4
  69.          BeginProperty ListImage1 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  70.             Picture         =   "frmMainForm.frx":030A
  71.             Key             =   ""
  72.          EndProperty
  73.          BeginProperty ListImage2 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  74.             Picture         =   "frmMainForm.frx":0466
  75.             Key             =   ""
  76.          EndProperty
  77.          BeginProperty ListImage3 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  78.             Picture         =   "frmMainForm.frx":05C2
  79.             Key             =   ""
  80.          EndProperty
  81.          BeginProperty ListImage4 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  82.             Picture         =   "frmMainForm.frx":071C
  83.             Key             =   ""
  84.          EndProperty
  85.       EndProperty
  86.    End
  87.    Begin VB.CommandButton cmdSaveChanges 
  88.       Caption         =   "&Save changes"
  89.       Height          =   375
  90.       Left            =   4980
  91.       TabIndex        =   5
  92.       Top             =   5460
  93.       Width           =   1515
  94.    End
  95.    Begin VB.CommandButton cmdRefresh 
  96.       Caption         =   "&Refresh"
  97.       Height          =   375
  98.       Left            =   60
  99.       TabIndex        =   1
  100.       Top             =   5460
  101.       Width           =   1215
  102.    End
  103.    Begin MSComctlLib.ListView lvListView 
  104.       DragIcon        =   "frmMainForm.frx":0876
  105.       Height          =   5355
  106.       Left            =   0
  107.       TabIndex        =   0
  108.       Top             =   0
  109.       Width           =   9075
  110.       _ExtentX        =   16007
  111.       _ExtentY        =   9446
  112.       View            =   3
  113.       LabelEdit       =   1
  114.       LabelWrap       =   -1  'True
  115.       HideSelection   =   0   'False
  116.       AllowReorder    =   -1  'True
  117.       FullRowSelect   =   -1  'True
  118.       GridLines       =   -1  'True
  119.       _Version        =   393217
  120.       Icons           =   "imgIcons16"
  121.       SmallIcons      =   "imgIcons16"
  122.       ColHdrIcons     =   "imgIcons16"
  123.       ForeColor       =   -2147483640
  124.       BackColor       =   -2147483643
  125.       BorderStyle     =   1
  126.       Appearance      =   1
  127.       NumItems        =   0
  128.    End
  129. Attribute VB_Name = "frmMainForm"
  130. Attribute VB_GlobalNameSpace = False
  131. Attribute VB_Creatable = False
  132. Attribute VB_PredeclaredId = True
  133. Attribute VB_Exposed = False
  134. '--------------------------------------------
  135. ' VB Recent Project Manager
  136. ' Author: Matjaz Bravc
  137. ' mbravc@hotmail.com
  138. ' Thanks to Brad Martinez and Steve McMahon!
  139. '--------------------------------------------
  140. Option Explicit
  141. Private AnyChangesMade As Boolean
  142. Dim InDrag As Boolean ' Flag that signals a Drag Drop operation.
  143. Dim DraggedLVItem As ListItem ' Item that is being dragged.
  144. Private Declare Function LockWindowUpdate Lib "user32" (ByVal hWndLock As Long) As Long
  145. Private Declare Function ShellExecute Lib _
  146.               "shell32.dll" Alias "ShellExecuteA" _
  147.               (ByVal hwnd As Long, _
  148.                ByVal lpOperation As String, _
  149.                ByVal lpFile As String, _
  150.                ByVal lpParameters As String, _
  151.                ByVal lpDirectory As String, _
  152.                ByVal nShowCmd As Long) As Long
  153.                
  154. Private Const SW_SHOW = 1
  155. Private m_cHdrIcons As New cLVHeaderSortIcons
  156. Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
  157. Private Sub ExecuteCommand(ByVal NavTo As String)
  158.   Dim CDir As String
  159.   Dim hBrowse As Long
  160.   CDir = CurDir
  161.   ChDir GetPath(NavTo)
  162.   hBrowse = ShellExecute(0&, "open", GetFileName(NavTo), "", "", SW_SHOW)
  163.   ChDir CDir
  164. End Sub
  165. Private Sub CreateLVColumns()
  166.   Dim ColHeader As ColumnHeader
  167.   '--- Clear the ListView control
  168.   lvListView.ListItems.Clear
  169.   lvListView.ColumnHeaders.Clear
  170.   Set ColHeader = lvListView.ColumnHeaders.Add(, "Project", "Recent projects (0)")
  171.   ColHeader.Icon = 4
  172.   Call lvListView.ColumnHeaders.Add(, "ProjectExists", "Project exists")
  173.   Call lvListView.ColumnHeaders.Add(, "ProjectFile", "Project Filename")
  174. End Sub
  175. Private Sub cmdDelete_Click()
  176.   Dim i As Long
  177.   Dim Index As Long
  178.   LockWindowUpdate lvListView.hwnd
  179.   Index = lvListView.SelectedItem.Index
  180.   For i = lvListView.ListItems.Count To 1 Step -1
  181.     If lvListView.ListItems(i).Selected Then
  182.       Call lvListView.ListItems.Remove(i)
  183.     End If
  184.   Next
  185.   lvListView.Refresh
  186.   If lvListView.ListItems.Count > 0 Then
  187.     If lvListView.ListItems.Count > Index Then
  188.       lvListView.ListItems(Index).Selected = True
  189.     Else
  190.       lvListView.ListItems(lvListView.ListItems.Count).Selected = True
  191.     End If
  192.   End If
  193.   lvListView.ColumnHeaders(1).Text = "Recent Projects (" & lvListView.ListItems.Count & ")"
  194.   LockWindowUpdate 0
  195.   AnyChangesMade = True
  196. End Sub
  197. Private Sub cmdMoveDown_Click()
  198.   Dim SelLVItem As ListItem
  199.   Dim LVItem As ListItem
  200.   If SelectedItems(lvListView) = 1 Then
  201.     lvListView.Sorted = False
  202.     LockWindowUpdate lvListView.hwnd
  203.     Set SelLVItem = lvListView.SelectedItem
  204.     If lvListView.SelectedItem.Index < lvListView.ListItems.Count Then
  205.       If lvListView.SelectedItem.Index < lvListView.ListItems.Count Then
  206.         Set LVItem = lvListView.ListItems.Add((lvListView.SelectedItem.Index + 2), , SelLVItem.Text, 0, 0)
  207.         LVItem.Icon = SelLVItem.Icon
  208.         LVItem.SmallIcon = SelLVItem.SmallIcon
  209.         LVItem.ListSubItems.Add , "ProjectExists", SelLVItem.ListSubItems("ProjectExists").Text
  210.         LVItem.ListSubItems("ProjectExists").ForeColor = SelLVItem.ListSubItems("ProjectExists").ForeColor
  211.         LVItem.ListSubItems.Add , "ProjectFile", SelLVItem.ListSubItems("ProjectFile").Text
  212.         LVItem.ListSubItems("ProjectFile").ForeColor = SelLVItem.ListSubItems("ProjectFile").ForeColor
  213.         lvListView.ListItems.Remove lvListView.SelectedItem.Index
  214.         lvListView.Refresh
  215.         LVItem.EnsureVisible
  216.         LVItem.Selected = True
  217.         LVItem.Tag = SelLVItem.Text
  218.       End If
  219.     End If
  220.     LockWindowUpdate 0
  221.   End If
  222. End Sub
  223. Private Sub cmdMoveUp_Click()
  224.   Dim SelLVItem As ListItem
  225.   Dim LVItem As ListItem
  226.   If SelectedItems(lvListView) = 1 Then
  227.     lvListView.Sorted = False
  228.     LockWindowUpdate lvListView.hwnd
  229.     Set SelLVItem = lvListView.SelectedItem
  230.     If lvListView.SelectedItem.Index > 1 Then
  231.       If lvListView.SelectedItem.Index - 1 > 0 Then
  232.         Set LVItem = lvListView.ListItems.Add((lvListView.SelectedItem.Index - 1), , SelLVItem.Text, 0, 0)
  233.         LVItem.Icon = SelLVItem.Icon
  234.         LVItem.SmallIcon = SelLVItem.SmallIcon
  235.         LVItem.ListSubItems.Add , "ProjectExists", SelLVItem.ListSubItems("ProjectExists").Text
  236.         LVItem.ListSubItems("ProjectExists").ForeColor = SelLVItem.ListSubItems("ProjectExists").ForeColor
  237.         LVItem.ListSubItems.Add , "ProjectFile", SelLVItem.ListSubItems("ProjectFile").Text
  238.         LVItem.ListSubItems("ProjectFile").ForeColor = SelLVItem.ListSubItems("ProjectFile").ForeColor
  239.         lvListView.ListItems.Remove lvListView.SelectedItem.Index
  240.         lvListView.Refresh
  241.         LVItem.EnsureVisible
  242.         LVItem.Selected = True
  243.         LVItem.Tag = SelLVItem.Text
  244.       End If
  245.     End If
  246.     LockWindowUpdate 0
  247.   End If
  248. End Sub
  249. Private Sub cmdSaveChanges_Click()
  250.   Dim i As Long
  251.   Dim ItemCaption As String
  252.   Dim LVItem As ListItem
  253.   Dim Wait As New clsWaitCursor
  254.   Dim CReg As clsRegistry
  255.   Wait.SetCursor
  256.   LockWindowUpdate lvListView.hwnd
  257.   Set CReg = New clsRegistry
  258.   CReg.ClassKey = HKEY_CURRENT_USER
  259.   If optVBVersion(0).Value = True Then
  260.     CReg.SectionKey = "Software\Microsoft\Visual Basic\5.0\RecentFiles\"
  261.   Else
  262.     CReg.SectionKey = "Software\Microsoft\Visual Basic\6.0\RecentFiles\"
  263.   End If
  264.   CReg.DeleteKey
  265.   CReg.CreateKey
  266.   For i = 1 To lvListView.ListItems.Count
  267.     CReg.ValueKey = i
  268.     CReg.ValueType = REG_SZ
  269.     CReg.Value = lvListView.ListItems(i).Text
  270.   Next
  271.   LockWindowUpdate 0
  272.   AnyChangesMade = False
  273. End Sub
  274. Private Sub Form_Activate()
  275.   lvListView.SetFocus
  276. End Sub
  277. Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
  278.   If AnyChangesMade Then
  279.     If MsgBox("Save changes?      ", vbQuestion + vbYesNo, "Question") = vbYes Then
  280.       cmdSaveChanges_Click
  281.     End If
  282.   End If
  283. End Sub
  284. Private Sub Form_Resize()
  285.   lvListView.Move 0, 0, ScaleWidth, ScaleHeight - 500
  286.   cmdRefresh.Move cmdRefresh.Left, ScaleHeight - cmdRefresh.Height - 60
  287.   cmdDelete.Move cmdDelete.Left, ScaleHeight - cmdDelete.Height - 60
  288.   cmdMoveUp.Move cmdMoveUp.Left, ScaleHeight - cmdMoveUp.Height - 60
  289.   cmdMoveDown.Move cmdMoveDown.Left, ScaleHeight - cmdMoveDown.Height - 60
  290.   cmdSaveChanges.Move cmdSaveChanges.Left, ScaleHeight - cmdSaveChanges.Height - 60
  291.   optVBVersion(1).Move ScaleWidth - optVBVersion(1).Width - 60, ScaleHeight - optVBVersion(1).Height - 60
  292.   optVBVersion(0).Move ScaleWidth - optVBVersion(0).Width - optVBVersion(1).Width - 120, ScaleHeight - optVBVersion(0).Height - 60
  293. End Sub
  294. Private Sub Form_Unload(Cancel As Integer)
  295.   WriteListViewSettings lvListView
  296.   WriteFormPos frmMainForm
  297. End Sub
  298. Private Sub RefreshList()
  299.   Dim sKeys() As String
  300.   Dim iKeys As Long
  301.   Dim iKeysCount As Long
  302.   Dim Wait As New clsWaitCursor
  303.   Dim TmpStr As String
  304.   Dim ItemCaption As String
  305.   Dim LVItem As ListItem
  306.   Dim CReg As clsRegistry
  307.   If AnyChangesMade Then
  308.     If MsgBox("Save changes?      ", vbQuestion + vbYesNo, "Question") = vbYes Then
  309.       cmdSaveChanges_Click
  310.     End If
  311.   End If
  312.   Wait.SetCursor
  313.   lvListView.ListItems.Clear
  314.   LockWindowUpdate lvListView.hwnd
  315.   iKeysCount = 0
  316.   Set CReg = New clsRegistry
  317.   CReg.ClassKey = HKEY_CURRENT_USER
  318.   If optVBVersion(0).Value = True Then
  319.     CReg.SectionKey = "Software\Microsoft\Visual Basic\5.0\RecentFiles\"
  320.   Else
  321.     CReg.SectionKey = "Software\Microsoft\Visual Basic\6.0\RecentFiles\"
  322.   End If
  323.   CReg.EnumerateValues sKeys(), iKeysCount
  324.   If (iKeysCount > 0) Then
  325.    For iKeys = 1 To iKeysCount
  326.      CReg.ValueKey = sKeys(iKeys)
  327.      ItemCaption = CReg.Value
  328.      Set LVItem = lvListView.ListItems.Add(, , ItemCaption, 0, 0)
  329.      If FileExists(ItemCaption) Then
  330.        LVItem.Icon = 1
  331.        LVItem.SmallIcon = 1
  332.        LVItem.ListSubItems.Add , "ProjectExists", "Yes"
  333.        LVItem.ListSubItems("ProjectExists").ForeColor = vbWindowText
  334.        LVItem.ListSubItems.Add , "ProjectFile", GetFileName(ItemCaption)
  335.        LVItem.ListSubItems("ProjectFile").ForeColor = vbWindowText
  336.      Else
  337.        LVItem.Icon = 2
  338.        LVItem.SmallIcon = 2
  339.        LVItem.ListSubItems.Add , "ProjectExists", "No"
  340.        LVItem.ListSubItems("ProjectExists").ForeColor = vbRed
  341.        LVItem.ListSubItems.Add , "ProjectFile", GetFileName(ItemCaption)
  342.        LVItem.ListSubItems("ProjectFile").ForeColor = vbRed
  343.      End If
  344.      LVItem.Selected = False
  345.      LVItem.Tag = sKeys(iKeys)
  346.    Next iKeys
  347.   End If
  348.   lvListView.Refresh
  349.   lvListView.ColumnHeaders(1).Text = "Recent Projects (" & lvListView.ListItems.Count & ")"
  350.   LockWindowUpdate 0
  351.   If lvListView.ListItems.Count > 0 Then
  352.     lvListView.ListItems(1).Selected = True
  353.   End If
  354.   AnyChangesMade = False
  355. End Sub
  356. Private Sub cmdRefresh_Click()
  357.   RefreshList
  358. End Sub
  359. Private Sub Form_Load()
  360.   ' Set to True if the current OS is WinNT. Tested in *every* shell function's proc.
  361.   g_fIsWinNT = IsWinNT
  362.   AnyChangesMade = False
  363.   CreateLVColumns
  364.   ReadListViewSettings lvListView, , False
  365.   ReadFormPos frmMainForm
  366.   RefreshList
  367.   ' Initialize the header sort icons object.
  368.   Set m_cHdrIcons.ListView = lvListView
  369.   ' Set the header icons and sort the ListView
  370.   'Call m_cHdrIcons.SetHeaderIcons(lvListView.SortKey, lvListView.SortOrder)
  371. End Sub
  372. Private Sub lvListView_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
  373.   With lvListView
  374.     ' Toggle the clicked column's sort order only if the active colum is clicked
  375.     ' (iow, don't reverse the sort order when different columns are clicked).
  376.     If (.SortKey = ColumnHeader.Index - 1) Then
  377.       ColumnHeader.Tag = Not Val(ColumnHeader.Tag)
  378.     End If
  379.     ' Set sort order to that of the respective SortOrderConstants value
  380.     .SortOrder = Abs(Val(ColumnHeader.Tag))
  381.     ' Get the zero-based index of the clicked column.
  382.     ' (ColumnHeader.Index is one-based).
  383.     .SortKey = ColumnHeader.Index - 1
  384.     ' set the header icons and sort the ListView
  385.     Call m_cHdrIcons.SetHeaderIcons(.SortKey, .SortOrder)
  386.     .Sorted = True
  387.   End With
  388. End Sub
  389. Private Sub lvListView_DblClick()
  390.   If lvListView.SelectedItem.ListSubItems("ProjectExists").Text = "Yes" Then
  391.     ExecuteCommand lvListView.SelectedItem.Text
  392.   Else
  393.     Beep
  394.   End If
  395. End Sub
  396. Sub MoveRow(ByVal pi_MoveFrom As Integer, ByVal pi_MoveTo As Integer)
  397.   Dim li_Counter As Integer
  398.   If pi_MoveFrom > pi_MoveTo Then
  399.     'Moving up the list - so shift them all down
  400.     For li_Counter = pi_MoveFrom To pi_MoveTo + 1 Step -1
  401.       'lvListView.ListItems(li_Counter) = lvListView.ListItems(li_Counter - 1)
  402.     Next li_Counter
  403.   Else
  404.     'Moving down the list - so shift them all up
  405.     For li_Counter = pi_MoveFrom To pi_MoveTo - 1
  406.       'lvListView.ListItems(li_Counter) = lvListView.ListItems(li_Counter + 1)
  407.     Next li_Counter
  408.   End If
  409. End Sub
  410. Private Sub lvListView_DragDrop(Source As Control, x As Single, y As Single)
  411.   Dim LVItem As ListItem
  412.   If lvListView.DropHighlight Is Nothing Then
  413.     Set lvListView.DropHighlight = Nothing
  414.     InDrag = False
  415.     Exit Sub
  416.   Else
  417.     If DraggedLVItem = lvListView.DropHighlight Then Exit Sub
  418.     Set LVItem = lvListView.ListItems.Add((lvListView.DropHighlight.Index), , DraggedLVItem.Text, 0, 0)
  419.     LVItem.Icon = DraggedLVItem.Icon
  420.     LVItem.SmallIcon = DraggedLVItem.SmallIcon
  421.     LVItem.ListSubItems.Add , "ProjectExists", DraggedLVItem.ListSubItems("ProjectExists").Text
  422.     LVItem.ListSubItems("ProjectExists").ForeColor = DraggedLVItem.ListSubItems("ProjectExists").ForeColor
  423.     LVItem.ListSubItems.Add , "ProjectFile", DraggedLVItem.ListSubItems("ProjectFile").Text
  424.     LVItem.ListSubItems("ProjectFile").ForeColor = DraggedLVItem.ListSubItems("ProjectFile").ForeColor
  425.     lvListView.ListItems.Remove DraggedLVItem.Index
  426.     lvListView.Refresh
  427.     LVItem.Selected = True
  428.     LVItem.Tag = DraggedLVItem.Text
  429.     Set lvListView.DropHighlight = Nothing
  430.     InDrag = False
  431.   End If
  432. End Sub
  433. Private Sub lvListView_DragOver(Source As Control, x As Single, y As Single, state As Integer)
  434.   If InDrag Then
  435.     ' Set DropHighlight to the mouse's coordinates.
  436.     Set lvListView.DropHighlight = lvListView.HitTest(x, y)
  437.   End If
  438. End Sub
  439. Private Sub lvListView_KeyDown(KeyCode As Integer, Shift As Integer)
  440.   If KeyCode = vbKeyDelete Then
  441.     cmdDelete_Click
  442.   End If
  443. End Sub
  444. Private Sub lvListView_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  445.   If lvListView.HitTest(x, y) Is Nothing Then
  446.     lvListView.MultiSelect = False
  447.   Else
  448.     lvListView.MultiSelect = IIf(Shift = 0, False, True)
  449.     Set DraggedLVItem = lvListView.HitTest(x, y) ' Set the item being dragged.
  450.   End If
  451. End Sub
  452. Private Sub lvListView_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
  453.   If Button = vbLeftButton Then
  454.     InDrag = True ' Set the flag to true.
  455.     lvListView.Sorted = False
  456.     Set lvListView.SelectedItem = lvListView.HitTest(x, y)
  457.     lvListView.Drag vbBeginDrag ' Drag operation
  458.   End If
  459. End Sub
  460. Private Sub lvListView_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
  461.   Set lvListView.DropHighlight = Nothing
  462. End Sub
  463. Private Sub optVBVersion_Click(Index As Integer)
  464.   RefreshList
  465. End Sub
  466.