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

📄 testeditmasterform.pas

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

interface

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

type
  TfrmEditMaster = class(TForm)
    tblMaster: TTable;
    dsMaster: TDataSource;
    tblMasterNumber: TAutoIncField;
    tblMasterTestLookup: TIntegerField;
    tblMasterText: TStringField;
    tblDetail: TTable;
    dsDetail: TDataSource;
    tblDetailID: TIntegerField;
    tblDetailParent: TIntegerField;
    tblDetailText: TStringField;
    tblDetailTestCalc: TStringField; { to test calculated fields }
    DbTreeLookupComboBox1: TDbTreeLookupComboBox;
    DbTreeLookupComboBox2: TDbTreeLookupComboBox;
    DbTreeLookupComboBox3: TDbTreeLookupComboBox;
    DBGrid2: TDBGrid;
    DBNavigator1: TDBNavigator;
    DBNavigator2: TDBNavigator;
    DBNavigator3: TDBNavigator;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Bevel1: TBevel;
    Button1: TButton;
    DBLookupComboBox1: TDBLookupComboBox;
    TreeView1: TTreeView;
    Label5: TLabel;
    Label6: TLabel;
    CheckBox1: TCheckBox;
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    function DbTreeLookupComboBox2CreateTreeSelect: TTreeSelect;
    procedure DbTreeLookupComboBox3AcceptNode(Node: TTreeNode;
      var Accept: Boolean);
    procedure FormDestroy(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure tblDetailCalcFields(DataSet: TDataSet);
    procedure Button1Click(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
  end;

var
  frmEditMaster: TfrmEditMaster;

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 TfrmEditMaster.FormCreate(Sender: TObject);
begin
  Screen.Cursor := crHourglass;
  try
    OpenTable(tblDetail);
    OpenTable(tblMaster);
  finally
  { We better stop the demo if something is wrong: }
    if not (tblMaster.Active and tblDetail.Active) then
    begin
      Screen.Cursor := crDefault;
      halt;
    end;
  end;
{ Create a special TreeSelect-form for DbTreeLookupComboBox2: }
{ If we give the special TreeSelect-form to DbTreeLookupComboBox2 now
  (after the tables are open), the first dropdown of DbTreeLookupComboBox2
  gets faster.
  Look at unit TestSelectForm for details of TSampleTreeSelect. }
  DbTreeLookupComboBox2.TreeSelect := TSampleTreeSelect.Create(self);
{ The first dropdown of DbTreeLookupComboBox1 gets faster too: }
  DbTreeLookupComboBox1.PrepareDropdown;
  Screen.Cursor := crDefault;
end;

procedure TfrmEditMaster.FormDestroy(Sender: TObject);
begin
  tblDetail.Close;
  tblMaster.Close;
end;

procedure TfrmEditMaster.FormCloseQuery(Sender: TObject;
  var CanClose: Boolean);
begin
  with tblMaster do
    if (State in [dsEdit, dsInsert]) then
      case MessageDlg(TableName + ' is still in edit-mode.' + #10 +
                      'Save changes ?',
                      mtConfirmation, mbYesNoCancel, 0) of
        mrYes: Post;
        mrNo: Cancel;
        else CanClose := false;
      end;
end;

function TfrmEditMaster.DbTreeLookupComboBox2CreateTreeSelect: TTreeSelect;
begin
  result := nil; { no warning please, this event is for documentation only }
{ We can use this event to create a special TreeSelect-form for
  DbTreeLookupComboBox2.
  TDbTreeLookupComboBox.OnCreateTreeSelect gets called before the first
  dropdown. This form will get destroyed at TfrmEditMaster.Destroy: }

{ result := TSampleTreeSelect.Create(self); }
end;

procedure TfrmEditMaster.DbTreeLookupComboBox3AcceptNode(Node: TTreeNode;
  var Accept: Boolean);
begin
{ We will only accept the leaves of the tree: }
{ Obsolete since version 0.4 because dtAcceptLeavesOnly in Options: }
{ Accept := not Node.HasChildren; }
end;

procedure TfrmEditMaster.tblDetailCalcFields(DataSet: TDataSet);
begin
  tblDetailTestCalc.Value := tblDetailText.Value;
end;

procedure TfrmEditMaster.Button1Click(Sender: TObject);
begin
  close;
end;

procedure TfrmEditMaster.CheckBox1Click(Sender: TObject);
begin
  with DbTreeLookupComboBox2.DBTreeView do
    if CheckBox1.Checked then
      Options := Options + [dtMouseMoveSelect]
    else
      Options := Options - [dtMouseMoveSelect];
end;

end.

⌨️ 快捷键说明

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