X Tutup
Skip to content

Commit 3094d79

Browse files
committed
feat: use custom folder icons in tree on file dialogs, in non-Windows mode
Refs #2268
1 parent 06b44eb commit 3094d79

File tree

1 file changed

+22
-1
lines changed

1 file changed

+22
-1
lines changed

source/extfiledialog.pas

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ interface
66

77
uses
88
Classes, SysUtils, LCLType, Forms, Controls, Graphics, Dialogs,
9-
ExtCtrls, StdCtrls, ShellCtrls, ComCtrls, apphelpers, extra_controls;
9+
ExtCtrls, StdCtrls, ShellCtrls, ComCtrls, apphelpers, extra_controls, Math;
1010

1111
type
1212

@@ -49,6 +49,8 @@ TfrmExtFileDialog = class(TExtForm)
4949
procedure ShellTreeViewChange(Sender: TObject; Node: TTreeNode);
5050
procedure ShellTreeViewChanging(Sender: TObject; Node: TTreeNode;
5151
var AllowChange: Boolean);
52+
procedure ShellTreeViewGetImageIndex(Sender: TObject; Node: TTreeNode);
53+
procedure ShellTreeViewGetSelectedIndex(Sender: TObject; Node: TTreeNode);
5254
private
5355
FInitialDir: String;
5456
FFilterNames: TStringList;
@@ -101,6 +103,8 @@ implementation
101103

102104
{$R *.lfm}
103105

106+
uses main;
107+
104108

105109
function TfrmExtFileDialog.Execute: Boolean;
106110
begin
@@ -118,6 +122,11 @@ procedure TfrmExtFileDialog.FormCreate(Sender: TObject);
118122
begin
119123
if ClassType = TfrmExtFileDialog then
120124
raise Exception.CreateFmt('Constructor of base class %s called. Use one of its descendants instead.', [ClassName]);
125+
{$IfNDef WINDOWS}
126+
ShellTreeView.Images := MainForm.ImageListMain;
127+
ShellTreeView.OnGetImageIndex := @ShellTreeViewGetImageIndex;
128+
ShellTreeView.OnGetSelectedIndex := @ShellTreeViewGetSelectedIndex;
129+
{$ENDIF}
121130
FFilterNames := TStringList.Create;
122131
FFilterMasks := TStringList.Create;
123132
FFilterIndex := 0;
@@ -330,6 +339,18 @@ procedure TfrmExtFileDialog.ShellTreeViewChanging(Sender: TObject;
330339
AllowChange := not (ofNoChangeDir in FOptions);
331340
end;
332341

342+
procedure TfrmExtFileDialog.ShellTreeViewGetImageIndex(Sender: TObject;
343+
Node: TTreeNode);
344+
begin
345+
Node.ImageIndex := IfThen(Node.Level = 0, 1, 51);
346+
end;
347+
348+
procedure TfrmExtFileDialog.ShellTreeViewGetSelectedIndex(Sender: TObject;
349+
Node: TTreeNode);
350+
begin
351+
Node.ImageIndex := IfThen(Node.Level = 0, 1, 51);
352+
end;
353+
333354
procedure TfrmExtFileDialog.SetTitle(AValue: String);
334355
begin
335356
Caption := AValue;

0 commit comments

Comments
 (0)
X Tutup