【C++ Builder 11】选择文件夹的三种方式
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 一、如何选择文件夹?
- 二、使用步骤
- 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】选择文件夹的三种方式相关推荐
- 用python打开文件夹的三种方式
用python打开文件夹的三种方式 一.利用explorer.exe import os# 利用explorer.exe执行 start_directory = r'C:\代码\软件包' os.sys ...
- sass文件编译的三种方式【舒】
[舒:]sass文件编译的三种方式 方式一: 1.webstorm打开evtGulp项目或者mcake-activity项目 2.中,开启gulp->default/develop,启动watc ...
- C++ 创建文件夹的四种方式
在开头不得不吐槽一下,我要的是简单明了的创建文件夹的方式,看得那些文章给的都是复杂吧唧的一大坨代码,不仔细看鬼知道写的是啥.因此,为了方便以后自己阅读,这里自己写一下 C++ 创建文件夹的四种方式: ...
- cmd批量创建文件夹的几种方式
cmd批量创建文件夹 //cmd批量创建文件夹的几种方式//1.空格隔开 md 1月 2月 3月 4月 5月 6月 pause//2.分号隔开 md 1月;2月;3月;4月;5月;6月 pause// ...
- WebUploader上传文件夹的三种解决方案
本人在2010年时使用swfupload为核心进行文件的批量上传的解决方案.见文章:WEB版一次选择多个文件进行批量上传(swfupload)的解决方案. 本人在2013年时使用plupload为核心 ...
- 计算机无法打开文档,鼠标双击无法打开文件夹的三种解决办法
电脑开机后,发现不能打不开桌面文件及文件夹,甚至连"我的电脑"都无法打开,遇到这样的问题,该如何解决?这样的问题,第一解决方法,就是重启电脑试试,如果还不行,就有可能是资源管理器未 ...
- 获取class文件对象的三种方式
package cn.learn_01;/** 反射:就是通过class文件对象,去使用该文件中的成员变量,构造方法,成员方法.* * Person p = new Person();* p.使用* ...
- java遍历文件_Java 遍历文件夹的几种方式
最近面试的时候被问及,使用非递归的方式遍历文件夹下的所有文件.由于之前没有写过,当时卡了一下,最后也没给出好的方案. 从计算机的角度看,文件夹的数据结构就是多叉树(Tree),而树的遍历方式有两种:深 ...
- java遍历文件夹的两种方式(递归和非递归)
非递归方式(有点类似二叉树的非递归遍历,采用链表来存储遍历到的文件夹,如果是文件就直接输出) public void traverseFile(String path){File[] fileArra ...
- itextpdf 5.5.6版本生成pdf文件 字体设置三种方式
1.第一种是引用window本地系统字体(这里以常见的宋体为例) BaseFont bf =BaseFont.createFont("C:/WINDOWS/Fonts/simsun.ttf& ...
最新文章
- Python学习笔记二:布尔表达式
- linux怎么切换不同版本的r,在linux中用同一个版本的R 同时安装 Seurat2 和 Seurat3
- 「区块链+人工智能」:来自谷歌、IBM、百度的真实案例
- 【翻译】ANDROID KTX – 使用Kotlin进行Android开发
- 容器编排技术 -- Kubernetes 为 Namespace 配置默认的内存请求与限额
- 骁龙845手机破罐子破摔!小米8最惨降价:直降1200
- 读《Computer Systems: A Programmer’s Perspective》
- JavaScript 框架库 - jQuery
- 基于Delphi7的木马程序的查杀设计与实现
- Listary与QTtabbar整合
- 微信wifi服务器地址,微信连WIFI服务器时钟不同步
- 《数字图像处理》第12讲——图像表示与描述
- canvas动态风车
- 搜狗输入html,搜狗输入法:回家的路
- pdf横向打印java_java通过html生成pdf,支持css和图片以及横向打印
- 【MySQL】MySQL的数据类型
- 公公的MC开服启程之路
- flowable 和activiti 数据库表结构对比说明
- 文正机械电子工程专业课_2020年苏州大学文正学院机械电子工程专业考纲
- ECM技术学习:卷积跨分量帧内预测模型(Convolutional cross-component intra prediction model)