Недавно добавленные исходники

•  Animation Loaders  765

•  DeLiKaTeS Tetris (Тетрис)  5 747

•  TDictionary Custom Sort  7 700

•  Fast Watermark Sources  7 386

•  3D Designer  10 602

•  Sik Screen Capture  7 911

•  Patch Maker  8 136

•  Айболит (remote control)  8 192

•  ListBox Drag & Drop  6 991

•  Доска для игры Реверси  100 295

•  Графические эффекты  8 266

•  Рисование по маске  7 645

•  Перетаскивание изображений  6 247

•  Canvas Drawing  6 619

•  Рисование Луны  6 540

•  Поворот изображения  5 705

•  Рисование стержней  4 640

•  Paint on Shape  3 344

•  Генератор кроссвордов  4 317

•  Головоломка Paletto  3 467

•  Теорема Монжа об окружностях  4 291

•  Пазл Numbrix  2 778

•  Заборы и коммивояжеры  3 697

•  Игра HIP  2 493

•  Игра Go (Го)  2 483

•  Симулятор лифта  2 880

•  Программа укладки плитки  2 314

•  Генератор лабиринта  3 039

•  Проверка числового ввода  2 543

•  HEX View  2 949

 
скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Браузер по реестру



unit main;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Grids, Outline, ComCtrls, ImgList, ExtCtrls;

type
  TRegForm = class(TForm)
    TreeView1: TTreeView;
    ListView1: TListView;
    ImageList1: TImageList;
    ImageList2: TImageList;
    Splitter1: TSplitter;
    procedure FormCreate(Sender: TObject);
    procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
    procedure FormDestroy(Sender: TObject);
    procedure TreeView1Expanded(Sender: TObject; Node: TTreeNode);
    procedure TreeView1GetImageIndex(Sender: TObject; Node: TTreeNode);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure ShowSubKeys(ParentNode: TTreeNode; depth: Integer);
    function GetFullNodeName(Node: TTreeNode): string;
  end;

var
  RegForm: TRegForm;

implementation
uses registry;
{$R *.DFM}
var reg: TRegistry;

function TRegForm.GetFullNodeName(Node: TTreeNode): string;
var CurNode: TTreeNode;
begin
  Result := ''; CurNode := Node;
  while CurNode.Parent <> nil do
  begin
    Result := '\' + CurNode.Text + Result;
    CurNode := CurNode.Parent;
  end;
end;

procedure TRegForm.TreeView1Change(Sender: TObject; Node: TTreeNode);
var s: string;
  KeyInfo: TRegKeyInfo;
  ValueNames: TStringList;
  i: Integer;
  DataType: TRegDataType;
begin
  ListView1.Items.Clear;
  s := GetFullNodeName(Node);
  if not Reg.OpenKeyReadOnly(s) then Exit;
  Reg.GetKeyInfo(KeyInfo);
  if KeyInfo.NumValues <= 0 then Exit;
  ValueNames := TStringList.Create;
  Reg.GetValueNames(ValueNames);
  for i := 0 to ValueNames.Count - 1 do
    with ListView1.Items.Add do
    begin
      Caption := ValueNames[i];
      DataType := Reg.GetDataType(ValueNames[i]);
      case DataType of
        rdString: s := Reg.ReadString(ValueNames[i]);
        rdInteger: s := '0x' + IntToHex(Reg.ReadInteger(ValueNames[i]), 8);
        rdBinary: s := 'Binary';
      else s := '???';
      end;
      SubItems.Add(s);
      ImageIndex := 1;
    end;
  ValueNames.Free;
end;

procedure TRegForm.ShowSubKeys(ParentNode: TTreeNode; depth: Integer);
var ParentKey: string;
  KeyNames: TStringList;
  KeyInfo: TRegKeyInfo;
  CurNode: TTreeNode;
  i: Integer;
begin
  Cursor := crHourglass;
  TreeView1.Items.BeginUpdate;
  ParentKey := GetFullNodeName(ParentNode);
  if ParentKey <> '' then
    Reg.OpenKeyReadOnly(ParentKey)
  else
    Reg.OpenKeyReadOnly('\');
  Reg.GetKeyInfo(KeyInfo);
  if KeyInfo.NumSubKeys <= 0 then Exit;
  KeyNames := TStringList.Create;
  Reg.GetKeyNames(KeyNames);
  while ParentNode.GetFirstChild <> nil do ParentNode.GetFirstChild.Delete;
  if (KeyNames.Count > 0) then for i := 0 to KeyNames.Count - 1 do
    begin
      Reg.OpenKeyReadOnly(ParentKey + '\' + KeyNames[i]);
      Reg.GetKeyInfo(KeyInfo);
      CurNode := TreeView1.Items.AddChild(ParentNode, KeyNames[i]);
      if KeyInfo.NumSubKeys > 0 then
      begin
        TreeView1.Items.AddChild(CurNode, ''); //
      end;
    end;
  KeyNames.Free;
  TreeView1.Items.EndUpdate;
  Cursor := crDefault;
end;

procedure TRegForm.FormCreate(Sender: TObject);
var root: TTreeNode;
begin
  Reg := TRegistry.Create;
  ListView1.ViewStyle := vsReport;
  with ListView1 do
  begin
    with Columns.Add do begin Width := ListView1.Width div 3 - 2; Caption := 'Name'; end;
    with Columns.Add do begin Width := ListView1.Width div 3 * 2 - 2; Caption := 'Value'; end;
  end;
  TreeView1.Items.Clear;
  Reg.RootKey := HKEY_LOCAL_MACHINE;
  Root := TreeView1.Items.Add(nil, 'HKEY_LOCAL_MACHINE');
  TreeView1.Items.AddChild(root, '');
end;

procedure TRegForm.FormDestroy(Sender: TObject);
begin
  Reg.Free;
end;

procedure TRegForm.TreeView1Expanded(Sender: TObject; Node: TTreeNode);
begin
  ShowSubKeys(Node, 1);
end;

procedure TRegForm.TreeView1GetImageIndex(Sender: TObject; Node: TTreeNode);
begin
  with Node do
  begin
    if Expanded then ImageIndex := 2
    else ImageIndex := 3;
  end;
end;

end.

Скачать весь проект





Похожие по теме исходники

Mini WebBrowser (браузер)

Internet Walker (браузер)

Simple WebBrowser (браузер)




Copyright © 2004-2026 "Delphi Sources" by «SiteAnalyzer». Delphi World FAQ

Группа ВКонтакте