Π’Π΅ΠΏΠ΅ΡΡ ΠΎ Π΄Π΅Π»Π΅: Π΅ΡΡΡ ΡΠΎΡΠΌΠ° Π΄Π»Ρ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ Π·Π°ΠΏΡΠΎΡΠ° ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ , ΠΎΠ½Π° ΠΏΠΎΠΊΠ°Π·Π°Π½Π½Π° Π½Π° ΡΠΈΡ. 7.7.
Π ΠΈΡ. 7.7. Π€ΠΎΡΠΌΠ° ΡΠΈΠ»ΡΡΡΠ° Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΡΠΎΠ²Π°ΡΠ°
Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠΎΡΠΌΡ Π½Π΅ ΡΡΡΡ Π²Π°ΠΆΠ½ΠΎ, Π° Π²Π°ΠΆΠ½ΠΎ ΡΠΎ, ΡΡΠΎ ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΠ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΠ°Π·ΠΌΠ΅Ρ ΡΠΎΡΠΌΡ, Π° ΡΠ°ΠΊΠΆΠ΅ Π΄Π°Π½Π½ΡΠ΅, Π²Π²Π΅Π΄Π΅Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ, Π±ΡΠ΄ΡΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½Ρ Π² ΡΠ΅Π΅ΡΡΡΠ΅ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ SaveFilter (Π»ΠΈΡΡΠΈΠ½Π³ 7.14).
...ΠΠΈΡΡΠΈΠ½Π³ 7.14.
Π‘ΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΠΎΡΠΌΡ Π² ΡΠ΅Π΅ΡΡΡΠ΅
procedure TForm1.OKClick(Sender: TObject);
begin
SaveFilter();
//ΠΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΡΡΠ΅Π±ΡΠ΅ΠΌΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡβ¦
end;
//ΠΡΠΎΡΠ΅Π΄ΡΡΠ° ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π² ΡΠ΅Π΅ΡΡΡ
procedure TForm1.SaveFilter();
var
reg: TRegistry; //ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: RootKey = HKEY_CURRENT_USER
strShops: String;
i: Integer;
begin
reg := TRegistry.Create();
try
//ΠΡΠΊΡΡΠ²Π°Π΅ΠΌ ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠ°Π·Π΄Π΅Π», Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π±ΡΠ΄ΡΡ
//ΡΠΎΡ ΡΠ°Π½Π΅Π½Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΎΡΠΌΡ
reg.OpenKey(strBaseKey + \'\Form1\', True);
//Π‘ΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²
//1. Π Π°Π·ΠΌΠ΅Ρ ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΡΠΌΡ
reg.WriteInteger(\'Width\', Width);
reg.WriteInteger(\'Height\', Height);
reg.WriteInteger(\'Top\', Top);
reg.WriteInteger(\'Left\', Left);
//2. ΠΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅
reg.WriteString(\'txtName.Text\', txtName.Text);
//3. ΠΡΠ±ΡΠ°Π½Π½ΡΠ΅ ΠΌΠ°Π³Π°Π·ΠΈΠ½Ρ
strShops := \'\
for i := 0 to lstShops.Countβ1 do
if lstShops.Selected[i] then
strShops := strShops + lstShops.Items[i] + \',\
reg.WriteString(\'lstShops.Selection\', strShops);
//4. ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ
reg.WriteBool(\'chkSort.Checked\', chkSort.Checked);
except
on ERegistryException do
MessageBox(Handle, \'ΠΡΠΈΠ±ΠΊΠ° ΠΏΡΠΈ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠΈ ΡΠΈΠ»ΡΡΡΠ°\',
\'ΠΠΎΠΈΡΠΊ ΡΠΎΠ²Π°ΡΠ°\', MB_ICONEXCLAMATION)
;
end;
reg.CloseKey();
reg.Free();
end;
Π ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° strBaseKey, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠ°Ρ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π·Π΄Π΅Π»Π° Π΄Π»Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ, Π·Π°Π΄Π°Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
...const
strBasekey = \'Software\Delphi. Π’ΡΡΠΊΠΈ ΠΈ ΡΡΡΠ΅ΠΊΡΡ\ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ\
ΠΡΠΊΡΡΠ² Π Π΅Π΄Π°ΠΊΡΠΎΡ ΡΠ΅Π΅ΡΡΡΠ°, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΠΈΡΡΡΡ Π² ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠΈ ΡΡΠ΅Π±ΡΠ΅ΠΌΡΡ Π½Π°ΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² (ΡΠΈΡ. 7.8).
Π ΠΈΡ. 7.8. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΎΡΠΌΡ, Π·Π°ΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π² ΡΠ΅Π΅ΡΡΡ
Π‘ΡΠΈΡΡΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΠΎΡΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ Π΅Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ. Π’ΠΎΠ³Π΄Π° Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ΅ ΡΠΎΠ±ΡΡΠΈΡ Create Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π²ΡΠ·ΠΎΠ² ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ LoadFilter (Π»ΠΈΡΡΠΈΠ½Π³ 7.15).
...ΠΠΈΡΡΠΈΠ½Π³ 7.15.
ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΠΎΡΠΌΡ ΠΈΠ· ΡΠ΅Π΅ΡΡΡΠ°
procedure TForm1.FormCreate(Sender: TObject);
begin
LoadFilter();
end;
//ΠΡΠΎΡΠ΅Π΄ΡΡΠ° Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΈΠ· ΡΠ΅Π΅ΡΡΡΠ°
procedure TForm1.LoadFilter();
var
reg: TRegistry; //ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: RootKey = HKEY_CURRENT_USER
strShops: String;
shopStart, shopEnd: Integer;
begin
reg := TRegistry.Create();
try
//ΠΡΠΊΡΡΠ²Π°Π΅ΠΌ ΡΠ°Π·Π΄Π΅Π», Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΎΡ ΡΠ°Π½Π΅Π½Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΎΡΠΌΡ
reg.OpenKey(strBaseKey + \'\Form1\', False);
//ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΡΠΎΡ ΡΠ°Π½Π΅Π½Π½ΡΡ ΡΠ°Π½Π΅Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²
//1. Π Π°Π·ΠΌΠ΅Ρ ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΡΠΌΡ
Width := reg.ReadInteger(\'Width\');
Height := reg.ReadInteger(\'Height\');
Top := reg.ReadInteger(\'Top\');
Left := reg.ReadInteger(\'Left\');
//2. ΠΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅
txtName.Text := reg.ReadString(\'txtName.Text\');
//3. ΠΡΠ±ΡΠ°Π½Π½ΡΠ΅ Π² ΠΏΡΠΎΡΠ»ΡΠΉ ΡΠ°Π· ΠΌΠ°Π³Π°Π·ΠΈΠ½Ρ
strShops := reg.ReadString(\'lstShops.Selection\');
shopStart := 1;
for shopEnd := 0 to Length(strShops) do
if strShops[shopEnd] = \',\' then
begin
//ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° ΠΈ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΅Π³ΠΎ Π² ΡΠΏΠΈΡΠΊΠ΅
SelectShop(Copy(strShops, shopStart,
shopEnd β shopStart));
shopStart := shopEnd + 1;
end;
//4. ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ
chkSort.Checked := reg.ReadBool(\'chkSort.Checked\');
except
on ERegistryException do
//ΠΠ³Π½ΠΎΡΠΈΡΡΠ΅ΠΌ ΠΎΡΠΈΠ±ΠΊΠΈ (ΠΏΡΠΎΡΡΠΎ Π½Π΅
//Π±ΡΠ΄ΡΡ Π·Π°ΡΠΈΡΠ°Π½Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΡΠ΅Π΅ΡΡΡΠ°,
//Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ)
;
end;
reg.CloseKey();
reg.Free();
end;
//ΠΡΠΎΡΠ΅Π΄ΡΡΠ° Π²ΡΠ΄Π΅Π»ΡΠ΅Ρ ΠΌΠ°Π³Π°Π·ΠΈΠ½ Ρ Π·Π°Π΄Π°Π½Π½ΡΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ
//(Π΅ΡΠ»ΠΈ ΠΎΠ½ Π΅ΡΡΡ Π² ΡΠΏΠΈΡΠΊΠ΅)
procedure TForm1.SelectShop(strShopName: String);
var
i: Integer;
begin
for i := 0 to lstShops.Countβ1 do
if lstShops.Items[i] = strShopName then
begin
lstShops.Selected[i] := True;
Exit;
end;
end;
ΠΠ΅ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠΏΠΈΡΠΊΠ° Π²ΡΠ±ΡΠ°Π½Π½ΡΡ ΠΌΠ°Π³Π°Π·ΠΈΠ½ΠΎΠ² ΠΎΠ±ΡΡΠ»ΠΎΠ²Π»Π΅Π½Π° ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ΠΌ Π΄ΠΎΠ±ΠΈΡΡΡΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠΏΠΈΡΠΊΠ° Π½Π΅ Π²ΡΠ΄Π΅Π»ΡΠ»ΠΈΡΡ ΡΠ°Π½Π΅Π΅ Π½Π΅ Π²ΡΠ±ΡΠ°Π½Π½ΡΠ΅ ΠΌΠ°Π³Π°Π·ΠΈΠ½Ρ (ΠΈΠ½Π°ΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΠΏΡΠΎΡΡΠΎ ΡΠΎΡ ΡΠ°Π½ΡΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΡ).
...ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅
Π§ΡΠΎΠ±Ρ ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ LoadFilter Π½Π΅ ΠΏΠΎΡΠ²Π»ΡΠ»ΠΈΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡΡ (ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Π² ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠ΅ Delphi), ΡΠ½ΠΈΠΌΠΈΡΠ΅ ΡΠ»Π°ΠΆΠΎΠΊ Stop on Delphi Exceptions Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Language Exceptions Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° Debugger Options (ΠΌΠ΅Π½Ρ Tools β Debugger Options).
ΠΠ²ΡΠΎΠ·Π°ΠΏΡΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ
Π’Π°ΠΊ ΡΠΆ ΠΏΠΎΠ²Π΅Π»ΠΎΡΡ, ΡΡΠΎ, ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ΅Π΅ΡΡΡΠΎΠΌ, ΡΠ΅Π΄ΠΊΠΎ ΡΠ΄Π°Π΅ΡΡΡ ΡΠ΄Π΅ΡΠΆΠ°ΡΡΡΡ ΠΎΡ ΡΠ°ΡΡΠΊΠ°Π·Π°, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π·Π°ΠΏΡΡΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΌΠΈΠ½ΡΡ ΠΏΡΠ΅ΡΠ»ΠΎΠ²ΡΡΠΎΠ΅ ΠΌΠ΅Π½Ρ ΠΠ²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠ°. ΠΠΎΡΠ½Π΅ΠΌΡΡ ΡΡΠΎΠΉ ΡΠ΅ΠΌΡ ΠΈ ΠΌΡ: ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ° Π½Π΅ ΡΠ΅ΡΠ²ΠΈΡΠ½ΡΡ (!) ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ.
ΠΡΠ°ΠΊ, Π² Π²Π΅ΡΠ²ΡΡ ΡΠ΅Π΅ΡΡΡΠ° HKEY_CURRENT_USER ΠΈ HKEY_LOCAL_MACHINE Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ ΡΠ°Π·Π΄Π΅Π»Ρ Software\Microsoft\Windows\CurrentVersion\RunΠΈ Software\ Microsof t\Windows\CurrentVersion\RunOnce. Π ΠΏΠ΅ΡΠ²ΠΎΠΌ (Run) ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ ΠΏΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌΡΡ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ Windows. Π ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΆΠ΅ RunOnce ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΡΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠΈΠΏΠ° ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΎΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΉ Ρ ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠ΅ Windows, Π½ΠΎ Π΄ΠΎ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΡΠΎΠ²ΠΎΠ΄Π½ΠΈΠΊ. ΠΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π² ΠΊΠ»ΡΡΠ΅ RunOnce, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ°Ρ Π·Π°ΠΏΠΈΡΡ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΡΠ°Π·Π΄Π΅Π»Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ΄Π°Π»ΡΠ΅ΡΡΡ.
ΠΡ Π²ΡΠ±ΠΎΡΠ° Π²Π΅ΡΠ²ΠΈ ΡΠ΅Π΅ΡΡΡΠ° (HKEY_LOCAL_MACHINE ΠΠΠ HKEY_CURRENT_USER) Π·Π°Π²ΠΈΡΠΈΡ, Π² ΡΠ΅Π°Π½ΡΠ΅ Π²ΡΠ΅Ρ Π»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π»ΠΈ ΠΎΠ½Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ, Π° Π΅ΡΠ»ΠΈ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ, ΡΠΎ ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠ°ΠΊΠΆΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠΌΠ΅ΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΈ ΡΠ΄Π°Π»ΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π² Π½ΡΠΆΠ½ΡΡ ΡΠ°Π·Π΄Π΅Π»Π°Ρ ΡΠ΅Π΅ΡΡΡΠ° Π΄Π»Ρ Π·Π°Π΄Π°Π½ΠΈΡ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΆΠΈΠΌΠ° Π·Π°ΠΏΡΡΠΊΠ°.
ΠΡΡΡΡ Π½Π° ΡΠΎΡΠΌΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Ρ ΡΡΠΈ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΠ΅Π»Ρ (ΡΠΈΡ. 7.9). ΠΡΠΎΡΠ΅Π΄ΡΡΠ°, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½Π°Ρ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 7.16, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΠ΅Π»Π΅ΠΉ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, Π² ΠΊΠ°ΠΊΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ Π²Π΅ΡΠ²ΠΈ HKEY_LOCAL_MACHINE ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡΠΈΠΌ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ (ΡΡΠΎ ΡΡΠ»ΠΎΠ²Π½ΠΎΡΡΡ, ΠΊΠΎΡΠΎΡΠ° Ρ Π½ΡΠΆΠ½Π° Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°).
Π ΠΈΡ. 7.9. Π€ΠΎΡΠΌΠ° ΠΏΠΎΡΠ»Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π²Π°ΡΠΈΠ°Π½ΡΠ° ΡΠ΅ΠΆΠΈΠΌΠ° Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
...ΠΠΈΡΡΠΈΠ½Π³ 7.16.
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΠΆΠΈΠΌΠ° Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
procedure TForm1.GetRunMode();
var
reg: TRegistry;
begin
reg := TRegistry.Create();
reg.RootKey := HKEY_LOCAL_MACHINE;
//ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° (ΠΏΠΎ Π½Π°Π»ΠΈΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ
//Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΡΠ°Π·Π΄Π΅Π»Π°Ρ )
if reg.OpenKey(\'Software\Microsoft\Windows\CurrentVersion\Run\',
False)
then
begin
if reg.ValueExists(Application.Title) then
begin
//ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΅ΡΡΡ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Run β
//Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ Windows
optAutoRun.Checked := True;
reg.CloseKey();
Exit;
end;
reg.CloseKey();
end;
if reg.OpenKey(\'Software\Microsoft\Windows\CurrentVersion\
RunOnce\', False)
then
begin
if reg.ValueExists(Application.Title) then
begin
//ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΅ΡΡΡ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ RunOnce β
//Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· ΠΏΡΠΈ ΡΡΠ°ΡΡΠ΅ Windows
optRunOnce.Checked := True;
reg.CloseKey();
Exit;
end;
reg.CloseKey();
end;
//ΠΠ²ΡΠΎΠ·Π°ΠΏΡΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ (ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ) Π½Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½
optRunNone.Checked := True;
reg.Free();
end;
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π·Π°ΠΏΡΡΠΊΠ° ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ (Π² ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ) ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΡΠΈΠΌΠ΅Π½ΠΈΡΡ (Π»ΠΈΡΡΠΈΠ½Π³ 7.17).
...ΠΠΈΡΡΠΈΠ½Π³ 7.17. ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ΅ΠΆΠΈΠΌΠ° Π·Π°ΠΏΡΡΠΊΠ°
procedure TForm1.cmbApplyClick(Sender: TObject);
var
reg: TRegistry;
begin
reg := TRegistry.Create();
reg.RootKey := HKEY_LOCAL_MACHINE;
//ΠΡΠΌΠ΅Π½Π° ΠΏΡΠΎΡΠ»ΠΎΠ³ΠΎ ΡΠ΅ΠΆΠΈΠΌΠ°
//..ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΈΠ· ΡΠ°Π·Π΄Π΅Π»Π° Run
if not optAutoRun.Checked then
if reg.OpenKey(\'Software\Microsoft\Windows\CurrentVersion\
Run\', False)
then
begin
reg.DeleteValue( Application.Title );
reg.CloseKey();
end;
//..ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΈΠ· ΡΠ°Π·Π΄Π΅Π»Π° RunOnce
if not optRunOnce.Checked then
if reg.OpenKey(\'Software\Microsoft\Windows\CurrentVersion\
RunOnce\',False)
then
begin
reg.DeleteValue( Application.Title );
reg.CloseKey();
end;
//Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅ΠΆΠΈΠΌΠ° (ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΠ²ΡΡΡΠ΅ΠΌ
//ΡΠ°Π·Π΄Π΅Π»Π΅)
if optAutoRun.Checked then
//..Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π² ΡΠ°Π·Π΄Π΅Π» Run
if reg.OpenKey(\'Software\Microsoft\Windows\CurrentVersion\
Run\', True)
then
begin
reg.WriteString( Application.Title, Application.ExeName);
reg.CloseKey();
end;
if optRunOnce.Checked then
//..Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π² ΡΠ°Π·Π΄Π΅Π» RunOnce
if reg.OpenKey(\'Software\Microsoft\Windows\CurrentVersion\
RunOnce\',True)
then
begin
reg.WriteString( Application.Title, Application.ExeName);
reg.CloseKey();
end;
//ΠΠ»Ρ Π²Π΅ΡΠ½ΠΎΡΡΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΠΌ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΈΡ Π½Π° ΡΠΎΡΠΌΠ΅ ΠΏΠΎ Π΄Π°Π½Π½ΡΠΌ ΠΈΠ· ΡΠ΅Π΅ΡΡΡΠ°
GetRunMode();
reg.Free();
end;
ΠΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π²Π΅ΡΠ²Ρ ΡΠ΅Π΅ΡΡΡΠ° Π½Π° HKEY_CURRENT_USER, Π΅ΡΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ Π΄Π΅Π»Π°ΡΡ) Π·Π°ΠΏΡΡΠΊΠ°Π»ΠΎΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ.
ΠΠ°ΠΏΡΡΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ
Π‘ΡΠ°Π·Ρ ΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌΡΡ, ΡΡΠΎ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡ ΠΎΠΊΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ· ΠΎΠΊΠ½Π° ΠΠ°ΠΏΡΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΎΡΠΊΡΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΡΡΠΊ β ΠΡΠΏΠΎΠ»Π½ΠΈΡΡ) ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ Π»ΡΠ±ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅: Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π²Π²Π΅ΡΡΠΈ Π΅Π³ΠΎ ΠΏΠΎΠ»Π½ΡΠΉ ΠΈΠ»ΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ (ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΠΏΠ°ΠΏΠΊΠΈ) ΠΏΡΡΡ. ΠΠ΄Π½Π°ΠΊΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ Π·Π°ΠΌΠ΅ΡΠ°Π»ΠΈ, ΡΡΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ, ΠΏΡΠΎΡΡΠΎ Π²Π²ΠΎΠ΄Ρ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΠΈΠΌΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ msaccess ΠΈΠ»ΠΈ winword. ΠΠ°ΠΉΠΌΠ΅ΠΌΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ°ΠΊΠΈΠΌ ΡΡΠΊΠΎΡΠ΅Π½Π½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ.
Π§ΡΠΎΠ±Ρ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ°, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π΅Π³ΠΎ ΠΏΡΡΡ Π² Π²Π΅ΡΠ²Ρ ΡΠ΅Π΅ΡΡΡΠ° SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths ΠΊΠΎΡΠ½Π΅Π²ΠΎΠ³ΠΎ ΡΠ°Π·Π΄Π΅Π»Π° HKEY_CURRENT_USER ΠΠΠ HKEY_LOCAL_MACHINE. ΠΡΡΡ ΠΠ₯Π-ΡΠ°ΠΉΠ»Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π·Π°ΠΏΠΈΡΠ°Π½ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ (ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ) ΠΏΠΎΠ΄ΡΠ°Π·Π΄Π΅Π»Π°, ΠΈΠΌΠ΅ΡΡΠ΅Π³ΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΆΠ΅ ΠΈΠΌΡ, ΠΊΠ°ΠΊ ΠΈ ΠΠ₯Π-ΡΠ°ΠΉΠ» ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (Π²ΠΊΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅).
ΠΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ, ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΡΡΠ΅ΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ°, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 7.18.
...ΠΠΈΡΡΠΈΠ½Π³ 7.18.
Π Π΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ
procedure RegisterQuickStart();
var
reg: TRegistry;