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

📄 fftp.pas

📁 Delphi编写的一个支持语法高亮显示和很多语言的文本编辑器
💻 PAS
📖 第 1 页 / 共 2 页
字号:
      else if ftpList.SelectedDirectories.Count > 1 then
         SetTextBuf(PChar(FTP.URL + ftpList.SelectedFiles[0]));
   finally
      Free;
   end;
end;

procedure TfrmFTP.LoadItems;
var
  SRec : TSearchRec;
  b: Boolean;
begin
  cmbAccounts.Clear;
  b:=(FindFirst(ExtractFilePath(Application.ExeName) + 'accounts\*.ftp',faAnyFile, SRec)=0);
  while b do begin
    cmbAccounts.Items.Add(SRec.Name);
    b:=(FindNext(sRec)=0);
  end;
end;

procedure TfrmFTP.PopupMenu1Popup(Sender: TObject);
begin
   CopyLocation1.Enabled := (ftpList.SelCount > 0);
end;

procedure TfrmFTP.btnAccountsClick(Sender: TObject);
var
  i: Integer;
begin
  frmAccount := TfrmAccount.Create(nil);
  ftp.TransferMode := TMFTPTransferType(0);
  frmAccount.ShowModal;
  i := cmbAccounts.ItemIndex;
  LoadItems;
  if frmQuickFTP <> nil then frmQuickFTP.LoadItems;
  cmbAccounts.ItemIndex := i;

end;

procedure TfrmFTP.btnConnectClick(Sender: TObject);
var
  ini: TIniFile;
begin
  ftp.Disconnect;
  ini := TInifile.Create(ExtractFilePath(Application.ExeName) + 'accounts\' + cmbAccounts.Text);
  ftp.Server := ini.Readstring('FTP', 'URL', '');
  ftp.username := ini.Readstring('FTP', 'Username', '');
  ftp.Password := ini.Readstring('FTP', 'Password', '');
  ftp.Port := ini.ReadInteger('FTP', 'Port', 0);
  ftp.ServerType := TMFTPServerType(ini.ReadInteger('FTP', 'ServerType', 0));
  ftp.TransferMode := TMFTPTransferType(ini.ReadInteger('FTP', 'TransferType', 0));
  ftp.InitialDirectory := Ini.ReadString('FTP', 'CurDir', '');
  if (ini.ReadBool('FTP', 'UseProxy', false)) then
    ftp.ProxyServer := ini.ReadString('FTP', 'ProxyServer', '');
  ftp.Login;
  ini.Destroy;
end;

procedure TfrmFTP.ftpListClick(Sender: TObject);
var
  i: Integer;
  strTemp: String;
begin
  strTemp := '';
  for i:=0 to FTPList.SelectedFiles.Count-1 do
    if strTemp = '' then
      strTemp := ftpList.SelectedFiles[i]
    else
      strTemp := strTemp + ',' + ftpList.SelectedFiles[i];
  edtFile.Text := strTemp;
end;

procedure TfrmFTP.btnOKClick(Sender: TObject);
var
  strTemp, strTemp2: TStringList;
  ini: TIniFile;
  i: Integer;
  bCOnnecting: Boolean;
  idx: integer;
begin
  ini := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'accounts\' + cmbAccounts.Text);
  bCOnnecting := false;
  if (ftp.Connected = false) then begin
      btnConnectClick(nil);
      curPos := 1;
      exit;
  end;
  if isFTP then begin
    ini := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'accounts\' + cmbAccounts.Text);

    ini.WriteString('FTP', 'CurDir', ftp.CurrentDirectory);
    // Were in the save state.
      ftp.PutFile(ExtractFilePath(Application.ExeName) + 'temp\fileTemp.tmp', edtFile.Text);
      dmMain.SelDoc.isFTP := true;
      dmMain.SelDoc.FTPName := cmbAccounts.Text;
      dmMain.SelDoc.FTPDir := ftp.CurrentDirectory;
      dmMain.SelDoc.Caption := cmbAccounts.Text + '\' + ExtractFilename(ExtractFilePath(Application.ExeName) + 'temp\' + edtFile.Text);
      dmMain.SelDoc.FileName := ExtractFilePath(Application.ExeName) + 'temp\' + edtFile.Text;
      dmMain.SelDoc.sciMain.Lines.SaveToFile(dmMain.SelDoc.Filename);
      dmMain.SelDoc.sciMain.Lines.LoadFromFile(dmMain.SelDoc.Filename);
      dmMain.SelDoc.DoUpdateCaption;
      dmMain.SelDoc.sciMain.Modified := false;
      dmMain.SelDoc.sciMain.Highlighter := dmMain.GetHighlighterForFile(dmMain.SelDoc.Filename);
      dmMain.SetSelLang(GetLangName(dmMain.SelDoc.sciMain.Highlighter));
      idx := frmMain.tcFiles.Tabs.IndexOfObject(dmMain.SelDoc);
      frmMain.tcFiles.Tabs[idx] := ExtractFileName(dmMain.SelDoc.Filename);
      State := 0;
      exit;
  end;


  if isFtp then exit;
  strTemp := TStringList.Create;
  if (ftp.Connected = false) or (ftpList.SelectedFiles.Count = 0) then begin
    if ftp.Connected = false then begin
      // First off unlink the 3 components from the ftp component
      btnConnectClick(nil);
      curPos := 1;
      exit;
    end;
    strTemp2 := TStringList.Create;
    strTemp2.CommaText := edtFile.Text;
    curPos := 1;
  end
  else
   curPos := 0;


  ini.WriteString('FTP', 'CurDir', ftp.CurrentDirectory);
  if curPos = 0 then
    for i:=0 to ftpList.SelectedFiles.Count-1 do
      strTemp.Add(ExtractFilePath(Application.ExeName) + 'temp\' + ftpList.SelectedFiles[i])
  else
    for i:=0 to strTemp2.Count - 1 do
      strTemp.Add(ExtractFilePath(Application.ExeName) + 'temp\' + strTemp2[i]);
  if curPos = 0 then
    ftp.GetFile(ftpList.SelectedFiles, strTemp)
  else
    ftp.GetFile(strTemp2, strTemp);
  curPos := 0;
  for i:=0 to strTemp.Count-1 do
    frmMain.NewFTP(strTemp[i], cmbAccounts.Text, ftp.CurrentDirectory);
  strTemp.Destroy;
end;

procedure TfrmFTP.btnMakeDirClick(Sender: TObject);
var S: String;
begin
   if InputQuery('New Directory', 'What name is the new directory?', S) then
      Ftp.CreateDirectory(S);
end;

procedure TfrmFTP.btnRenameClick(Sender: TObject);
var S: String;
begin
   if InputQuery('Rename File', 'What do you want to rename it to?', S) then
     if ftpList.Selected = nil then
       Ftp.RenameFile(ftpTree.Selected.Text, s)
     else
       ftp.RenameFile(ftpList.Selected.Caption,s);
end;

procedure TfrmFTP.btnDeleteClick(Sender: TObject);
begin
  if ftpList.Selected = nil then exit;
  ftp.DeleteFile(ftpList.SelectedFiles);
  ftp.DeleteDirectory(ftpList.SelectedDirectories);
end;

procedure TfrmFTP.btnChmodClick(Sender: TObject);
var
  frmRemote: TfrmRemotePermissions;
begin
  if ftpList.Selected = nil then exit;

  frmRemote := TfrmRemotePermissions.Create(self);
  frmRemote.ShowModal;
  if frmRemote.Execute = True then begin
    ftp.FileSetAttr(ftpList.Selected.Caption, frmRemote.chkORead.Checked, frmRemote.chkOWrite.Checked,frmRemote.chkOExecute.Checked, frmRemote.chkGRead.Checked, frmRemote.chkGWrite.Checked, frmRemote.chkGExecute.checked, frmRemote.chkTread.Checked, frmRemote.chkTWrite.checked, frmRemote.chkTExecute.Checked);
    ftp.Cache := false;
    ftp.Refresh;
    ftp.Cache := True;
  end;
end;

procedure TfrmFTP.btnRefreshClick(Sender: TObject);
begin
  ftp.Cache := false;
  ftp.Refresh;
  ftp.Cache := True;
end;

procedure TfrmFTP.btnCommandClick(Sender: TObject);
var
  s: String;
begin
  if InputQuery('Execute Command', 'Enter the command you would like to execute.', S) then begin
    ftp.IssueCommand(s);
    ftp.Cache := false;
    ftp.Refresh;
    ftp.Cache := True;
  end;
  btnRefreshClick(nil);
end;


procedure TfrmFTP.FormDestroy(Sender: TObject);
var
  ini: TIniFile;
begin
  ini := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'ini\FTP.ini');
  ini.WriteInteger('FTP', 'Account', cmbAccounts.ItemIndex);
  ini.Destroy;
  ftp.Disconnect;
end;

procedure TfrmFTP.ftpFtpError(Sender: TObject; error: FtpError;
  addinfo: String);
begin
  if error = ftpPermissionDenied then
    //DeleteFile(ftp.GetCurrentFile);
end;

procedure TfrmFTP.btnCancelClick(Sender: TObject);
begin
  if ftp.Connected then begin
    ftp.StopTransfer;
    ftp.Disconnect;
  end;
end;

procedure TfrmFTP.ftpFileReceived(Sender: TObject);
begin
    if chkClose.Checked = true then
      close;
end;

procedure TfrmFTP.ftpFileStored(Sender: TObject);
begin
  if chkClose.Checked = true then
    close;

end;

procedure TfrmFTP.FormShow(Sender: TObject);
begin
  LoadOpts(Self);
end;

procedure TfrmFTP.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  SaveOpts(Self);
end;

end.

⌨️ 快捷键说明

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