-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathUFormReloc.pas
118 lines (100 loc) · 2.69 KB
/
UFormReloc.pas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
unit UFormReloc;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
StdCtrls, ExtCtrls, XPMan;
type
TFormReloc = class(TForm)
btnOK: TButton;
btnCancel: TButton;
GroupBox1: TGroupBox;
chkAppData: TRadioButton;
chkDefault: TRadioButton;
chkCustom: TRadioButton;
btnPath: TButton;
edPath: TEdit;
GroupBox2: TGroupBox;
Label2: TLabel;
Label3: TLabel;
chkAllUsers: TCheckBox;
Bevel1: TBevel;
Label1: TLabel;
XPManifest1: TXPManifest;
procedure btnPathClick(Sender: TObject);
procedure chkDefaultClick(Sender: TObject);
procedure btnOKClick(Sender: TObject);
procedure btnCancelClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
FFolder: AnsiString;
procedure ReadParams;
procedure SaveParams;
public
{ Public declarations }
end;
var
FormReloc: TFormReloc;
implementation
uses
ATxSProc, ATxFProc, ATxRegistry, ATxUtils,
FileCtrl;
{$R *.DFM}
const
cRegKey = 'Software\UniversalViewer';
cRegValue = 'ConfigurationFolder';
cAppData = '%AppData%\ATViewer';
procedure TFormReloc.ReadParams;
begin
FFolder:=
GetRegKeyStr(HKEY_CURRENT_USER, cRegKey, cRegValue,
GetRegKeyStr(HKEY_LOCAL_MACHINE, cRegKey, cRegValue, ''));
end;
procedure TFormReloc.SaveParams;
begin
SetRegKeyStr(HKEY_CURRENT_USER, cRegKey, cRegValue, FFolder);
if chkAllUsers.Checked then
SetRegKeyStr(HKEY_LOCAL_MACHINE, cRegKey, cRegValue, FFolder);
end;
procedure TFormReloc.btnPathClick(Sender: TObject);
var
Path: AnsiString;
begin
Path:= '';
if SelectDirectory('', '', Path) then
edPath.Text:= Path;
end;
procedure TFormReloc.chkDefaultClick(Sender: TObject);
begin
edPath.Enabled:= chkCustom.Checked;
btnPath.Enabled:= chkCustom.Checked;
end;
procedure TFormReloc.btnOKClick(Sender: TObject);
begin
if chkDefault.Checked then FFolder:= '' else
if chkAppData.Checked then FFolder:= cAppData else
if chkCustom.Checked then
begin
FFolder:= edPath.Text;
if not IsDirExist(SExpandVars(FFolder)) then
begin Application.MessageBox('Selected folder does not exist', PChar(Caption), MB_OK or MB_ICONERROR); Exit end;
end;
SaveParams;
Close;
end;
procedure TFormReloc.btnCancelClick(Sender: TObject);
begin
Close;
end;
procedure TFormReloc.FormCreate(Sender: TObject);
begin
ReadParams;
chkDefault.Checked:= FFolder='';
chkAppData.Checked:= StrIComp(PChar(FFolder), cAppData)=0;
chkCustom.Checked:= (not chkDefault.Checked) and (not chkAppData.Checked);
if chkCustom.Checked then
edPath.Text:= FFolder;
chkDefaultClick(Self);
chkAppData.Enabled:= Pos('%', SExpandVars('%AppData%'))=0;
end;
end.