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

📄 pbfolderdialogdemo_unit.pas

📁 图片闪烁问题解决 ,delphi 控件 图片闪烁问题解决
💻 PAS
字号:
unit PBFolderDialogDemo_Unit;

interface

uses
	Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
	StdCtrls, PBFolderDialog, CheckLst, ExtCtrls,
	PBShellFolders; // Only necessary if you directly calls functions
	// like BuildShellFolderPath.

type
	TPBFolderDialogDemoForm = class(TForm)
    Execute: TButton;
    Label1: TLabel;
    PBFolderDialog1: TPBFolderDialog;
    ExecutePIDL: TButton;
    FolderComboBox: TComboBox;
    GroupBox1: TGroupBox;
		Label9: TLabel;
    Label10: TLabel;
    RootComboBox: TComboBox;
    CheckListBox1: TCheckListBox;
    GroupBox2: TGroupBox;
    Label2: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Edit2: TEdit;
    Edit4: TEdit;
		Bevel1: TBevel;
		Edit1: TEdit;
		Label3: TLabel;
		BrowseForComboBox: TComboBox;
		Label4: TLabel;
		CheckListBox2: TCheckListBox;
		Label5: TLabel;
    PIDLLabel: TLabel;
    Bevel2: TBevel;
    VersionLabel: TLabel;
		procedure ExecuteClick(Sender: TObject);
		procedure SetProperties;
		procedure ShowFolder;
		procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure ExecutePIDLClick(Sender: TObject);
	private
    { Private declarations }
  public
    { Public declarations }
  end;

var
	PBFolderDialogDemoForm: TPBFolderDialogDemoForm;
	PIDL : PItemIDList = nil;

implementation

{$R *.DFM}

procedure TPBFolderDialogDemoForm.FormCreate(Sender: TObject);
var
	t : integer;
begin
	for t := CSIDL_TEMP to MAX_SHELLFOLDERNAMES
		do if ShellFolderNames[t] <> '%%'
		then FolderComboBox.Items.Add(ShellFolderNames[t]);
	// First get the properties from PBFolderDialog1 !
	FolderComboBox.Text := PBFolderDialog1.Folder;
	RootComboBox.Items.Assign(FolderComboBox.Items);
	RootComboBox.Text := PBFolderDialog1.RootFolder;
	BrowseForComboBox.ItemIndex := Ord(PBFolderDialog1.BrowseFor);
	Edit2.Text := PBFolderDialog1.DisplayName;
	Edit4.Text := '0';
	for t := 0 to CheckListBox1.Items.Count - 1 do
	begin
		CheckListBox1.Checked[t] := (TBrowseInfoFlags(t) in PBFolderDialog1.Flags);
	end;
	for t := 0 to CheckListBox2.Items.Count - 1 do
	begin
		CheckListBox2.Checked[t] := (TExtraFlags(t) in PBFolderDialog1.ExtraFlags);
	end;
  VersionLabel.Caption := '(Build with PBFolderDialog version: '
  	+ PBFolderDialog1.Version + ')';
end;

procedure TPBFolderDialogDemoForm.FormDestroy(Sender: TObject);
begin
	FreeItemIDList(PIDL);
end;

procedure TPBFolderDialogDemoForm.SetProperties;
var
	t : integer;
begin
// Copy from the form's controls to PBFolderDialog1's properties.
	PBFolderDialog1.Folder := FolderComboBox.Text;
	PBFolderDialog1.RootFolder := RootComboBox.Text;
	PBFolderDialog1.BrowseFor := TBrowseFor(BrowseForComboBox.ItemIndex);
	PBFolderDialog1.Flags := [];
	for t := 0 to CheckListBox1.Items.Count - 1
		do if CheckListBox1.Checked[t]
		then PBFolderDialog1.Flags := PBFolderDialog1.Flags
		+ [TBrowseInfoFlags(t)];
	PBFolderDialog1.ExtraFlags := [];
	for t := 0 to CheckListBox2.Items.Count - 1
		do if CheckListBox2.Checked[t]
		then PBFolderDialog1.ExtraFlags := PBFolderDialog1.ExtraFlags
		+ [TExtraFlags(t)];
end;

procedure TPBFolderDialogDemoForm.ShowFolder;
begin
// Display the result !
	FolderComboBox.Text := PBFolderDialog1.Folder;
	Edit2.Text := PBFolderDialog1.DisplayName;
	Edit4.Text := IntToStr(PBFolderDialog1.FolderAttributes);
	Edit1.Text := BuildShellFolderPath(PBFolderDialog1.Folder);
	if PIDL = nil then PIDLLabel.Caption := 'PIDL =  (nil)'
	else PIDLLabel.Caption := 'PIDL = (value)';
end;

procedure TPBFolderDialogDemoForm.ExecuteClick(Sender: TObject);
begin
	SetProperties;
	if PBFolderDialog1.Execute then ShowFolder;
end;

procedure TPBFolderDialogDemoForm.ExecutePIDLClick(Sender: TObject);
begin
	SetProperties;
	if PIDL = nil then PIDL := ExpandShellFolderPIDL(PBFolderDialog1.Folder, True);
	if PBFolderDialog1.Execute(PIDL, True) then ShowFolder;
	// Note: if user cancels, PIDL is not freed (still valid).
end;

end.

⌨️ 快捷键说明

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