提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 一、如何选择文件夹?
  • 二、使用步骤
    • 1.浏览模式
    • 2.选择模式
    • 3.多选模式
  • 三、完整代码

一、如何选择文件夹?

RAD C++ Builder 通过SelectDirectory函数实现。

二、使用步骤

1.浏览模式

代码如下(示例):

void __fastcall TForm1::Button1Click(TObject *Sender)
{/*
bool __fastcall SelectDirectory(System::UnicodeString &Directory,//返回用户选择的文件夹TSelectDirOpts Options,//选项int HelpCtx); //帮助索引
Options:
sdAllowCreate   显示文件夹名字的编辑框
sdPerformCreate 允许新建文件夹,需要与 sdAllowCreate 同时使用
sdPrompt    提示是否新键文件夹,需要与 sdAllowCreate 和 sdPerformCreate 同时使用
*/UnicodeString uniSDir;if (SelectDirectory(uniSDir, TSelectDirOpts() << sdAllowCreate << sdPerformCreate << sdPrompt, 0))//需要Vcl.FileCtrl.hpp文件定义支持{this->Edit1->Text = uniSDir;}
}

效果图:

2.选择模式

代码如下(示例):

void __fastcall TForm1::Button2Click(TObject *Sender)
{UnicodeString uniSDir;if(SelectDirectory(L"请选择文件夹的位置", L"", uniSDir, TSelectDirExtOpts() << TSelectDirExtOpt::sdNewUI << TSelectDirExtOpt::sdNewFolder << TSelectDirExtOpt::sdShowEdit, this)){this->Edit2->Text = uniSDir;}
}

效果图:

3.多选模式

代码如下(示例):

void __fastcall TForm1::Button3Click(TObject *Sender)
{DynamicArray<UnicodeString> uniSDirectories;if(SelectDirectory(L"", uniSDirectories, TSelectDirFileDlgOpts() << sdAllowMultiselect, L"请选择文件夹的位置", L"文件夹名字", L"选择文件夹")){UnicodeString uniSDir = L"多选文件夹为:";for(int i=0; i<uniSDirectories.Length; i++){uniSDir += L"\r\n" + uniSDirectories[i];}this->Memo1->Lines->Add(uniSDir);}
}

效果图:

三、完整代码

unit1.h:

//---------------------------------------------------------------------------#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <System.Classes.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <Vcl.Forms.hpp>
#include <Vcl.ComCtrls.hpp>
#include <Vcl.ExtCtrls.hpp>
#include <Vcl.ToolWin.hpp>
#include <Vcl.FileCtrl.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{__published:    // IDE-managed ComponentsTPanel *Panel2;TButton *Button1;TButton *Button2;TButton *Button3;TEdit *Edit1;TEdit *Edit2;TMemo *Memo1;TLabel *Label1;void __fastcall Button1Click(TObject *Sender);void __fastcall Button2Click(TObject *Sender);void __fastcall Button3Click(TObject *Sender);void __fastcall FormCreate(TObject *Sender);
private:    // User declarations
public:     // User declarations__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif

unit1.cpp:

//---------------------------------------------------------------------------#include <vcl.h>
#pragma hdrstop#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner)
{}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{UnicodeString uniSDir;if (SelectDirectory(uniSDir, TSelectDirOpts() << sdAllowCreate << sdPerformCreate << sdPrompt, 0))//需要Vcl.FileCtrl.hpp文件定义支持{this->Edit1->Text = uniSDir;}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{UnicodeString uniSDir;if(SelectDirectory(L"请选择文件夹的位置", L"", uniSDir, TSelectDirExtOpts() << TSelectDirExtOpt::sdNewUI << TSelectDirExtOpt::sdNewFolder << TSelectDirExtOpt::sdShowEdit, this)){this->Edit2->Text = uniSDir;}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{ DynamicArray<UnicodeString> uniSDirectories;if(SelectDirectory(L"", uniSDirectories, TSelectDirFileDlgOpts() << sdAllowMultiselect, L"请选择文件夹的位置", L"文件夹名字", L"选择文件夹")){UnicodeString uniSDir = L"多选文件夹为:";for(int i=0; i<uniSDirectories.Length; i++){uniSDir += L"\r\n" + uniSDirectories[i];}this->Memo1->Lines->Add(uniSDir);}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{this->Edit1->Clear();//清除文本框this->Edit2->Clear();this->Memo1->Clear();
}
//---------------------------------------------------------------------------

【C++ Builder 11】选择文件夹的三种方式相关推荐

  1. 用python打开文件夹的三种方式

    用python打开文件夹的三种方式 一.利用explorer.exe import os# 利用explorer.exe执行 start_directory = r'C:\代码\软件包' os.sys ...

  2. sass文件编译的三种方式【舒】

    [舒:]sass文件编译的三种方式 方式一: 1.webstorm打开evtGulp项目或者mcake-activity项目 2.中,开启gulp->default/develop,启动watc ...

  3. C++ 创建文件夹的四种方式

    在开头不得不吐槽一下,我要的是简单明了的创建文件夹的方式,看得那些文章给的都是复杂吧唧的一大坨代码,不仔细看鬼知道写的是啥.因此,为了方便以后自己阅读,这里自己写一下 C++ 创建文件夹的四种方式: ...

  4. cmd批量创建文件夹的几种方式

    cmd批量创建文件夹 //cmd批量创建文件夹的几种方式//1.空格隔开 md 1月 2月 3月 4月 5月 6月 pause//2.分号隔开 md 1月;2月;3月;4月;5月;6月 pause// ...

  5. WebUploader上传文件夹的三种解决方案

    本人在2010年时使用swfupload为核心进行文件的批量上传的解决方案.见文章:WEB版一次选择多个文件进行批量上传(swfupload)的解决方案. 本人在2013年时使用plupload为核心 ...

  6. 计算机无法打开文档,鼠标双击无法打开文件夹的三种解决办法

    电脑开机后,发现不能打不开桌面文件及文件夹,甚至连"我的电脑"都无法打开,遇到这样的问题,该如何解决?这样的问题,第一解决方法,就是重启电脑试试,如果还不行,就有可能是资源管理器未 ...

  7. 获取class文件对象的三种方式

    package cn.learn_01;/** 反射:就是通过class文件对象,去使用该文件中的成员变量,构造方法,成员方法.* * Person p = new Person();* p.使用* ...

  8. java遍历文件_Java 遍历文件夹的几种方式

    最近面试的时候被问及,使用非递归的方式遍历文件夹下的所有文件.由于之前没有写过,当时卡了一下,最后也没给出好的方案. 从计算机的角度看,文件夹的数据结构就是多叉树(Tree),而树的遍历方式有两种:深 ...

  9. java遍历文件夹的两种方式(递归和非递归)

    非递归方式(有点类似二叉树的非递归遍历,采用链表来存储遍历到的文件夹,如果是文件就直接输出) public void traverseFile(String path){File[] fileArra ...

  10. itextpdf 5.5.6版本生成pdf文件 字体设置三种方式

    1.第一种是引用window本地系统字体(这里以常见的宋体为例) BaseFont bf =BaseFont.createFont("C:/WINDOWS/Fonts/simsun.ttf& ...

最新文章

  1. Python学习笔记二:布尔表达式
  2. linux怎么切换不同版本的r,在linux中用同一个版本的R 同时安装 Seurat2 和 Seurat3
  3. 「区块链+人工智能」:来自谷歌、IBM、百度的真实案例
  4. 【翻译】ANDROID KTX – 使用Kotlin进行Android开发
  5. 容器编排技术 -- Kubernetes 为 Namespace 配置默认的内存请求与限额
  6. 骁龙845手机破罐子破摔!小米8最惨降价:直降1200
  7. 读《Computer Systems: A Programmer’s Perspective》
  8. JavaScript 框架库 - jQuery
  9. 基于Delphi7的木马程序的查杀设计与实现
  10. Listary与QTtabbar整合
  11. 微信wifi服务器地址,微信连WIFI服务器时钟不同步
  12. 《数字图像处理》第12讲——图像表示与描述
  13. canvas动态风车
  14. 搜狗输入html,搜狗输入法:回家的路
  15. pdf横向打印java_java通过html生成pdf,支持css和图片以及横向打印
  16. 【MySQL】MySQL的数据类型
  17. 公公的MC开服启程之路
  18. flowable 和activiti 数据库表结构对比说明
  19. 文正机械电子工程专业课_2020年苏州大学文正学院机械电子工程专业考纲
  20. ECM技术学习:卷积跨分量帧内预测模型(Convolutional cross-component intra prediction model)

热门文章

  1. FTP命令 上传下载文件
  2. tcl电视显示服务器异常1500,TCL电视机使用常见故障及维修方法
  3. oracle pdb启动日志,案例:Oracle 12C 数据库pdb丢失数据文件后的完整恢复过程
  4. jconsole远程连接的使用
  5. 三种最常用的日志分析软件
  6. Mac好用的硬盘数据恢复软件推荐
  7. Northwind 示例数据库
  8. C语言输出大写金额,人民币大写输出(C语言)
  9. 教你用illustrator画十二色环
  10. 第十四章:【UCHome二次开发】uchome通用方法