📄 main.pas
字号:
unit Main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, Registry, AddModU, ComCtrls, Menus;
type
TMainForm = class(TForm)
TopPanel: TPanel;
Label1: TLabel;
BottomPanel: TPanel;
WizList: TListView;
PopupMenu1: TPopupMenu;
Add1: TMenuItem;
Remove1: TMenuItem;
Modify1: TMenuItem;
AddBtn: TButton;
RemoveBtn: TButton;
ModifyBtn: TButton;
CloseBtn: TButton;
procedure RemoveBtnClick(Sender: TObject);
procedure CloseBtnClick(Sender: TObject);
procedure AddBtnClick(Sender: TObject);
procedure ModifyBtnClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
procedure DoAddMod(Action: TAddModAction);
procedure RefreshReg;
end;
var
MainForm: TMainForm;
implementation
uses InitWiz;
{$R *.DFM}
var
DelReg: TRegistry;
procedure TMainForm.RemoveBtnClick(Sender: TObject);
{ Handler for Remove button click. Removes selected item from registry. }
var
Item: TListItem;
begin
Item := WizList.Selected;
if Item <> nil then
begin
if MessageDlg(Format('Remove item "%s"', [Item.Caption]), mtConfirmation,
[mbYes, mbNo], 0) = mrYes then
DelReg.DeleteValue(Item.Caption);
RefreshReg;
end;
end;
procedure TMainForm.CloseBtnClick(Sender: TObject);
{ Handler for Close button click. Closes app. }
begin
Close;
end;
procedure TMainForm.DoAddMod(Action: TAddModAction);
{ Adds a new expert item to registry or modifies existing one. }
var
OrigName, ExpName, ExpPath: String;
Item: TListItem;
begin
if Action = amaModify then // if modify...
begin
Item := WizList.Selected;
if Item = nil then Exit; // make sure item is selected
ExpName := Item.Caption; // init variables
if Item.SubItems.Count > 0 then
ExpPath := Item.SubItems[0];
OrigName := ExpName; // save original name
end;
{ Invoke dialog which allows user to add or modify entry }
if AddModWiz(Action, ExpName, ExpPath) then
begin
{ if action is Modify, and the name was changed, handle it }
if (Action = amaModify) and (OrigName <> ExpName) then
DelReg.RenameValue(OrigName, ExpName);
DelReg.WriteString(ExpName, ExpPath); // write new value
end;
RefreshReg; // update listbox
end;
procedure TMainForm.AddBtnClick(Sender: TObject);
{ Handler for Add button click }
begin
DoAddMod(amaAdd);
end;
procedure TMainForm.ModifyBtnClick(Sender: TObject);
{ Handler for Modify button click }
begin
DoAddMod(amaModify);
end;
procedure TMainForm.RefreshReg;
{ Refreshes listbox with contents of registry }
var
i: integer;
TempList: TStringList;
Item: TListItem;
begin
WizList.Items.Clear;
TempList := TStringList.Create;
try
{ Get expert names from registry }
DelReg.GetValueNames(TempList);
{ Get path strings for each expert name }
for i := 0 to TempList.Count - 1 do
begin
Item := WizList.Items.Add;
Item.Caption := TempList[i];
Item.SubItems.Add(DelReg.ReadString(TempList[i]));
end;
finally
TempList.Free;
end;
end;
procedure TMainForm.FormCreate(Sender: TObject);
begin
RefreshReg;
end;
initialization
DelReg := TRegistry.Create; // create registry object
DelReg.RootKey := HKEY_CURRENT_USER; // set root key
DelReg.OpenKey(SDelphiKey, True); // open/create Delphi expert key
finalization
Delreg.Free; // free registry object
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -