栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

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

一、如何选择文件夹?

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

二、使用步骤 1.浏览模式

代码如下(示例):

void __fastcall TForm1::Button1Click(TObject *Sender)
{

	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 uniSDirectories;
	if(SelectDirectory(L"", uniSDirectories, TSelectDirFileDlgOpts() << sdAllowMultiselect, L"请选择文件夹的位置", L"文件夹名字", L"选择文件夹"))
    {
		UnicodeString uniSDir = L"多选文件夹为:";
		for(int i=0; i
			uniSDir += L"rn" + uniSDirectories[i];
        }
		this->Memo1->Lines->Add(uniSDir);
	}
}

效果图:

三、完整代码

unit1.h:

//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:	// IDE-managed Components
	TPanel *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 
#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 uniSDirectories;
	if(SelectDirectory(L"", uniSDirectories, TSelectDirFileDlgOpts() << sdAllowMultiselect, L"请选择文件夹的位置", L"文件夹名字", L"选择文件夹"))
    {
		UnicodeString uniSDir = L"多选文件夹为:";
		for(int i=0; i
			uniSDir += L"rn" + uniSDirectories[i];
        }
		this->Memo1->Lines->Add(uniSDir);
	}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
	this->Edit1->Clear();//清除文本框
	this->Edit2->Clear();
	this->Memo1->Clear();
}
//---------------------------------------------------------------------------

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1001850.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号