⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testdbtreeviewmainform.pas

📁 delphi编程控件
💻 PAS
字号:
unit TestDbTreeViewMainForm;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  DB, DBTables, Grids, ComCtrls, DBGrids, DBCGrids, ExtCtrls, DBCtrls,
  StdCtrls, Mask, Buttons, dbTree, Menus, TreeVwEx;

type
  TFrmDbTreeViewDemo = class(TForm)
    Table1: TTable;
    Table1ID: TIntegerField;
    Table1Parent: TIntegerField;
    Table1Text: TStringField;
    Query1: TQuery;
    DataSource1: TDataSource;
    DBTreeView1: TDBTreeView;
    DBGrid1: TDBGrid;
    DBNavigator1: TDBNavigator;
    Label1: TLabel;
    Label2: TLabel;
    BitBtn1: TBitBtn;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    CheckBox3: TCheckBox;
    CheckBox4: TCheckBox;
    PopupMenu1: TPopupMenu;
    Test1: TMenuItem;
    Popup1: TMenuItem;
    Menu1: TMenuItem;
    N1: TMenuItem;
    Selected1: TMenuItem;
    procedure FormCreate(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure BitBtn1Click(Sender: TObject);
    procedure DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
    procedure CheckBox1Click(Sender: TObject);
    procedure CheckBox2Click(Sender: TObject);
    procedure CheckBox3Click(Sender: TObject);
    procedure CheckBox4Click(Sender: TObject);
    procedure Selected1Click(Sender: TObject);
  end;

var
  FrmDbTreeViewDemo: TFrmDbTreeViewDemo;

implementation

{$R *.DFM}

procedure OpenTable(Table: TTable);
var
  TableName: String;
begin
  if Table.Active then
    exit;
  if (Table.DatabaseName = '') then
  begin
    TableName := Table.TableName;
    if (Pos('.DB', UpperCase(TableName)) = 0) then
      TableName := TableName + '.DB';
    if FileExists(ExtractFilePath(Application.ExeName) +
                  TableName) then
      Table.DatabaseName := ExtractFileDir(Application.ExeName)
    else
    begin
      ShowMessage(
        'Please set ' + Table.Name + '.DatabaseName to the location of ' +
        TableName + ' or copy ' + TableName +
        ' to the location of ' + Application.ExeName);
      halt;
    end;
  end;
  Table.Open;
end;


procedure TFrmDbTreeViewDemo.FormCreate(Sender: TObject);
begin
  OpenTable(Table1);
  if not Query1.Active and (Query1.DatabaseName = '') then
    Query1.DatabaseName := Table1.DatabaseName;
end;

procedure TFrmDbTreeViewDemo.FormCloseQuery(Sender: TObject;
  var CanClose: Boolean);
begin
  with DataSource1.DataSet do
    if (State in [dsEdit, dsInsert]) then
      case MessageDlg('Save changes ?', mtConfirmation, mbYesNoCancel, 0) of
        mrYes: Post;
        mrNo: Cancel;
        else CanClose := false;
      end;
end;

procedure TFrmDbTreeViewDemo.BitBtn1Click(Sender: TObject);
begin
  close;
end;

procedure TFrmDbTreeViewDemo.DBNavigator1Click(Sender: TObject;
  Button: TNavigateBtn);
begin
{ Please note that a TTreeView can end the edit-mode when you leave it
  - therefore the Dataset is not always in edit-mode no more when a
  DBNavigator-button gets pressed. }
end;

procedure TFrmDbTreeViewDemo.CheckBox1Click(Sender: TObject);
var
  s: String;
  SelectedID: String;
begin
  s := DBTreeView1.GetExpanded(','); { save all Items[].Expanded }
  SelectedID := DBTreeView1.SelectedID;
  DBTreeView1.Options := DBTreeView1.Options - [dtAutoExpand];
  DataSource1.DataSet.Close;
  if CheckBox1.Checked then
    DataSource1.DataSet := Query1
  else
    DataSource1.DataSet := Table1;
  DataSource1.DataSet.Open;
  if (s <> '') then
    DBTreeView1.SetExpanded(s, ','); { restore all Items[].Expanded }
  DBTreeView1.SelectedID := SelectedID;
end;

procedure TFrmDbTreeViewDemo.CheckBox2Click(Sender: TObject);
begin
  if CheckBox2.Checked then
    DBTreeView1.Options := DBTreeView1.Options + [dtSynchronizeDataSet]
  else
    DBTreeView1.Options := DBTreeView1.Options - [dtSynchronizeDataSet];
end;

procedure TFrmDbTreeViewDemo.CheckBox3Click(Sender: TObject);
begin
  if CheckBox3.Checked then
    DBTreeView1.Options := DBTreeView1.Options + [dtFocusOnEdit]
  else
    DBTreeView1.Options := DBTreeView1.Options - [dtFocusOnEdit];
end;

procedure TFrmDbTreeViewDemo.CheckBox4Click(Sender: TObject);
begin
  if CheckBox4.Checked then
    DBTreeView1.Options := DBTreeView1.Options + [dtRebuildFocusedOnly]
  else
    DBTreeView1.Options := DBTreeView1.Options - [dtRebuildFocusedOnly];
end;

procedure TFrmDbTreeViewDemo.Selected1Click(Sender: TObject);
var
  sSelected: string;
  sRSelected: string;
begin
  if (DBTreeView1.Selected = nil) then
    sSelected := ''
  else
    sSelected := DBTreeView1.Selected.Text;
  if (DBTreeView1.RSelected = nil) then
    sRSelected := ''
  else
    sRSelected := DBTreeView1.RSelected.Text;
  ShowMessage('Selected:  ' + sSelected +  #10 +
              'RSelected: ' + sRSelected)
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -