⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.pas

📁 最好的局域网搜索软件
💻 PAS
📖 第 1 页 / 共 5 页
字号:
    LanTree.Selected.SelectedIndex := 16;
    GroupSearcher:=TSearchGroupThread.create(true);
    GroupSearcher.MyTree := LanTree;
    GroupSearcher.MyGroup := LanTree.Selected.Text;
    GroupSearcher.MyNode := LanTree.Selected;
    GroupSearcher.FreeOnTerminate := true;
    GroupSearcher.Resume;
  end;
  7,15,27:    //host
  begin
    LanTree.Selected.ImageIndex := 12;
    LanTree.Selected.SelectedIndex := 12;
    LanTree.selected.StateIndex := -1;
    LanTree.SetFocus;
    HostSearcher:=TSearchHostThread.create(true);
    HostSearcher.MyHost := LanTree.Selected.Text;
    HostSearcher.MyGroup := LanTree.Selected.Parent.Text;
    HostSearcher.MyTree:=LanTree;
    HostSearcher.MyNode:=LanTree.selected;
    HostSearcher.FreeOnTerminate := true;
    HostSearcher.Resume;
    //explordir.WaitFor;
  end;
  0,19,30: //closed folder
  begin
    LanTree.Selected.ImageIndex := 6;
    LanTree.Selected.SelectedIndex := 6;
    LanTree.selected.StateIndex := -1;
    CoolBar1.SetFocus;
    TabSheetX:=TTabSheet.Create(self);
    TabSheetX.PageControl := ClientPageCtrl;
    TemDirName:=pMyTreeItem(LanTree.Selected.data)^.dirname;
    if TemDirName[length(TemDirName)]='\'
    then delete(TemDirName,length(TemDirName),1);
    TabSheetX.Caption :=TemDirName;
    TabSheetX.Repaint;

    TemListView:=TListView.Create(tabsheetx);
    TemListView.Parent := tabsheetx;
    TemListView.Align := alclient;
    //TemListView.FlatScrollBars := true; //##
    //TemListView.BorderStyle := bsNone; //##
    TemListView.DragMode := dmAutomatic;
    TemListView.Visible := true;
    pMyTreeItem(LanTree.Selected.data)^.MyClientListView := TemListView;
    TemListView.OnDblClick := MyListViewClick;
    TemListView.OnMouseDown := BrowseListViewMouseDown;  //##$$##
    TemListView.PopupMenu := pmListItem;
    TemListView.ViewStyle := vssmallicon;
    TemListView.SmallImages := imagelist1;
    TemListView.MultiSelect := true;
    //-----------05.11.6----------
    col := TemListView.Columns.Add;
    col.Caption := '名称';
    col.Width := 400;
    col := TemListView.Columns.Add;  
    col.Caption := '大小';
    col.Width := 100;
    TemListView.ColumnClick := false;
    //----------------------------
    CurListView:=TemListView;
    ClientPageCtrl.ActivePage :=TabSheetX;
    DirSearcher:=TSearchDirThread.create(true);
    DirSearcher.ClickType:=InTreeView;
    DirSearcher.mydir := TemDirName;
    DirSearcher.mygroup:= pMyTreeItem(LanTree.Selected.data)^.group;
    DirSearcher.myList := TemListView;
    //DirSearcher.Rlist := ShareListview;
    DirSearcher.myTree := LanTree;
    DirSearcher.mynode := LanTree.Selected;
    
    //ListItem:=FolderListview.Items.Insert(0);
    ListItem:=ShareListview.Items.Insert(0);  //$$$
    DirSearcher.RListItem := ListItem;
    ListItem.Caption := extractfilename(DirSearcher.mydir);
    ListItem.SubItems.Add(TemDirName);
    ListItem.SubItems.Add(DirSearcher.mygroup);

    new(TabDataPtr);
    TabDataPtr.MyGroup := DirSearcher.mygroup;
    trim(TabDataPtr.MyGroup);  //delete last # if exists
    {if TabDataPtr.MyGroup[length(TabDataPtr.MyGroup)]=#0
    then delete(TabDataPtr.MyGroup,length(TabDataPtr.MyGroup),1);}
    TabDataPtr.MyDir := DirSearcher.MyDir;
    TabDataPtr.MyRListItem := DirSearcher.RListItem;
    TabSheetX.Tag := integer(TabDataPtr);

    AddCap(DirSearcher.mygroup,DirSearcher.MyDir);

    ListItem.ImageIndex := 6;
    new(ListItemPtr);
    ListItemPtr.index := TabSheetX.TabIndex;
    ListItemPtr.count := -1;
    ListItem.data:= ListItemPtr;

    //==================================================
    //if ShareListview.Items[CurDirIndex].Data = nil then ShowMessage('error...'+inttostr(CurDirIndex));
    if CurDirItem <> nil
      then PListItem(CurDirItem.Data)^.NextDirItem := ListItem;
    ListItemPtr^.PrevDirItem := CurDirItem;
    CurDirItem := ListItem;
    PListItem(CurDirItem.Data)^.NextDirItem := nil;

    ToolBtnBack.Enabled := true;

    // uplink
    if LanTree.Selected.Parent.ImageIndex = 10 then
    begin
      PListItem(CurDirItem.Data)^.UpDirItem :=
        pMyTreeItem(LanTree.Selected.Parent.Data)^.MyRightListItem;
    end;

    ChangeBtnStatus;
    //==================================================
    
    //RightPageCtrl.ActivePageIndex:=1;
    pMyTreeItem(LanTree.Selected.Data)^.MyRightListItem := ListItem;
    pMyTreeItem(LanTree.Selected.Data)^.TabIndex:=TabSheetX.TabIndex;
    DirSearcher.FreeOnTerminate := true;
    DirSearcher.Resume;
    
  end;
  10,6: // openfolder;
  begin

    if pMyTreeItem(LanTree.Selected.Data)^.TabIndex <> 0 then
    begin
      ClientPageCtrl.ActivePageIndex := pMyTreeItem(LanTree.Selected.Data)^.tabindex;
      //caption := inttostr(ClientPageCtrl.ActivePageIndex);
      //RightPageCtrl.ActivePageIndex:=1;
      CurListView:=pMyTreeItem(LanTree.Selected.data)^.MyClientListView;
      AddCap(pMyTreeItem(LanTree.Selected.Data)^.Group,pMyTreeItem(LanTree.Selected.Data)^.DirName);

      //==================================================
      ListItem := pMyTreeItem(LanTree.Selected.Data)^.MyRightListItem;

      if CurDirItem <> nil
        then PListItem(CurDirItem.Data)^.NextDirItem := ListItem;
      ListItemPtr := PListItem(ListItem.Data);
      ListItemPtr^.PrevDirItem := CurDirItem;
      CurDirItem := ListItem;
      //ShowMessage('sss');

      ToolBtnBack.Enabled := true;

      ChangeBtnStatus;
      //==================================================

    end
    else
    begin
      //#################$$$$$$$$$$$$$$$###############
      pMyTreeItem(LanTree.Selected.data)^.MyRightListItem.Selected := true;
      ShareListViewClick(Self);
    end;

  end;
  11,31:
  begin  //try to open a folder that can't open before or originally empty
  
    LanTree.Selected.ImageIndex := 6;
    LanTree.Selected.SelectedIndex := 6;
    LanTree.selected.StateIndex := -1;

    ClientPageCtrl.ActivePageIndex := pMyTreeItem(LanTree.Selected.data)^.TabIndex;
    CurListView := pMyTreeItem(LanTree.Selected.data)^.MyClientListView;

    AddCap(pMyTreeItem(LanTree.Selected.data)^.Group,pMyTreeItem(LanTree.Selected.data)^.DirName);
    DirSearcher := TSearchDirThread.create(true);
    TemDirName := pMyTreeItem(LanTree.Selected.data)^.dirname;
    if TemDirName[length(TemDirName)]='\'
      then delete(TemDirName,length(TemDirName),1);
    DirSearcher.mydir := TemDirName;
    DirSearcher.myList := pMyTreeItem(LanTree.Selected.data)^.MyClientListView;
    //DirSearcher.Rlist := ShareListview;
    DirSearcher.myTree := LanTree;
    ListItem := pMyTreeItem(LanTree.Selected.data)^.MyRightListItem;
    ListItem.Caption := ExtractFileName(DirSearcher.mydir);
    ListItem.ImageIndex := 6;
    DirSearcher.RListItem := ListItem;
    DirSearcher.mygroup := ListItem.SubItems.Text;
    DirSearcher.mynode := LanTree.Selected;
    DirSearcher.ClickType:= InTreeView;
    DirSearcher.FreeOnTerminate := true;
    DirSearcher.Resume;
    //RightPageCtrl.ActivePageIndex:=1;

    //==================================================
    if CurDirItem <> nil
      then PListItem(CurDirItem.Data)^.NextDirItem := ListItem;
    ListItemPtr := PListItem(ListItem.Data);
    ListItemPtr^.PrevDirItem := CurDirItem;
    CurDirItem := ListItem;
    //==================================================

  end;
  20,21,77:  // locked folder ,printer
  begin
    if LanTree.Selected.ImageIndex<>77 then
    begin
      LanTree.Selected.ImageIndex := 21;
      LanTree.Selected.SelectedIndex := 21;
    end
    else
    begin
      LanTree.Selected.ImageIndex := 77;
      LanTree.Selected.SelectedIndex := 77;
    end;
    Exe:=TExecuteThread.Create(true);
    Exe.exeFile := pMyTreeItem(LanTree.Selected.data)^.dirname;
    Exe.exeDir := extractfilepath(Exe.exeFile);
    //caption:=exe.exeFile;
    Exe.FreeOnTerminate := true;
    Exe.Resume;
  end;
  26,28: // win2000 or nt ,guest forbided ,need login
  begin
    if LanTree.Selected.ImageIndex = 26
    then
    begin
      LanTree.Selected.ImageIndex := 28;
      LanTree.Selected.SelectedIndex := 28;
    end
    else
    begin
      LanTree.Selected.ImageIndex := 26;
      LanTree.Selected.SelectedIndex := 26;
    end;

    Exe:=TExecuteThread.Create(true);
    Exe.exeFile := LanTree.Selected.Text;
    Exe.exeDir := extractfilepath(Exe.exeFile);
    //caption:=exe.exeFile;
    Exe.FreeOnTerminate := true;
    Exe.Resume;
  end;
  114, 117: //FTP host
  begin
    FtpSvrName := LanTree.Selected.Text;
    delete(FtpSvrName, 1, 6);
    ConfigForm.GiveFtpUserPassWord(FtpSvrName, FtpUsr, FtpPass);
    LanTree.Selected.ImageIndex := 116;
    LanTree.Selected.SelectedIndex := 116;
    FtpRecursive := ConfigForm.cbFtpRecursive.Checked;
    ftp := TFtpBrowseThread.Create(LanTree, LanTree.Selected, nil, nil,
    FtpSvrName, FtpUsr, FtpPass, FtpRecursive);
    ftp.Resume;
  end;
  {124: // opened FTP host
  begin
    PFtpNodeType(LanTree.Selected.data)^.MyRightListItem.Selected := true;
    ShareListViewClick(Self);
  end;}
  115: // closed FTP folder
  begin
    TemFtpNode := LanTree.Selected;
    {
    FtpDir := TemFtpNode.Text;
    while TemFtpNode.Parent.ImageIndex <> 124 do
    begin
      TemFtpNode := TemFtpNode.Parent;
      if TemFtpNode.Text <> '/' then
      FtpDir := TemFtpNode.Text + '/' + FtpDir;
    end;
    FtpDir := '/' + FtpDir;
    FtpSvrName := TemFtpNode.Parent.Text;
    delete(FtpSvrName, 1, 6);
    }
    FtpDir := PFtpNodeType(TemFtpNode.Data)^.MyDir;
    //if FtpDir[length(FtpDir)] <> '/' then FtpDir := FtpDir + '/';
    FtpSvrName := PFtpNodeType(TemFtpNode.Data)^.FtpSvr;
    FtpDisplayDir := PFtpNodeType(TemFtpNode.Data)^.DisplayDir;
    
    LanTree.Selected.ImageIndex := 125;
    LanTree.Selected.SelectedIndex := 125;
    FtpSub := TFtpSubDirThread.Create;
    FtpSub.MyTree := LanTree;
    FtpSub.ParentNode := LanTree.Selected;
    FtpSub.FtpHandle := PFtpNodeType(TemFtpNode.Data)^.FtpHandle;
    FtpSub.Dir := FtpDir;
    FtpSub.DisplayDir := FtpDisplayDir;
    FtpSub.FtpSvr := FtpSvrName;
    FtpSub.ClickType := InTreeView;

    //Caption := FtpSvrName + ',' + FtpDir + ',' + inttostr(integer(FtpSub.FtpHandle)); ///

    //***********************
    CoolBar1.SetFocus;
    TabSheetX :=TTabSheet.Create(self);
    TabSheetX.PageControl := ClientPageCtrl;
    ///TabSheetX.Caption := 'ftp://' + FtpSvrName + FtpSub.Dir;
    TabSheetX.Caption := 'ftp://' + FtpSvrName + FtpDisplayDir;
    TabSheetX.Repaint;

    PFtpNodeType(TemFtpNode.data)^.TabIndex := TabSheetX.TabIndex;

    TemListView:=TListView.Create(tabsheetx);
    TemListView.Parent := TabSheetX;
    TemListView.Align := alClient;
    TemListView.DragMode := dmAutomatic; ///
    TemListView.Visible := true;
    PFtpNodeType(LanTree.Selected.data)^.MyClientListView := TemListView;
    TemListView.OnDblClick := MyListViewClick;
    TemListView.OnMouseDown := BrowseListViewMouseDown;  //##$$##
    TemListView.PopupMenu := pmListItem;
    TemListView.ViewStyle := vsSmallIcon;
    TemListView.SmallImages := ImageList1;
    TemListView.MultiSelect := true;
    //-----------05.11.6----------
    col := TemListView.Columns.Add;
    col.Caption := '名称';
    col.Width := 400;
    col := TemListView.Columns.Add;
    col.Caption := '大小';
    col.Width := 100;
    TemListView.ColumnClick := false;
    //----------------------------
    CurListView:=TemListView;
    FtpSub.MyListView := TemListView;
    ClientPageCtrl.ActivePage :=TabSheetX;

    ListItem:=ShareListview.Items.Insert(0);  //$$$
    FtpSub.RListItem := ListItem;
    PFtpNodeType(LanTree.Selected.data)^.MyRightListItem := ListItem;
    ListItem.Caption := LanTree.Selected.Text; //ExtractFileName(FtpSub.Dir);
    ///ListItem.SubItems.Add('ftp://' + FtpSvrName + FtpSub.Dir);
    ListItem.SubItems.Add('ftp://' + FtpSvrName + FtpDisplayDir);
    ListItem.SubItems.Add('ftp');

    new(TabDataPtr);
    TabDataPtr.MyGroup := 'ftp';
    ///TabDataPtr.MyDir := 'ftp://' + FtpSvrName + FtpSub.Dir;
    TabDataPtr.MyDir := 'ftp://' + FtpSvrName + FtpDisplayDir;
    TabDataPtr.MyRListItem := ListItem;
    TabSheetX.Tag := integer(TabDataPtr);

    ///AddCap('ftp', 'ftp://' + FtpSvrName + FtpSub.Dir);
    AddCap('ftp', 'ftp://' + FtpSvrName + FtpDisplayDir);

    ListItem.ImageIndex := 125;
    new(ListItemPtr);
    ListItemPtr.index := TabSheetX.TabIndex;
    ListItemPtr.count := -1;
    ListItemPtr.FtpHandle := PFtpNodeType(LanTree.Selected.Data)^.FtpHandle;
    ListItemPtr.FtpDir := FtpSub.Dir;
    //ShowMessage(inttostr(integer(ListItemPtr.FtpHandle))); ////
    ListItem.data:= ListItemPtr;

    if CurDirItem <> nil
      then PListItem(CurDirItem.Data)^.NextDirItem := ListItem;
    ListItemPtr^.PrevDirItem := CurDirItem;
    CurDirItem := ListItem;
    PListItem(CurDirItem.Data)^.NextDirItem := nil;

    ToolBtnBack.Enabled := true;

    // uplink
    if LanTree.Selected.Parent.ImageIndex = 113 then
    begin
      PListItem(CurDirItem.Data)^.UpDirItem :=
        PFtpNodeType(LanTree.Selected.Parent.Data)^.MyRightListItem;
    end;

    ChangeBtnStatus;
    //***********************

    FtpSub.Resume;
    
  end;
  126: //try to open a FTP folder that can't open before or originally empty
  begin
    TemFtpNode := LanTree.Selected;
    {
    FtpDir := TemFtpNode.Text;
    while TemFtpNode.Parent.ImageIndex <> 124 do
    begin
      TemFtpNode := TemFtpNode.Parent;
      if TemFtpNode.Text <> '/' then
      FtpDir := TemFtpNode.Text + '/' + FtpDir;
    end;
    FtpDir := '/' + FtpDir;
    FtpSvrName := TemFtpNode.Parent.Text;
    delete(FtpSvrName, 1, 6);
    }
    FtpDir := PFtpNodeType(TemFtpNode.Data)^.MyDir;
    //if FtpDir[length(FtpDir)] <> '/' then FtpDir := FtpDir + '/';
    FtpSvrName := PFtpNodeType(TemFtpNode.Data)^.FtpSvr;
    FtpDisplayDir := PFtpNodeType(TemFtpNode.Data)^.DisplayDir;

    ClientPageCtrl.ActivePageIndex := PFtpNodeType(LanTree.Selected.data)^.TabIndex;
    CurListView := PFtpNodeType(LanTree.Selected.data)^.MyClientListView;
    ListItem := PFtpNodeType(LanTree.Selected.data)^.MyRightListItem;
    ListItem.ImageIndex := 125;
    AddCap('ftp', ListItem.SubItems[0]);

    LanTree.Selected.ImageIndex := 125;
    LanTree.Selected.SelectedIndex := 125;
    FtpSub := TFtpSubDirThread.Create;
    FtpSub.MyTree := LanTree;
    FtpSub.ParentNode := LanTree.Selected;
    FtpSub.FtpHandle := PFtpNodeType(LanTree.Selected.Data)^.FtpHandle;
    FtpSub.Dir := FtpDir;
    FtpSub.DisplayDir := FtpDisplayDir;
    FtpSub.FtpSvr := FtpSvrName;
    FtpSub.ClickType := InTreeView;
    FtpSub.MyListView := CurListView;
    FtpSub.RListItem := ListItem;
    FtpSub.Resume;

    //==================================================
    if CurDirItem <> nil
      then PListItem(CurDirItem.Data)^.NextDirItem := ListItem;
    ListItemPtr := PListItem(ListItem.Data);
    ListItemPtr^.PrevDirItem := CurDirItem;
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -