要编一个类似regedit注册表编辑器的软件,有没有现成的控件?

leonatcs 2007-05-09 06:44:34
如题,没有控件有例子也成啊!
...全文
299 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
atsoftworld 2007-05-25
  • 打赏
  • 举报
回复
一片混乱,抢?
zhoutaomtv 2007-05-22
  • 打赏
  • 举报
回复
随便抢起啊
kongfancheng 2007-05-10
  • 打赏
  • 举报
回复
DevExpress的TreeList控件专门有一个例子,演示注册表编辑器的做法。你直接基于这个例子修改即可。
do2008 2007-05-10
  • 打赏
  • 举报
回复
伴水在抢分~~~顶~~
王集鹄 2007-05-09
  • 打赏
  • 举报
回复
...职业抢分...

unit main;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, Grids, Outline, ComCtrls, ImgList, ExtCtrls;

type

TForml = class(TForm)

TreeViewl: TTreeView;

ListViewl: TListView;

ImageListl: TImageList;

Splitterl: TSplitter;

procedure FormCreate(Sender: TObject);

procedure TreeViewlChange(Sender: TObject; Node: TTreeNode);

procedure FormDestroy(Sender: TObject);

procedure TreeViewlExpanded(Sender: TObject; Node: TTreeNode);

procedure TreeViewlGetlmagelndex(Sender: TObject; Node: TTreeNode);

private

{ Private declarations }

public

{ Public declarations }

procedure ShowSubKeys(ParentNode: TTreeNode;depth: Integer);

function GetFullNodeName(Node: TTreeNode):string;

end;

var

Forml: TForml;

implementation

uses registry;

{$R *.DFM}

var reg : TRegistry;

procedure TForml.FormCreate(Sender: TObject);

var root : TTreeNode;

begin

Reg := TRegistry.Create;

ListViewl.ViewStyle := vsReport;

with ListViewl do

begin

with Columns.Add do

begin

Width := ListViewl.Width div 3-2;

Caption := 'Name';

end;

with Columns.Add do

begin

Width := ListViewl.Width div 3*2-2;

Caption := 'Value';

end;

end;

TreeViewl.Items.Clear;

Reg.RootKey := HKEY_LOCAL_MACHINE;

Root := TreeViewl.Items.Add(nil,'HKEY_LOCAL_MACHINE');

TreeViewl.Items.AddChildtroot,'');

end;

procedure TForml.FormDestroy(Sender: TObject);

begin

Reg.Free;

end;

function TForml.GetFullNodeName(Node: TTreeNode):string;

var CurNode : TTreeNode;

begin

Result:=''; CurNode := Node;

while CurNode.Parentonil do

begin

Result:= '\'+CurNode.Text + Result;

CurNode := CurNode.Parent;

end;

end;

procedure TForml.TreeViewlChange(Sender: TObject; Node: TTreeNode);

var s: string;

Keylnfo : TRegKeylnfo;

ValueNames : TStringList;

i : Integer;

DataType : TRegDataType;

begin

ListViewl.Items.Clear;

s:= GetFullNodeName(Node);

if not Reg.OpenKeyReadOnly(s) then Exit;

Reg.GetKeylnfo(Keylnfo);

if Keylnfo.NumValues<=0 then Exit;

ValueNames := TStringList.Create;

Reg.GetValueNames(ValueNames);

for i := 0 to ValueNames.Count-1 do

with ListViewl.Items.Add do

begin

Caption := ValueNames[i];

DataType := Reg.GetDataType(ValueNames[i]);

Case DataType of

rdString: s := Reg.ReadString(ValueNames[i]);

rdlnteger: s:= '0x'+IntToHex(Reg.Readlnteger(ValueNames[i]),8);

rdBinary: s:='Binary';

else s:= '???';

end;

Subltems.Add(s);

Imagelndex :=1;

end;

ValueNames.Free;

end;

procedure TForml.ShowSubKeys(ParentNode: TTreeNode;depth: Integer);

var ParentKey: string;

KeyNames : TStringList;

KeyInfo : TRegKeylnfo;

CurNode : TTreeNode; i : Integer;

begin

Cursor := crHourglass;

TreeViewl.Items.BeginUpdate;

ParentKey := GetFullNodeName(ParentNode);

if ParentKeyO1' then

Reg.OpenKeyReadOnly(ParentKey)

else

Reg.OpenKeyReadOnly('\') ;

Reg.GetKeylnfo(Keylnfo) ;

if KeyInfo.NumSubKeys<=0 then Exit;

KeyNames := TStringList.Create;

Reg.GetKeyNames(KeyNames);

While ParentNode.GetFirstChildonil do ParentNode.GetFirstChild.Delete;

if (KeyNames.Count>0) then for i:=0 to KeyNames.Count-1 do

begin

Reg.OpenKeyReadOnly(ParentKey+'\'-t-KeyNames[ i ]) ;

Reg.GetKeylnfo(Keylnfo);

CurNode := TreeViewl.Items.AddChild(ParentNode,KeyNames[i];

if KeyInfo.NumSubKeys>0 then

begin

TreeViewl.Items.AddChild(CurNode, '');

end;

end;

KeyNames.Free;

TreeViewl.Items.EndUpdate;

Cursor := crDefault;

end;

procedure TForml.TreeViewlExpanded(Sender: TObject; Node: TTreeNode);

begin

ShowSubKeys(Node,1);

end;

procedure TForml.TreeViewlGetlmagelndex(Sender: TObject; Node: TTreeNode);

begin

with Node do

begin

if Expanded then Imagelndex := 2

else Imagelndex := 3;

end;

end;

end.
王集鹄 2007-05-09
  • 打赏
  • 举报
回复
参考如下连接
http://www.realcoding.net/teach/Delphi7_prof/Glava5/Index6.html

搜索关键字为:Registry TRegistry TreeView HasChildren
newfang 2007-05-09
  • 打赏
  • 举报
回复
HOHO~~伴水不厚道哦,这么晚了不睡觉给偶抢分分~~
newfang 2007-05-09
  • 打赏
  • 举报
回复
自己写就可以啊
DELPHI有操作注册表的单元,或者直接用API也可以,然后用LIST显示出来就可以了
王集鹄 2007-05-09
  • 打赏
  • 举报
回复
uses Registry;

用Registry单元中的TRegistry类

可以枚举、读写注册表

具体代码自己到网上搜吧
leonatcs 2007-05-09
  • 打赏
  • 举报
回复
楼上说笑了。
橘子香水 2007-05-09
  • 打赏
  • 举报
回复
直接在程序总运行regedit就行了。

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧