frmMain.frm
上传用户:nicktai
上传日期:2010-01-26
资源大小:40k
文件大小:51k
源码类别:

Ftp服务器

开发平台:

Visual Basic

  1. VERSION 5.00
  2. Object = "{F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0"; "COMDLG32.OCX"
  3. Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCTL.OCX"
  4. Object = "{38911DA0-E448-11D0-84A3-00DD01104159}#1.1#0"; "COMCT332.OCX"
  5. Begin VB.Form frmMain 
  6.    Caption         =   "FtpClient"
  7.    ClientHeight    =   5325
  8.    ClientLeft      =   165
  9.    ClientTop       =   735
  10.    ClientWidth     =   8970
  11.    BeginProperty Font 
  12.       Name            =   "Tahoma"
  13.       Size            =   8.25
  14.       Charset         =   204
  15.       Weight          =   400
  16.       Underline       =   0   'False
  17.       Italic          =   0   'False
  18.       Strikethrough   =   0   'False
  19.    EndProperty
  20.    Icon            =   "frmMain.frx":0000
  21.    LinkTopic       =   "Form1"
  22.    ScaleHeight     =   5325
  23.    ScaleWidth      =   8970
  24.    StartUpPosition =   3  'Windows Default
  25.    Begin VB.PictureBox picSplitter 
  26.       BackColor       =   &H8000000D&
  27.       BorderStyle     =   0  'None
  28.       FillColor       =   &H8000000D&
  29.       BeginProperty Font 
  30.          Name            =   "MS Sans Serif"
  31.          Size            =   8.25
  32.          Charset         =   204
  33.          Weight          =   400
  34.          Underline       =   0   'False
  35.          Italic          =   0   'False
  36.          Strikethrough   =   0   'False
  37.       EndProperty
  38.       Height          =   4800
  39.       Left            =   6960
  40.       ScaleHeight     =   2090.126
  41.       ScaleMode       =   0  'User
  42.       ScaleWidth      =   780
  43.       TabIndex        =   3
  44.       Top             =   720
  45.       Visible         =   0   'False
  46.       Width           =   72
  47.    End
  48.    Begin MSComctlLib.ImageList imlSmall 
  49.       Left            =   7920
  50.       Top             =   720
  51.       _ExtentX        =   1005
  52.       _ExtentY        =   1005
  53.       BackColor       =   -2147483643
  54.       ImageWidth      =   16
  55.       ImageHeight     =   16
  56.       MaskColor       =   16711935
  57.       _Version        =   393216
  58.       BeginProperty Images {2C247F25-8591-11D1-B16A-00C0F0283628} 
  59.          NumListImages   =   2
  60.          BeginProperty ListImage1 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  61.             Picture         =   "frmMain.frx":27A2
  62.             Key             =   ""
  63.          EndProperty
  64.          BeginProperty ListImage2 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  65.             Picture         =   "frmMain.frx":2AF6
  66.             Key             =   ""
  67.          EndProperty
  68.       EndProperty
  69.    End
  70.    Begin MSComctlLib.ImageList imlLarge 
  71.       Left            =   7080
  72.       Top             =   960
  73.       _ExtentX        =   1005
  74.       _ExtentY        =   1005
  75.       BackColor       =   -2147483643
  76.       ImageWidth      =   32
  77.       ImageHeight     =   32
  78.       MaskColor       =   16711935
  79.       _Version        =   393216
  80.       BeginProperty Images {2C247F25-8591-11D1-B16A-00C0F0283628} 
  81.          NumListImages   =   2
  82.          BeginProperty ListImage1 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  83.             Picture         =   "frmMain.frx":2E4A
  84.             Key             =   ""
  85.          EndProperty
  86.          BeginProperty ListImage2 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  87.             Picture         =   "frmMain.frx":3A9E
  88.             Key             =   ""
  89.          EndProperty
  90.       EndProperty
  91.    End
  92.    Begin MSComctlLib.ImageList imlToolbarHot 
  93.       Left            =   6240
  94.       Top             =   1080
  95.       _ExtentX        =   1005
  96.       _ExtentY        =   1005
  97.       BackColor       =   -2147483643
  98.       ImageWidth      =   22
  99.       ImageHeight     =   20
  100.       MaskColor       =   16711935
  101.       _Version        =   393216
  102.       BeginProperty Images {2C247F25-8591-11D1-B16A-00C0F0283628} 
  103.          NumListImages   =   13
  104.          BeginProperty ListImage1 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  105.             Picture         =   "frmMain.frx":46F2
  106.             Key             =   ""
  107.          EndProperty
  108.          BeginProperty ListImage2 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  109.             Picture         =   "frmMain.frx":4C96
  110.             Key             =   ""
  111.          EndProperty
  112.          BeginProperty ListImage3 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  113.             Picture         =   "frmMain.frx":523A
  114.             Key             =   ""
  115.          EndProperty
  116.          BeginProperty ListImage4 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  117.             Picture         =   "frmMain.frx":57DE
  118.             Key             =   ""
  119.          EndProperty
  120.          BeginProperty ListImage5 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  121.             Picture         =   "frmMain.frx":5D82
  122.             Key             =   ""
  123.          EndProperty
  124.          BeginProperty ListImage6 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  125.             Picture         =   "frmMain.frx":6326
  126.             Key             =   ""
  127.          EndProperty
  128.          BeginProperty ListImage7 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  129.             Picture         =   "frmMain.frx":68CA
  130.             Key             =   ""
  131.          EndProperty
  132.          BeginProperty ListImage8 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  133.             Picture         =   "frmMain.frx":6E6E
  134.             Key             =   ""
  135.          EndProperty
  136.          BeginProperty ListImage9 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  137.             Picture         =   "frmMain.frx":7412
  138.             Key             =   ""
  139.          EndProperty
  140.          BeginProperty ListImage10 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  141.             Picture         =   "frmMain.frx":79B6
  142.             Key             =   ""
  143.          EndProperty
  144.          BeginProperty ListImage11 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  145.             Picture         =   "frmMain.frx":7F5A
  146.             Key             =   ""
  147.          EndProperty
  148.          BeginProperty ListImage12 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  149.             Picture         =   "frmMain.frx":84FE
  150.             Key             =   ""
  151.          EndProperty
  152.          BeginProperty ListImage13 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  153.             Picture         =   "frmMain.frx":8AA2
  154.             Key             =   ""
  155.          EndProperty
  156.       EndProperty
  157.    End
  158.    Begin VB.PictureBox picTitle 
  159.       BackColor       =   &H8000000C&
  160.       BorderStyle     =   0  'None
  161.       BeginProperty Font 
  162.          Name            =   "MS Sans Serif"
  163.          Size            =   8.25
  164.          Charset         =   204
  165.          Weight          =   400
  166.          Underline       =   0   'False
  167.          Italic          =   0   'False
  168.          Strikethrough   =   0   'False
  169.       EndProperty
  170.       Height          =   615
  171.       Left            =   2160
  172.       ScaleHeight     =   615
  173.       ScaleWidth      =   4335
  174.       TabIndex        =   5
  175.       Top             =   720
  176.       Width           =   4335
  177.       Begin VB.PictureBox Picture1 
  178.          BackColor       =   &H8000000C&
  179.          BorderStyle     =   0  'None
  180.          BeginProperty Font 
  181.             Name            =   "MS Sans Serif"
  182.             Size            =   8.25
  183.             Charset         =   204
  184.             Weight          =   400
  185.             Underline       =   0   'False
  186.             Italic          =   0   'False
  187.             Strikethrough   =   0   'False
  188.          EndProperty
  189.          Height          =   340
  190.          Left            =   -120
  191.          ScaleHeight     =   345
  192.          ScaleWidth      =   3255
  193.          TabIndex        =   9
  194.          Top             =   20
  195.          Width           =   3255
  196.          Begin VB.CheckBox Check1 
  197.             Appearance      =   0  'Flat
  198.             BackColor       =   &H8000000C&
  199.             Caption         =   "&Passive Mode"
  200.             ForeColor       =   &H8000000E&
  201.             Height          =   195
  202.             Left            =   120
  203.             TabIndex        =   12
  204.             Top             =   80
  205.             Width           =   1335
  206.          End
  207.          Begin VB.OptionButton Option1 
  208.             Appearance      =   0  'Flat
  209.             BackColor       =   &H8000000C&
  210.             Caption         =   "&ASCII"
  211.             ForeColor       =   &H8000000E&
  212.             Height          =   255
  213.             Index           =   0
  214.             Left            =   1680
  215.             TabIndex        =   11
  216.             Top             =   80
  217.             Width           =   855
  218.          End
  219.          Begin VB.OptionButton Option1 
  220.             Appearance      =   0  'Flat
  221.             BackColor       =   &H8000000C&
  222.             Caption         =   "&Image"
  223.             ForeColor       =   &H8000000E&
  224.             Height          =   255
  225.             Index           =   1
  226.             Left            =   2520
  227.             TabIndex        =   10
  228.             Top             =   80
  229.             Value           =   -1  'True
  230.             Width           =   855
  231.          End
  232.       End
  233.       Begin MSComctlLib.ProgressBar ProgressBar1 
  234.          Height          =   135
  235.          Left            =   120
  236.          TabIndex        =   6
  237.          Top             =   360
  238.          Width           =   3495
  239.          _ExtentX        =   6165
  240.          _ExtentY        =   238
  241.          _Version        =   393216
  242.          Appearance      =   0
  243.          Min             =   1e-4
  244.          Scrolling       =   1
  245.       End
  246.       Begin VB.Label Label1 
  247.          BackStyle       =   0  'Transparent
  248.          Caption         =   "Label1"
  249.          BeginProperty Font 
  250.             Name            =   "Tahoma"
  251.             Size            =   8.25
  252.             Charset         =   204
  253.             Weight          =   700
  254.             Underline       =   0   'False
  255.             Italic          =   0   'False
  256.             Strikethrough   =   0   'False
  257.          EndProperty
  258.          ForeColor       =   &H8000000E&
  259.          Height          =   255
  260.          Left            =   120
  261.          TabIndex        =   7
  262.          Top             =   120
  263.          Width           =   3495
  264.       End
  265.       Begin VB.Image imgIcon 
  266.          Height          =   480
  267.          Left            =   3720
  268.          Picture         =   "frmMain.frx":9046
  269.          Top             =   120
  270.          Width           =   480
  271.       End
  272.    End
  273.    Begin ComCtl3.CoolBar CoolBar1 
  274.       Align           =   1  'Align Top
  275.       Height          =   450
  276.       Left            =   0
  277.       TabIndex        =   4
  278.       Top             =   0
  279.       Width           =   8970
  280.       _ExtentX        =   15822
  281.       _ExtentY        =   794
  282.       BandCount       =   1
  283.       _CBWidth        =   8970
  284.       _CBHeight       =   450
  285.       _Version        =   "6.0.8450"
  286.       Child1          =   "tbToolBar"
  287.       MinHeight1      =   390
  288.       Width1          =   7935
  289.       NewRow1         =   0   'False
  290.       Begin MSComctlLib.Toolbar tbToolBar 
  291.          Height          =   390
  292.          Left            =   30
  293.          TabIndex        =   8
  294.          Top             =   30
  295.          Width           =   8850
  296.          _ExtentX        =   15610
  297.          _ExtentY        =   688
  298.          ButtonWidth     =   767
  299.          ButtonHeight    =   688
  300.          Style           =   1
  301.          ImageList       =   "imlToolbarIcons"
  302.          HotImageList    =   "imlToolbarHot"
  303.          _Version        =   393216
  304.          BeginProperty Buttons {66833FE8-8583-11D1-B16A-00C0F0283628} 
  305.             NumButtons      =   18
  306.             BeginProperty Button1 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  307.                Key             =   "Connect"
  308.                ImageIndex      =   1
  309.             EndProperty
  310.             BeginProperty Button2 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  311.                Object.ToolTipText     =   "Connect to ..."
  312.                Style           =   3
  313.             EndProperty
  314.             BeginProperty Button3 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  315.                Key             =   "UpLevel"
  316.                ImageIndex      =   2
  317.             EndProperty
  318.             BeginProperty Button4 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  319.                Style           =   3
  320.             EndProperty
  321.             BeginProperty Button5 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  322.                Key             =   "Stop"
  323.                Object.ToolTipText     =   "Stop operation"
  324.                ImageIndex      =   3
  325.             EndProperty
  326.             BeginProperty Button6 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  327.                Key             =   "Refresh"
  328.                Object.ToolTipText     =   "Refresh contents of current directory"
  329.                ImageIndex      =   4
  330.             EndProperty
  331.             BeginProperty Button7 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  332.                Style           =   3
  333.             EndProperty
  334.             BeginProperty Button8 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  335.                Key             =   "Download"
  336.                Object.ToolTipText     =   "Download File..."
  337.                ImageIndex      =   5
  338.             EndProperty
  339.             BeginProperty Button9 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  340.                Key             =   "Upload"
  341.                Object.ToolTipText     =   "Upload File..."
  342.                ImageIndex      =   6
  343.             EndProperty
  344.             BeginProperty Button10 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  345.                Style           =   3
  346.             EndProperty
  347.             BeginProperty Button11 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  348.                Key             =   "CreateDirectory"
  349.                Object.ToolTipText     =   "Create Directory..."
  350.                ImageIndex      =   7
  351.             EndProperty
  352.             BeginProperty Button12 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  353.                Key             =   "Delete"
  354.                Object.ToolTipText     =   "Delete File"
  355.                ImageIndex      =   8
  356.             EndProperty
  357.             BeginProperty Button13 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  358.                Key             =   "Rename"
  359.                Object.ToolTipText     =   "Rename File..."
  360.                ImageIndex      =   9
  361.             EndProperty
  362.             BeginProperty Button14 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  363.                Style           =   3
  364.             EndProperty
  365.             BeginProperty Button15 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  366.                Key             =   "View Large Icons"
  367.                Object.ToolTipText     =   "View Large Icons"
  368.                ImageIndex      =   10
  369.                Style           =   2
  370.             EndProperty
  371.             BeginProperty Button16 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  372.                Key             =   "View Small Icons"
  373.                Object.ToolTipText     =   "View Small Icons"
  374.                ImageIndex      =   11
  375.                Style           =   2
  376.             EndProperty
  377.             BeginProperty Button17 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  378.                Key             =   "View List"
  379.                Object.ToolTipText     =   "View List"
  380.                ImageIndex      =   12
  381.                Style           =   2
  382.             EndProperty
  383.             BeginProperty Button18 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  384.                Key             =   "View Details"
  385.                Object.ToolTipText     =   "View Details"
  386.                ImageIndex      =   13
  387.                Style           =   2
  388.                Value           =   1
  389.             EndProperty
  390.          EndProperty
  391.       End
  392.    End
  393.    Begin MSComctlLib.ImageList ImageList1 
  394.       Left            =   5640
  395.       Top             =   2280
  396.       _ExtentX        =   1005
  397.       _ExtentY        =   1005
  398.       BackColor       =   -2147483643
  399.       ImageWidth      =   16
  400.       ImageHeight     =   16
  401.       MaskColor       =   16711935
  402.       _Version        =   393216
  403.       BeginProperty Images {2C247F25-8591-11D1-B16A-00C0F0283628} 
  404.          NumListImages   =   3
  405.          BeginProperty ListImage1 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  406.             Picture         =   "frmMain.frx":B7E8
  407.             Key             =   ""
  408.          EndProperty
  409.          BeginProperty ListImage2 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  410.             Picture         =   "frmMain.frx":BB3C
  411.             Key             =   ""
  412.          EndProperty
  413.          BeginProperty ListImage3 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  414.             Picture         =   "frmMain.frx":BE90
  415.             Key             =   ""
  416.          EndProperty
  417.       EndProperty
  418.    End
  419.    Begin MSComctlLib.TreeView tvTreeView 
  420.       Height          =   4800
  421.       Left            =   0
  422.       TabIndex        =   2
  423.       Top             =   705
  424.       Width           =   2016
  425.       _ExtentX        =   3545
  426.       _ExtentY        =   8467
  427.       _Version        =   393217
  428.       Indentation     =   529
  429.       LineStyle       =   1
  430.       PathSeparator   =   "/"
  431.       Style           =   7
  432.       HotTracking     =   -1  'True
  433.       ImageList       =   "ImageList1"
  434.       Appearance      =   1
  435.    End
  436.    Begin MSComctlLib.ListView lvListView 
  437.       Height          =   3960
  438.       Left            =   2055
  439.       TabIndex        =   1
  440.       Top             =   1440
  441.       Width           =   3210
  442.       _ExtentX        =   5662
  443.       _ExtentY        =   6985
  444.       View            =   3
  445.       LabelEdit       =   1
  446.       LabelWrap       =   -1  'True
  447.       HideSelection   =   -1  'True
  448.       _Version        =   393217
  449.       Icons           =   "imlLarge"
  450.       SmallIcons      =   "imlSmall"
  451.       ForeColor       =   -2147483640
  452.       BackColor       =   -2147483643
  453.       BorderStyle     =   1
  454.       Appearance      =   1
  455.       NumItems        =   3
  456.       BeginProperty ColumnHeader(1) {BDD1F052-858B-11D1-B16A-00C0F0283628} 
  457.          Text            =   "File Name"
  458.          Object.Width           =   2540
  459.       EndProperty
  460.       BeginProperty ColumnHeader(2) {BDD1F052-858B-11D1-B16A-00C0F0283628} 
  461.          SubItemIndex    =   1
  462.          Text            =   "File Size"
  463.          Object.Width           =   2540
  464.       EndProperty
  465.       BeginProperty ColumnHeader(3) {BDD1F052-858B-11D1-B16A-00C0F0283628} 
  466.          SubItemIndex    =   2
  467.          Text            =   "Last Write Date"
  468.          Object.Width           =   2540
  469.       EndProperty
  470.    End
  471.    Begin MSComctlLib.StatusBar sbStatusBar 
  472.       Align           =   2  'Align Bottom
  473.       Height          =   270
  474.       Left            =   0
  475.       TabIndex        =   0
  476.       Top             =   5055
  477.       Width           =   8970
  478.       _ExtentX        =   15822
  479.       _ExtentY        =   476
  480.       _Version        =   393216
  481.       BeginProperty Panels {8E3867A5-8586-11D1-B16A-00C0F0283628} 
  482.          NumPanels       =   1
  483.          BeginProperty Panel1 {8E3867AB-8586-11D1-B16A-00C0F0283628} 
  484.             AutoSize        =   1
  485.             Object.Width           =   15399
  486.          EndProperty
  487.       EndProperty
  488.    End
  489.    Begin MSComDlg.CommonDialog dlgCommonDialog 
  490.       Left            =   1740
  491.       Top             =   1350
  492.       _ExtentX        =   847
  493.       _ExtentY        =   847
  494.       _Version        =   393216
  495.    End
  496.    Begin MSComctlLib.ImageList imlToolbarIcons 
  497.       Left            =   1740
  498.       Top             =   1350
  499.       _ExtentX        =   1005
  500.       _ExtentY        =   1005
  501.       BackColor       =   -2147483643
  502.       ImageWidth      =   22
  503.       ImageHeight     =   20
  504.       MaskColor       =   16711935
  505.       _Version        =   393216
  506.       BeginProperty Images {2C247F25-8591-11D1-B16A-00C0F0283628} 
  507.          NumListImages   =   13
  508.          BeginProperty ListImage1 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  509.             Picture         =   "frmMain.frx":C1E4
  510.             Key             =   ""
  511.          EndProperty
  512.          BeginProperty ListImage2 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  513.             Picture         =   "frmMain.frx":C788
  514.             Key             =   ""
  515.          EndProperty
  516.          BeginProperty ListImage3 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  517.             Picture         =   "frmMain.frx":CD2C
  518.             Key             =   ""
  519.          EndProperty
  520.          BeginProperty ListImage4 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  521.             Picture         =   "frmMain.frx":D2D0
  522.             Key             =   ""
  523.          EndProperty
  524.          BeginProperty ListImage5 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  525.             Picture         =   "frmMain.frx":D874
  526.             Key             =   ""
  527.          EndProperty
  528.          BeginProperty ListImage6 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  529.             Picture         =   "frmMain.frx":DE18
  530.             Key             =   ""
  531.          EndProperty
  532.          BeginProperty ListImage7 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  533.             Picture         =   "frmMain.frx":E3BC
  534.             Key             =   ""
  535.          EndProperty
  536.          BeginProperty ListImage8 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  537.             Picture         =   "frmMain.frx":E960
  538.             Key             =   ""
  539.          EndProperty
  540.          BeginProperty ListImage9 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  541.             Picture         =   "frmMain.frx":EF04
  542.             Key             =   ""
  543.          EndProperty
  544.          BeginProperty ListImage10 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  545.             Picture         =   "frmMain.frx":F4A8
  546.             Key             =   ""
  547.          EndProperty
  548.          BeginProperty ListImage11 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  549.             Picture         =   "frmMain.frx":FA4C
  550.             Key             =   ""
  551.          EndProperty
  552.          BeginProperty ListImage12 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  553.             Picture         =   "frmMain.frx":FFF0
  554.             Key             =   ""
  555.          EndProperty
  556.          BeginProperty ListImage13 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  557.             Picture         =   "frmMain.frx":10594
  558.             Key             =   ""
  559.          EndProperty
  560.       EndProperty
  561.    End
  562.    Begin VB.Image imgSplitter 
  563.       Height          =   4788
  564.       Left            =   1965
  565.       MouseIcon       =   "frmMain.frx":10B38
  566.       MousePointer    =   99  'Custom
  567.       Top             =   705
  568.       Width           =   150
  569.    End
  570.    Begin VB.Menu mnuFile 
  571.       Caption         =   "&File"
  572.       Begin VB.Menu mnuConnect 
  573.          Caption         =   "&Connect to ..."
  574.       End
  575.       Begin VB.Menu sep1 
  576.          Caption         =   "-"
  577.       End
  578.       Begin VB.Menu mnuDownload 
  579.          Caption         =   "&Download File ..."
  580.       End
  581.       Begin VB.Menu mnuUpload 
  582.          Caption         =   "&Upload File ..."
  583.       End
  584.       Begin VB.Menu sep2 
  585.          Caption         =   "-"
  586.       End
  587.       Begin VB.Menu mnuFileClose 
  588.          Caption         =   "&Close"
  589.       End
  590.    End
  591.    Begin VB.Menu mnuEdit 
  592.       Caption         =   "&Edit"
  593.       Begin VB.Menu mnuRename 
  594.          Caption         =   "&Rename File ..."
  595.       End
  596.       Begin VB.Menu mnuDelete 
  597.          Caption         =   "&Delete File ..."
  598.       End
  599.       Begin VB.Menu sep3 
  600.          Caption         =   "-"
  601.       End
  602.       Begin VB.Menu mnuCreateDir 
  603.          Caption         =   "&Create Directory ..."
  604.       End
  605.       Begin VB.Menu mnuRemoveDir 
  606.          Caption         =   "&Remove Directory"
  607.       End
  608.    End
  609.    Begin VB.Menu mnuView 
  610.       Caption         =   "&View"
  611.       Begin VB.Menu mnuViewToolbar 
  612.          Caption         =   "&Toolbar"
  613.          Checked         =   -1  'True
  614.       End
  615.       Begin VB.Menu mnuViewStatusBar 
  616.          Caption         =   "Status &Bar"
  617.          Checked         =   -1  'True
  618.       End
  619.       Begin VB.Menu sep4 
  620.          Caption         =   "-"
  621.       End
  622.       Begin VB.Menu mnuListViewMode 
  623.          Caption         =   "Lar&ge Icons"
  624.          Index           =   0
  625.       End
  626.       Begin VB.Menu mnuListViewMode 
  627.          Caption         =   "S&mall Icons"
  628.          Index           =   1
  629.       End
  630.       Begin VB.Menu mnuListViewMode 
  631.          Caption         =   "&List"
  632.          Index           =   2
  633.       End
  634.       Begin VB.Menu mnuListViewMode 
  635.          Caption         =   "&Details"
  636.          Index           =   3
  637.       End
  638.       Begin VB.Menu sep5 
  639.          Caption         =   "-"
  640.       End
  641.       Begin VB.Menu mnuOptions 
  642.          Caption         =   "&Options..."
  643.       End
  644.    End
  645.    Begin VB.Menu mnuHelp 
  646.       Caption         =   "&Help"
  647.       Begin VB.Menu mnuHelpAbout 
  648.          Caption         =   "&About "
  649.       End
  650.    End
  651. End
  652. Attribute VB_Name = "frmMain"
  653. Attribute VB_GlobalNameSpace = False
  654. Attribute VB_Creatable = False
  655. Attribute VB_PredeclaredId = True
  656. Attribute VB_Exposed = False
  657. Const NAME_COLUMN = 0
  658. Const TYPE_COLUMN = 1
  659. Const SIZE_COLUMN = 2
  660. Const DATE_COLUMN = 3
  661. Private Declare Function LockWindowUpdate Lib "user32" (ByVal hwndLock As Long) As Long
  662.   
  663. Dim mbMoving As Boolean
  664. Const sglSplitLimit = 500
  665. Private m_LastNode As Node
  666. Private WithEvents m_FtpConnection As CFtpConnection
  667. Attribute m_FtpConnection.VB_VarHelpID = -1
  668. Private m_strFile       As String
  669. Private m_lFileSize     As Long
  670. Private Sub Check1_Click()
  671.     If Check1.Value Then
  672.         m_FtpConnection.PassiveMode = True
  673.     Else
  674.         m_FtpConnection.PassiveMode = False
  675.     End If
  676. End Sub
  677. Private Sub CoolBar1_HeightChanged(ByVal NewHeight As Single)
  678.     SizeControls picSplitter.Left
  679. End Sub
  680. Private Sub Form_Load()
  681.     Me.Left = GetSetting(App.Title, "Settings", "MainLeft", 1000)
  682.     Me.Top = GetSetting(App.Title, "Settings", "MainTop", 1000)
  683.     Me.Width = GetSetting(App.Title, "Settings", "MainWidth", 6500)
  684.     Me.Height = GetSetting(App.Title, "Settings", "MainHeight", 6500)
  685.     
  686.     Set m_FtpConnection = New CFtpConnection
  687.     m_FtpConnection.Timeout = 180
  688.     
  689. End Sub
  690. Private Sub Form_Unload(Cancel As Integer)
  691.     Dim i As Integer
  692.     Set m_FtpConnection = Nothing
  693.     
  694.     'close all sub forms
  695.     For i = Forms.Count - 1 To 1 Step -1
  696.         Unload Forms(i)
  697.     Next
  698.     If Me.WindowState <> vbMinimized Then
  699.         SaveSetting App.Title, "Settings", "MainLeft", Me.Left
  700.         SaveSetting App.Title, "Settings", "MainTop", Me.Top
  701.         SaveSetting App.Title, "Settings", "MainWidth", Me.Width
  702.         SaveSetting App.Title, "Settings", "MainHeight", Me.Height
  703.     End If
  704.     SaveSetting App.Title, "Settings", "ViewMode", lvListView.View
  705. End Sub
  706. Private Sub Form_Resize()
  707.     On Error Resume Next
  708.     If Me.Width < 3000 Then Me.Width = 3000
  709.     SizeControls imgSplitter.Left
  710. End Sub
  711. Private Sub imgSplitter_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  712.     With imgSplitter
  713.         picSplitter.Move .Left, .Top, .Width  2, .Height - 20
  714.     End With
  715.     picSplitter.Visible = True
  716.     mbMoving = True
  717.     LockWindowUpdate Me.hwnd
  718. End Sub
  719. Private Sub imgSplitter_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
  720.     Dim sglPos As Single
  721.     
  722.     If mbMoving Then
  723.         sglPos = x + imgSplitter.Left
  724.         If sglPos < sglSplitLimit Then
  725.             picSplitter.Left = sglSplitLimit
  726.         ElseIf sglPos > Me.Width - sglSplitLimit Then
  727.             picSplitter.Left = Me.Width - sglSplitLimit
  728.         Else
  729.             picSplitter.Left = sglPos
  730.         End If
  731.     End If
  732. End Sub
  733. Private Sub imgSplitter_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
  734.     SizeControls picSplitter.Left
  735.     picSplitter.Visible = False
  736.     mbMoving = False
  737. End Sub
  738. Sub SizeControls(x As Single)
  739.     
  740.     On Error Resume Next
  741.     'set the width
  742.     If x < 1500 Then x = 1500
  743.     If x > (Me.Width - 1500) Then x = Me.Width - 1500
  744.     tvTreeView.Width = x
  745.     imgSplitter.Left = x
  746.     lvListView.Left = x + 40
  747.     picTitle.Left = x + 40
  748.     lvListView.Width = Me.Width - (tvTreeView.Width + 140)
  749.     picTitle.Width = lvListView.Width - 20
  750.     imgIcon.Left = picTitle.Width - imgIcon.Width - 40
  751.     ProgressBar1.Width = picTitle.Width - ProgressBar1.Left - imgIcon.Width - 120
  752.     Picture1.Left = ProgressBar1.Left + (ProgressBar1.Width - Picture1.Width)
  753.     'set the top
  754.   
  755.     If CoolBar1.Visible Then
  756.         tvTreeView.Top = CoolBar1.Height + 40
  757.     Else
  758.         tvTreeView.Top = 0
  759.     End If
  760.     
  761.     picTitle.Top = tvTreeView.Top
  762.     lvListView.Top = picTitle.Top + picTitle.Height
  763.     
  764.     'set the height
  765.     If sbStatusBar.Visible Then
  766.         tvTreeView.Height = Me.ScaleHeight - (IIf(CoolBar1.Visible, CoolBar1.Height, 0) + sbStatusBar.Height) - 40
  767.     Else
  768.         tvTreeView.Height = Me.ScaleHeight - IIf(CoolBar1.Visible, CoolBar1.Height, 0) - 40
  769.     End If
  770.     lvListView.Height = tvTreeView.Height - picTitle.Height
  771.     imgSplitter.Top = tvTreeView.Top
  772.     imgSplitter.Height = tvTreeView.Height
  773.     
  774.     LockWindowUpdate 0
  775.     
  776. End Sub
  777. Private Sub m_FtpConnection_DownloadProgress(lBytes As Long)
  778.     On Error Resume Next
  779.     sbStatusBar.Panels(1).Text = "Downloading " & m_strFile & " (" & lBytes & " bytes)"
  780.     ProgressBar1.Value = lBytes / (m_lFileSize / 100)
  781. End Sub
  782. Private Sub m_FtpConnection_StateChanged(State As FTP_CONNECTION_STATES)
  783.     
  784.     Dim strStatus As String
  785.     
  786.     Select Case State
  787.         Case FTP_CONNECTION_RESOLVING_HOST
  788.             strStatus = "Resolving host..."
  789.         Case FTP_CONNECTION_HOST_RESOLVED
  790.             strStatus = "Host resolved"
  791.         Case FTP_CONNECTION_CONNECTED
  792.             strStatus = "Connected"
  793.         Case FTP_CONNECTION_AUTHENTICATION
  794.             strStatus = "Authentication..."
  795.         Case FTP_USER_LOGGED
  796.             strStatus = "You are logged in. Connection ready."
  797.         Case FTP_ESTABLISHING_DATA_CONNECTION
  798.             strStatus = "Establishing data connection..."
  799.         Case FTP_DATA_CONNECTION_ESTABLISHED
  800.             strStatus = "Data connection established."
  801.         Case FTP_RETRIEVING_DIRECTORY_INFO
  802.             strStatus = "Retrieving directory info..."
  803.         Case FTP_DIRECTORY_INFO_COMPLETED
  804.             strStatus = "Directory listing completed."
  805.         Case State = FTP_TRANSFER_STARTING
  806.             strStatus = "Transfer in progress..."
  807.         Case FTP_TRANSFER_COMLETED
  808.             strStatus = "Transfer completed."
  809.             ProgressBar1.Value = 0.01
  810.             m_lFileSize = 0
  811.     End Select
  812.     
  813.     sbStatusBar.Panels(1).Text = strStatus
  814.     
  815. End Sub
  816. Private Sub m_FtpConnection_UploadProgress(lBytes As Long)
  817.     On Error Resume Next
  818.     sbStatusBar.Panels(1).Text = "Uploading " & m_strFile & " (" & lBytes & " bytes)"
  819.     ProgressBar1.Value = lBytes / (m_lFileSize / 100)
  820. End Sub
  821. Private Sub mnuConnect_Click()
  822.     Call EstablishConnection
  823. End Sub
  824. Private Sub mnuCreateDir_Click()
  825.     Dim strDirName As String
  826.     
  827.     strDirName = InputBox("Enter directory name, please.", "Create new directory")
  828.     If Len(strDirName) > 0 Then
  829.         If m_FtpConnection.CreateDirectory(strDirName) Then
  830.             ListFiles tvTreeView.SelectedItem
  831.         Else
  832.             MsgBox "Can't create new directory." & vbCrLf & vbCrLf & _
  833.                     "Server response: " & _
  834.                     m_FtpConnection.GetLastServerResponse, , _
  835.                     "Can't create directory"
  836.         End If
  837.     End If
  838.     
  839. End Sub
  840. Private Sub mnuDelete_Click()
  841.     '
  842.     Dim intRetVal   As Integer
  843.     Dim strFileName As String
  844.     '
  845.     On Error GoTo ERROR_HANDLER
  846.     '
  847.     strFileName = tvTreeView.SelectedItem.Key & lvListView.SelectedItem.Text
  848.     '
  849.     intRetVal = MsgBox("Do you really want to delete file " & strFileName & "?", vbYesNoCancel, "Delete file")
  850.     '
  851.     If intRetVal = vbYes Then
  852.         If m_FtpConnection.DeleteFile(strFileName) Then
  853.             ListFiles tvTreeView.SelectedItem
  854.         Else
  855.             MsgBox "Can't delete file." & vbCrLf & vbCrLf & _
  856.                     "Server response: " & _
  857.                     m_FtpConnection.GetLastServerResponse, , _
  858.                     "Can't delete file"
  859.         End If
  860.     End If
  861.     '
  862.     Exit Sub
  863.     '
  864. ERROR_HANDLER:
  865.     If Err = 91 Then
  866.         MsgBox "Select file to rename, please.", vbInformation, "Rename File"
  867.     Else
  868.         MsgBox "Error occured!" & vbCrLf & "#" & Err.Number & ": " & Err.Description, _
  869.                 vbInformation, "Rename File"
  870.     End If
  871.     
  872. End Sub
  873. Private Sub mnuDownload_Click()
  874.     Call DownloadFile
  875. End Sub
  876. Private Sub mnuEdit_Click()
  877.     With m_FtpConnection
  878.         mnuRename.Enabled = Not .Busy
  879.         mnuRemoveDir.Enabled = Not .Busy
  880.         mnuCreateDir.Enabled = Not .Busy
  881.         mnuDelete.Enabled = Not .Busy
  882.     End With
  883.     
  884. End Sub
  885. Private Sub mnuFile_Click()
  886.     With m_FtpConnection
  887.         mnuDownload.Enabled = Not .Busy
  888.         mnuUpload.Enabled = Not .Busy
  889.     End With
  890.     
  891. End Sub
  892. Private Sub mnuHelp_Click()
  893.     mnuHelpAbout.Enabled = Not m_FtpConnection.Busy
  894. End Sub
  895. Private Sub mnuListViewMode_Click(Index As Integer)
  896.         
  897.     Select Case Index
  898.         Case 0
  899.             lvListView.View = lvwIcon
  900.         Case 1
  901.             lvListView.View = lvwSmallIcon
  902.         Case 2
  903.             lvListView.View = lvwList
  904.         Case 3
  905.             lvListView.View = lvwReport
  906.     End Select
  907.     
  908.     tbToolBar.Buttons(15 + Index).Value = tbrPressed
  909.     
  910. End Sub
  911. Private Sub mnuRemoveDir_Click()
  912.     Dim intAnswer As Integer
  913.     Dim CurNode As Node
  914.     Dim i As Integer
  915.     Dim intChildren As Integer
  916.     
  917.     On Error GoTo ERROR_HANDLER
  918.     
  919.     If Not tvTreeView.SelectedItem.Key = tvTreeView.SelectedItem.Root.Key Then
  920.         intAnswer = MsgBox("Do you really want to remove directory: " & tvTreeView.SelectedItem.Text, vbQuestion + vbYesNo, "Remove Directory")
  921.         If intAnswer = vbYes Then
  922.             If m_FtpConnection.RemoveDirectory(tvTreeView.SelectedItem.Key) Then
  923.                 Set CurNode = tvTreeView.SelectedItem.Parent
  924.                 Set tvTreeView.SelectedItem = CurNode
  925.                 '
  926.                 'remove all children nodes of new selected node
  927.                 intChildren = CurNode.Children
  928.                 For i = 1 To intChildren
  929.                     tvTreeView.Nodes.Remove CurNode.Child.Index
  930.                 Next i
  931.                 '
  932.                 ListFiles tvTreeView.SelectedItem
  933.             Else
  934.                 MsgBox "Can't remove directory." & vbCrLf & vbCrLf & _
  935.                         "Server response: " & _
  936.                         m_FtpConnection.GetLastServerResponse, , _
  937.                         "Can't remove directory"
  938.             End If
  939.         End If
  940.     End If
  941.     
  942.     Exit Sub
  943.     
  944. ERROR_HANDLER:
  945.     If Err = 91 Then
  946.         MsgBox "Select file to rename, please.", vbInformation, "Rename File"
  947.     Else
  948.         MsgBox "Error occured!" & vbCrLf & "#" & Err.Number & ": " & Err.Description, _
  949.                 vbInformation, "Rename File"
  950.     End If
  951.     
  952.     
  953. End Sub
  954. Private Sub mnuRename_Click()
  955.     Dim strFileName     As String
  956.     Dim strNewFileName  As String
  957.     Dim intAnswer       As Integer
  958.     '
  959.     On Error GoTo ERROR_HANDLER
  960.     '
  961.     strFileName = lvListView.SelectedItem.Text
  962.     '
  963.     strNewFileName = InputBox("Enter new file name for " & strFileName, "Rename File")
  964.     '
  965.     If Len(strNewFileName) > 0 Then
  966.         '
  967.         intAnswer = MsgBox("Do you really want to rename file " & strFileName & " to " & strNewFileName & "?", _
  968.                 vbYesNo + vbQuestion, "Rename File")
  969.         '
  970.         If intAnswer = vbYes Then
  971.             If m_FtpConnection.RenameFile(strFileName, strNewFileName) Then
  972.                 ListFiles tvTreeView.SelectedItem
  973.             Else
  974.                 MsgBox "Can't rename file." & vbCrLf & vbCrLf & _
  975.                         "Server response: " & _
  976.                         m_FtpConnection.GetLastServerResponse, , _
  977.                         "Can't rename file"
  978.             End If
  979.         End If
  980.         '
  981.     End If
  982.     '
  983.     Exit Sub
  984.     '
  985. ERROR_HANDLER:
  986.     If Err = 91 Then
  987.         MsgBox "Select file to rename, please.", vbInformation, "Rename File"
  988.     Else
  989.         MsgBox "Error occured!" & vbCrLf & "#" & Err.Number & ": " & Err.Description, _
  990.                 vbInformation, "Rename File"
  991.     End If
  992.     
  993. End Sub
  994. Private Sub mnuUpload_Click()
  995.     
  996.     Dim sFile       As String
  997.     Dim bFileExists As Boolean
  998.     Dim strFileName As String
  999.     Dim lvItem      As ListItem
  1000.     Dim intRetVal   As Integer
  1001.     Dim lStartPoint As Long
  1002.     
  1003.     On Error Resume Next
  1004.         
  1005.     With dlgCommonDialog
  1006.         .DialogTitle = "Select file to upload"
  1007.         .CancelError = True
  1008.         .Filter = "All Files (*.*)|*.*"
  1009.         .ShowSave
  1010.         If Err = 0 Then
  1011.             If Len(.FileName) = 0 Then
  1012.                 Exit Sub
  1013.             End If
  1014.             
  1015.             strFileName = Mid$(.FileName, InStrRev(.FileName, "") + 1)
  1016.                     
  1017.             For Each lvItem In lvListView.ListItems
  1018.                 If lvItem.Text = strFileName Then
  1019.                     bFileExists = True
  1020.                     Exit For
  1021.                 End If
  1022.             Next
  1023.             
  1024.             m_lFileSize = FileLen(.FileName)
  1025.             
  1026.             If bFileExists Then
  1027.                 If m_lFileSize > CLng(lvItem.SubItems(1)) Then
  1028.                     retVal = MsgBox("File " & strFileName & " already exists!" & vbCrLf & _
  1029.                                   "Size of remote file - " & lvItem.SubItems(1) & " bytes" & vbCrLf & _
  1030.                                   "Size of local file  - " & m_lFileSize & " bytes" & vbCrLf & vbCrLf & _
  1031.                                   "Do you want to append lost data to existing file?" & vbclf & vbCrLf & _
  1032.                                   "Note: If you choose No new file will be created.", _
  1033.                                   vbYesNoCancel + vbQuestion, "File already exists")
  1034.                     If retVal = vbYes Then
  1035.                         lStartPoint = CLng(lvItem.SubItems(1))
  1036.                     ElseIf retVal = vbCancel Then
  1037.                         Exit Sub
  1038.                     End If
  1039.                 Else
  1040.                     retVal = MsgBox("File " & strFileName & " already exists!" & vbCrLf & _
  1041.                                   "Size of remote file - " & lvItem.SubItems(1) & " bytes" & vbCrLf & _
  1042.                                   "Size of local file  - " & m_lFileSize & " bytes" & vbCrLf & vbCrLf & _
  1043.                                   "Do you want to cancel upload?" & vbclf & vbCrLf & _
  1044.                                   "Note: If you choose No new file will be created.", _
  1045.                                   vbYesNo + vbQuestion, "File already exists")
  1046.                     If retVal = vbYes Then
  1047.                         Exit Sub
  1048.                     End If
  1049.                 End If
  1050.             End If
  1051.             
  1052.             m_strFile = strFileName
  1053.             If m_FtpConnection.UploadFile(.FileName, strFileName, lStartPoint) Then
  1054.                 ListFiles tvTreeView.SelectedItem
  1055.             Else
  1056.                 MsgBox "Can't upload file." & vbCrLf & vbCrLf & _
  1057.                         "Server response: " & m_FtpConnection.GetLastServerResponse, , "Can't upload file"
  1058.             End If
  1059.         End If
  1060.     End With
  1061. End Sub
  1062. Private Sub mnuView_Click()
  1063.     With m_FtpConnection
  1064.         mnuOptions.Enabled = Not .Busy
  1065.     End With
  1066.     
  1067. End Sub
  1068. Private Sub Option1_Click(Index As Integer)
  1069.     'm_FtpConnection.TransferMode = IIf(Index = 0, FTP_TYPE_ASCII, FTP_TYPE_IMAGE)
  1070. End Sub
  1071. Private Sub tbToolBar_ButtonClick(ByVal Button As MSComctlLib.Button)
  1072.     
  1073.     Dim strTemp As String
  1074.     
  1075.     On Error Resume Next
  1076.     Select Case Button.Key
  1077.         Case "Connect"
  1078.             Call EstablishConnection
  1079.         Case "UpLevel"
  1080.             Set tvTreeView.SelectedItem = tvTreeView.SelectedItem.Parent
  1081.             strTemp = tvTreeView.SelectedItem.FullPath
  1082.             strTemp = Mid$(strTemp, InStr(1, strTemp, "/"))
  1083.             If m_FtpConnection.SetCurrentDirectory(strTemp) Then
  1084.                 ListFiles tvTreeView.SelectedItem
  1085.             End If
  1086.         Case "Stop"
  1087.             If Not m_FtpConnection.CloseConnection Then
  1088.                 If m_FtpConnection.FtpGetLastError = ERROR_FTP_USER_TRANSFER_IN_PROGRESS Then
  1089.                     Dim intRetVal As Integer
  1090.                     intRetVal = MsgBox("Data transfer in progress. Do you want to cancel the data transfer?", vbYesNo + vbQuestion)
  1091.                     If intRetVal = vbYes Then
  1092.                         m_FtpConnection.CancelTransfer
  1093.                     End If
  1094.                 End If
  1095.             End If
  1096.         Case "Refresh"
  1097.             Call RefreshDirectory
  1098.         Case "Download"
  1099.             mnuDownload_Click
  1100.         Case "Upload"
  1101.             mnuUpload_Click
  1102.         Case "CreateDirectory"
  1103.             mnuCreateDir_Click
  1104.         Case "Delete"
  1105.             mnuDelete_Click
  1106.         Case "Rename"
  1107.             mnuRename_Click
  1108.         Case "View Large Icons"
  1109.             lvListView.View = lvwIcon
  1110.         Case "View Small Icons"
  1111.             lvListView.View = lvwSmallIcon
  1112.         Case "View List"
  1113.             lvListView.View = lvwList
  1114.         Case "View Details"
  1115.             lvListView.View = lvwReport
  1116.     End Select
  1117. End Sub
  1118. Private Sub mnuHelpAbout_Click()
  1119.     frmAbout.Show vbModal
  1120. End Sub
  1121. Private Sub mnuViewStatusBar_Click()
  1122.     mnuViewStatusBar.Checked = Not mnuViewStatusBar.Checked
  1123.     sbStatusBar.Visible = mnuViewStatusBar.Checked
  1124.     SizeControls imgSplitter.Left
  1125. End Sub
  1126. Private Sub mnuViewToolbar_Click()
  1127.     mnuViewToolbar.Checked = Not mnuViewToolbar.Checked
  1128.     CoolBar1.Visible = mnuViewToolbar.Checked
  1129.     SizeControls imgSplitter.Left
  1130. End Sub
  1131. Private Sub mnuFileClose_Click()
  1132.     'unload the form
  1133.     Unload Me
  1134. End Sub
  1135. Public Function GetImageNumber(strFileName As String) As Integer
  1136.     Dim iPos As Integer
  1137.     Dim strExt As String
  1138.     
  1139.     strExt = Mid$(strFileName, InStrRev(strFileName, ".") + 1)
  1140.     
  1141.     On Error Resume Next
  1142.     
  1143.     Select Case LCase(strExt)
  1144.         Case "txt", "htm", "html", "lst", "log", "ini", "inf", ""
  1145.             GetImageNumber = 1
  1146.         Case Else
  1147.             GetImageNumber = 2
  1148.     End Select
  1149.         
  1150. End Function
  1151. Public Function FormatFileSize(lFileSize As Long) As String
  1152.     
  1153.     On Error GoTo ERROR_HANDLER
  1154.     
  1155.     If lFileSize >= 1024 Then
  1156.         FormatFileSize = Format$(CStr(lFileSize / 1024), "### ### ### KB")
  1157.     Else
  1158.         FormatFileSize = CStr(lFileSize) & " " & "bytes"
  1159.     End If
  1160.     Exit Function
  1161.     
  1162. ERROR_HANDLER:
  1163.     Debug.Print Err.Number & " " & Err.Description
  1164.     
  1165. End Function
  1166. Private Sub tvTreeView_DragDrop(Source As Control, x As Single, y As Single)
  1167.     If Source = imgSplitter Then
  1168.         SizeControls x
  1169.     End If
  1170. End Sub
  1171. Private Sub tvTreeView_NodeClick(ByVal Node As MSComctlLib.Node)
  1172.     
  1173. With m_FtpConnection
  1174.     If .Busy Then
  1175.         Set tvTreeView.SelectedItem = m_LastNode
  1176.         Exit Sub
  1177.     End If
  1178.     
  1179.     Set m_LastNode = Node
  1180.     
  1181. TryAgain:
  1182.     If .SetCurrentDirectory(Replace$(Mid$(Node.FullPath, InStr(1, Node.FullPath, "/")), "//", "/")) Then
  1183.         ListFiles Node
  1184.     Else
  1185.         If .FtpGetLastError = ERROR_FTP_WINSOCK_BadState Then
  1186.             If .Connect Then
  1187.                 GoTo TryAgain
  1188.             End If
  1189.         Else
  1190.         
  1191.         End If
  1192.     End If
  1193.     
  1194. End With
  1195.     
  1196. End Sub
  1197. Private Sub AddFileToListView(oFtpFile As CFtpFile)
  1198.     
  1199.     Dim intIcon     As Integer
  1200.     Dim strFileName As String
  1201.     
  1202.     strFileName = oFtpFile.FileName
  1203.     
  1204.     intIcon = GetImageNumber(strFileName)
  1205.     Set lvItem = lvListView.ListItems.Add(, strFileName, strFileName, intIcon, intIcon)
  1206.     lvItem.SubItems(1) = oFtpFile.FileSize
  1207.     lvItem.SubItems(2) = oFtpFile.LastWriteTime
  1208.     
  1209. End Sub
  1210. Private Sub DownloadFile()
  1211.     
  1212.     On Error Resume Next
  1213.     
  1214.     Dim lStartPoint         As Long
  1215.     Dim bForceDownload      As Boolean
  1216.     Dim vTransferMode       As FtpTransferModes
  1217.     
  1218.     With dlgCommonDialog
  1219.         'show to the user the dialog to choose file name to save
  1220.         .DialogTitle = "Download file and save as..."
  1221.         .CancelError = True
  1222.         .Filter = "All Files (*.*)|*.*"
  1223.         .FileName = lvListView.SelectedItem.Text
  1224.         .ShowSave
  1225.         If Err = 0 Then
  1226.             If Len(.FileName) = 0 Then
  1227.                 'user has clicked Cancel button
  1228.                 Exit Sub
  1229.             End If
  1230.             'get remote file name
  1231.             m_strFile = lvListView.SelectedItem.Text
  1232.             'get size of remote file
  1233.             m_lFileSize = CLng(lvListView.SelectedItem.SubItems(1))
  1234.             '
  1235.             'get transfer mode
  1236.             If CBool(Option1(0).Value) Then
  1237.                 vTransferMode = FTP_ASCII_MODE
  1238.             Else
  1239.                 vTransferMode = FTP_IMAGE_MODE
  1240.             End If
  1241.                         
  1242.             If FileExists(.FileName) Then
  1243.                 '
  1244.                 Dim strQuestion As String
  1245.                 Dim intRetVal   As Integer
  1246.                 '
  1247.                 If FileLen(.FileName) < m_lFileSize Then
  1248.                     intRetVal = MsgBox("File " & .FileName & " already exists!" & vbCrLf & _
  1249.                                   "Size of remote file - " & m_lFileSize & " bytes" & vbCrLf & _
  1250.                                   "Size of local file  - " & FileLen(.FileName) & " bytes" & vbCrLf & vbCrLf & _
  1251.                                   "Do you want to append lost data to existing file?" & vbclf & vbCrLf & _
  1252.                                   "Note: If you choose No new file will be created.", _
  1253.                                   vbYesNoCancel + vbQuestion, "File already exists")
  1254.                     If intRetVal = vbYes Then
  1255.                         lStartPoint = FileLen(.FileName)
  1256.                     ElseIf intRetVal = vbCancel Then
  1257.                         Exit Sub
  1258.                     End If
  1259.                 Else    'FileLen(.FileName) < m_lFileSize
  1260.                     intRetVal = MsgBox("File " & .FileName & " already exists!" & vbCrLf & _
  1261.                                   "Size of remote file - " & m_lFileSize & " bytes" & vbCrLf & _
  1262.                                   "Size of local file  - " & FileLen(.FileName) & " bytes" & vbCrLf & vbCrLf & _
  1263.                                   "Do you want to cancel download?" & vbclf & vbCrLf & _
  1264.                                   "Note: If you choose No new file will be created.", _
  1265.                                   vbYesNo + vbQuestion, "File already exists")
  1266.                     If intRetVal = vbYes Then
  1267.                         Exit Sub
  1268.                     End If
  1269.                 End If  'FileLen(.FileName) < m_lFileSize
  1270.             End If  'FileExists(.FileName)
  1271.             'download file
  1272. TryAgain:
  1273.             If Not m_FtpConnection.DownloadFile(m_strFile, .FileName, _
  1274.                         vTransferMode, lStartPoint) Then
  1275.                 If m_FtpConnection.FtpGetLastError = ERROR_FTP_WINSOCK_BadState Then
  1276.                     'we have lost control connection
  1277.                     intRetVal = MsgBox("The connection is broken. Do you wish to establish the connect again?", vbQuestion + vbYesNo)
  1278.                     If intRetVal = vbYes Then
  1279.                         If m_FtpConnection.Connect Then
  1280.                             If m_FtpConnection.SetCurrentDirectory(tvTreeView.SelectedItem.FullPath) Then
  1281.                                 GoTo TryAgain
  1282.                             End If
  1283.                         Else
  1284.                             MsgBox "The connection cannot be established.", vbExclamation
  1285.                         End If
  1286.                     Else
  1287.                         Call ResetProgress
  1288.                     End If
  1289.                 ElseIf m_FtpConnection.FtpGetLastError = ERROR_FTP_USER_TIMEOUT Then
  1290.                     intRetVal = MsgBox("Server doesn't response. Do you like to try again?", vbYesNo + vbQuestion)
  1291.                     If intRetVal = vbYes Then
  1292.                         GoTo TryAgain
  1293.                     Else
  1294.                         Call ResetProgress
  1295.                     End If
  1296.                 Else
  1297.                     MsgBox "Error #" & m_FtpConnection.FtpGetLastError & vbCrLf & vbCrLf & _
  1298.                             m_FtpConnection.GetFtpErrorDescription, vbExclamation
  1299.                 End If
  1300.             End If
  1301.         End If
  1302.     End With
  1303. End Sub
  1304. Private Function FileExists(strFileName As String) As Boolean
  1305.     
  1306.     On Error GoTo ERROR_HANDLER
  1307.     
  1308.     FileExists = (GetAttr(strFileName) And vbDirectory) = 0
  1309. ERROR_HANDLER:
  1310.     
  1311. End Function
  1312. Private Sub RefreshDirectory()
  1313.     
  1314.     With tvTreeView.SelectedItem
  1315.         '
  1316.         'remove all subfolders from treeview
  1317.         '
  1318.         If .Children > 0 Then
  1319.             For i = 1 To .Children
  1320.                 tvTreeView.Nodes.Remove (.Child.Index)
  1321.             Next i
  1322.         End If
  1323.         '
  1324.         lvListView.ListItems.Clear
  1325.         '
  1326.         ListFiles tvTreeView.SelectedItem
  1327.         '
  1328.     End With
  1329.     
  1330. End Sub
  1331. Private Sub EstablishConnection()
  1332. Dim tvNode As Node
  1333. 'Dim CurNode As Node
  1334. 'create instance of frmConnect form
  1335. Dim f As New frmConnect
  1336. 'show the form
  1337. f.Show vbModal
  1338. 'if OK button was clicked
  1339. If f.Action = comdOK Then
  1340.     'clear the treeview and the listview
  1341.     tvTreeView.Nodes.Clear
  1342.     lvListView.ListItems.Clear
  1343.     '
  1344.     With m_FtpConnection
  1345.         'init object properties
  1346.         .FtpServer = f.URL
  1347.         .UserName = f.UserName
  1348.         .Password = f.Password
  1349.         .PassiveMode = CBool(Check1.Value)
  1350.         'call Connect method
  1351.         If .Connect Then
  1352.             Label1 = f.URL
  1353.             'add root node to the treeview
  1354.             Set tvNode = tvTreeView.Nodes.Add(, , , .CurrentDirectory, 1)
  1355.             tvNode.Key = .CurrentDirectory
  1356.             Set tvTreeView.SelectedItem = tvNode
  1357.             ListFiles tvNode, True
  1358.         End If '.Connect
  1359.     End With 'm_FtpConnection
  1360. End If 'f.Action = comdOK
  1361. End Sub
  1362. Private Sub ListFiles(Optional oNode As Node, Optional bRoot As Boolean = False)
  1363.     Dim CurNode As Node
  1364.     Dim tvNode As Node
  1365.     Dim strNewKey As String
  1366.     
  1367.     On Error Resume Next
  1368.     lvListView.ListItems.Clear
  1369.     With m_FtpConnection
  1370.         .PassiveMode = CBool(Check1.Value)
  1371.         'if connection established
  1372.         Dim oFiles As New CFtpFiles
  1373.         Dim oFile As CFtpFile
  1374.         'enumerate files in root dir
  1375.         If .EnumFiles(oFiles) Then
  1376.             Set oFiles = oFiles
  1377.             'if quantity is 1 or more
  1378.             If oFiles.Count > 0 Then
  1379.                 'walk thru all files in the collection
  1380.                 For Each oFile In oFiles
  1381.                     If oFile.IsDirectory Then
  1382.                         'if found item is directory
  1383.                         'add new child node
  1384.                         If oNode.Key = oNode.Root.Key Then
  1385.                             If Not oNode.Key = "/" Then
  1386.                                 strNewKey = oNode.Key & "/" & oFile.FileName & "/"
  1387.                             Else
  1388.                                 strNewKey = oNode.Key & oFile.FileName & "/"
  1389.                             End If
  1390.                         Else
  1391.                             strNewKey = oNode.Key & oFile.FileName & "/"
  1392.                         End If
  1393.     
  1394.                         Set tvNode = tvTreeView.Nodes.Add(oNode.Key, tvwChild, strNewKey, oFile.FileName, 2)
  1395.                         'tvNode.Key = Mid$(tvNode.FullPath, InStr(1, tvNode.FullPath, "/"))
  1396.                         tvNode.ExpandedImage = 3
  1397.                     Else
  1398.                         'if found item is file
  1399.                         'add new item to the listview
  1400.                         If tvTreeView.SelectedItem.Key = oNode.Key Then
  1401.                             AddFileToListView oFile
  1402.                         End If
  1403.                     End If 'oFile.IsDirectory
  1404.                 Next
  1405.             End If 'oFiles.Count > 0
  1406.         Else
  1407.             MsgBox "Error #" & m_FtpConnection.FtpGetLastError & vbCrLf & vbCrLf & _
  1408.             m_FtpConnection.GetFtpErrorDescription, vbExclamation
  1409.         End If
  1410.     End With 'm_FtpConnection
  1411.     
  1412.     oNode.Expanded = True
  1413. End Sub
  1414. Private Sub ResetProgress()
  1415.     ProgressBar1.Value = 0
  1416.     sbStatusBar.Panels(1).Text = ""
  1417.     
  1418. End Sub