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

📄 basetree.pas

📁 这是一个三层的进销存系统
💻 PAS
字号:
unit BaseTree;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, MDIbase, ComCtrls, Grids, DBGridEh, ToolWin, ActnList, DB,
  DBClient, StdCtrls, ImgList;

type
  TfrmbaseTree = class(TfrmMDIbase)
    CoolBar1: TCoolBar;
    pagea: TPageControl;
    Grid: TDBGridEh;
    tab1: TTabSheet;
    tab2: TTabSheet;
    ToolBar1: TToolBar;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    ToolButton3: TToolButton;
    ToolButton4: TToolButton;
    ActionList1: TActionList;
    t01: TAction;
    t02: TAction;
    t03: TAction;
    t04: TAction;
    t05: TAction;
    ToolButton5: TToolButton;
    CDSbaseinfo: TClientDataSet;
    dsBaseinfo: TDataSource;
    TreeView1: TTreeView;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    ImageListform: TImageList;
    procedure FormShow(Sender: TObject);
    procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure GridGetCellParams(Sender: TObject; Column: TColumnEh;
      AFont: TFont; var Background: TColor; State: TGridDrawState);
  private
    function foundnodebyid(T:Ttreeview;id:integer):Ttreenode;
    function loadTree(Atreeview:Ttreeview):integer;
    function getnodeid(Atree:Ttreeview;Inode:Ttreenode):integer;
    function checksave():boolean;
    { Private declarations }
  Protected
    Maintable:string;
    Mainview:string;
    Masterfield:string;
    Keyfield:string;
  public
    { Public declarations }
  end;

var
  frmbaseTree: TfrmbaseTree;

implementation

uses Global, common;

{$R *.dfm}

function TfrmbaseTree.checksave: boolean;
begin
  Result:=True;
  if CDSbaseinfo.State in [dsInsert,dsEdit] then
    Case messagedlg('是否保存当前数据 ? ',mtconfirmation,[mbok,mbno,mbcancel],0) of
      mrYes:
        begin
          CDSbaseinfo.Post;
          Result:=CDSbaseinfo.State = dsBrowse;
        end;
      mrNo:
        begin
          CDSbaseinfo.Cancel;
          Result:=CDSbaseinfo.State = dsBrowse;
        end;
      mrCancel:
        Result:=False;  
    end;
end;

procedure TfrmbaseTree.FormShow(Sender: TObject);
begin
  inherited;
  Pagea.ActivePage:=Tab1;
  GetAllData(CDSbaseinfo,mainview,keyfield,20);
  Loadtree(treeView1);
end;

function TfrmbaseTree.foundnodebyid(T: Ttreeview; id: integer): Ttreenode;
var
  Count:integer;
begin
  Result:=nil;
  For Count:= 0 to (T.Items.Count - 1) do
    begin
      if integer(t.Items[Count].Data^)=id then
        begin
          Result:=t.Items[count];
          Exit;
        end;
    end;
end;

function TfrmbaseTree.getnodeid(Atree: Ttreeview;
  Inode: Ttreenode): integer;
var
  Count:integer;
begin
  Result:=0;
  for Count:=0 to Atree.Items.Count-1 do
    begin
      if Atree.Items[Count]=inode then
        begin
          Result:=integer(Atree.Items[count].Data^);
          Exit;
        end;
    end;
end;

function TfrmbaseTree.loadTree(Atreeview: Ttreeview): integer;
var
  id:pint;
  node1,node2:Ttreenode;
begin
  Result:=0;
  Atreeview.Items.Clear;
  Atreeview.Items.BeginUpdate;
  CDSbaseinfo.First;
  while not CDSbaseinfo.Eof do
    begin
      node1:=foundnodebyid(Atreeview,CDSbaseinfo.fieldbyname('fparentid').AsInteger);
      new(id);
      id^:=CDSbaseinfo.fieldbyname('fid').AsInteger;
      node2:=Atreeview.Items.AddChildObject(node1,CDSbaseinfo.fieldbyname('fname').AsString,id);
      node2.ImageIndex:=0;
      node2.SelectedIndex:=1;
      CDSbaseinfo.Next;
    end;
    Atreeview.Items.EndUpdate;
    Atreeview.FullExpand;
end;

procedure TfrmbaseTree.TreeView1Change(Sender: TObject; Node: TTreeNode);
var
  Cid:integer;
begin
  inherited;
  Cid:=Getnodeid(Treeview1,Treeview1.Selected);
//  CDSbaseinfo.Locate(keyfield,Cid,[]); 
end;

procedure TfrmbaseTree.FormCloseQuery(Sender: TObject;
  var CanClose: Boolean);
begin
  inherited;
  CanClose:=CheckSave;
end;

procedure TfrmbaseTree.GridGetCellParams(Sender: TObject;
  Column: TColumnEh; AFont: TFont; var Background: TColor;
  State: TGridDrawState);
begin
  inherited;
  if Grid.SumList.RecNo mod 2=1 then
    BackGround:=$00EAEFED
    else
    BackGround:=clWhite;
end;

end.

⌨️ 快捷键说明

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