📄 testdbtreeviewmainform.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 + -