利用Delphi编写Windows控制面板组件及实例
Form2……,根据需要设计窗体界面。为简略起见,本文仅以Form1为例。
③Form1主要代码:(为编写基于Win32的CPL,本文以读写Windows注册表为例)
在uses子句添加:Registry.//引用注册表单元
在type部分声明变量:
var
Form1: TForm1;
KeyHandle : HKEY;
ValSize : longint;
Option1 : Integer;
Option2 : Integer;
TForm1.FormActivate代码://打开Windows注册表,读取某特定键值
procedure TForm1.FormActivate(Sender: TObject);
begin
RegOpenKeyEx(HKEY_CURRENT_CONFIG,
'Software\Microsoft\windows\CurrentVersion\',
0, KEY_ALL_ACCESS, KeyHandle);
ValSize := SizeOf(Option1);
RegQueryValueEx(KeyHandle,'WinA', nil, nil, @Option1,
@ValSize);
ValSize := SizeOf(Option2);
RegQueryValueEx(KeyHandle,'WinB', nil, nil, @Option2,
@ValSize);
with Form1 do begin
case Option1 of
0: RadioGroup1.ItemIndex:=0;
1: Radiogroup1.ItemIndex:=1;
2: Radiogroup1.ItemIndex:=2;
3: Radiogroup1.ItemIndex:=3;
end;
case Option2 of
0: Radiogroup2.ItemIndex:=0;
1: Radiogroup2.ItemIndex:=1;
2: Radiogroup2.ItemIndex:=2;
3: Radiogroup2.ItemIndex:=3;
end;
end;
end;
TForm1.CancelClick代码://关闭Form1,返回控制面板
procedure TForm1.CancelClick(Sender: TObject);
begin
close;
end;
TForm1.ApplyClick代码://设置注册表键值
procedure TForm1.ApplyClick(Sender: TObject);
begin
with Form1 do begin
Option1:=Radiogroup1.ItemIndex;
Option2:=Radiogroup2.ItemIndex;
end;
RegSetValueEx(KeyHandle,'WinA', 0, REG_BINARY, @Option1, SizeOf(Option1));
RegSetValueEx(KeyHandle,'WinB', 0, REG_BINARY, @Option2, SizeOf(Option2));
end;
TForm1.FormClose代码://关闭注册表
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
RegCloseKey(KeyHandle);
end;
④修改Project1代码如下:
library Project1;
uses
Cpl,
Windows,
Forms,
Unit1 in 'Un
③Form1主要代码:(为编写基于Win32的CPL,本文以读写Windows注册表为例)
在uses子句添加:Registry.//引用注册表单元
在type部分声明变量:
var
Form1: TForm1;
KeyHandle : HKEY;
ValSize : longint;
Option1 : Integer;
Option2 : Integer;
TForm1.FormActivate代码://打开Windows注册表,读取某特定键值
procedure TForm1.FormActivate(Sender: TObject);
begin
RegOpenKeyEx(HKEY_CURRENT_CONFIG,
'Software\Microsoft\windows\CurrentVersion\',
0, KEY_ALL_ACCESS, KeyHandle);
ValSize := SizeOf(Option1);
RegQueryValueEx(KeyHandle,'WinA', nil, nil, @Option1,
@ValSize);
ValSize := SizeOf(Option2);
RegQueryValueEx(KeyHandle,'WinB', nil, nil, @Option2,
@ValSize);
with Form1 do begin
case Option1 of
0: RadioGroup1.ItemIndex:=0;
1: Radiogroup1.ItemIndex:=1;
2: Radiogroup1.ItemIndex:=2;
3: Radiogroup1.ItemIndex:=3;
end;
case Option2 of
0: Radiogroup2.ItemIndex:=0;
1: Radiogroup2.ItemIndex:=1;
2: Radiogroup2.ItemIndex:=2;
3: Radiogroup2.ItemIndex:=3;
end;
end;
end;
TForm1.CancelClick代码://关闭Form1,返回控制面板
procedure TForm1.CancelClick(Sender: TObject);
begin
close;
end;
TForm1.ApplyClick代码://设置注册表键值
procedure TForm1.ApplyClick(Sender: TObject);
begin
with Form1 do begin
Option1:=Radiogroup1.ItemIndex;
Option2:=Radiogroup2.ItemIndex;
end;
RegSetValueEx(KeyHandle,'WinA', 0, REG_BINARY, @Option1, SizeOf(Option1));
RegSetValueEx(KeyHandle,'WinB', 0, REG_BINARY, @Option2, SizeOf(Option2));
end;
TForm1.FormClose代码://关闭注册表
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
RegCloseKey(KeyHandle);
end;
④修改Project1代码如下:
library Project1;
uses
Cpl,
Windows,
Forms,
Unit1 in 'Un
- 上一篇论文: 21世纪中国医院信息化及其对策
- 下一篇论文: MIS开发中C/S模式与B/S模式的结合策略