In pure FTP protocol, you have no means to encrypt anything, so the credentials travel as a plain text and the files, list, etc travel unencrypted to/from the server.
If your sever supports FTPS, which is a plain normal FTP session over a SSL encrypted connection, you can do it using the same TIdFTP object you're using, but changing the default IO handler to a SSL capable one, for example, an instance of TIdSSLIOHandlerSocketOpenSSL, which does the encryption using the popular OpenSSL library.
In code it looks like:
var
ftp: TIdFTP;
ssl: TIdSSLIOHandlerSocketOpenSSL;
begin
ftp := TIdFTP.Create();
try
ssl := TIdSSLIOHandlerSocketOpenSSL.Create(ftp);
ftp.IOHandler := ssl;
ftp.Host := 'ftp.myserver.com';
ftp.Username := 'myuser';
ftp.Password := 'mypass';
ftp.Connect;
DoWhateverYouWantToDoWithThe(ftp);
AndUploadMoreFiles(ftp);
ftp.Disconnect;
finally
ftp.Free;
end;
end;