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

📄 bookclass.pas

📁 本图书管理系统一sql server为数据库开发平台
💻 PAS
字号:
unit BookClass;
interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, ToolWin,ExtCtrls,buttons, ADODB, ImgList;

type
  TbookclassForm = class(TForm)
    Panel1: TPanel;
    GroupBox1: TGroupBox;
    TreeView1: TTreeView;
    ImageList1: TImageList;
    StaticText5: TStaticText;
    Edit2: TEdit;
    StaticText1: TStaticText;
    Memo1: TMemo;
    StaticText2: TStaticText;
    Edit1: TEdit;
    StaticText3: TStaticText;
    StaticText4: TStaticText;
    StaticText6: TStaticText;
    StaticText7: TStaticText;
    StaticText8: TStaticText;
    StaticText9: TStaticText;
    ComboBoxEx1: TComboBoxEx;
    ImageList2: TImageList;
    procedure FormCreate(Sender: TObject);
    procedure StaticText1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure StaticText3MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure StaticText3MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure StaticText3Click(Sender: TObject);
    procedure StaticText8Click(Sender: TObject);
    procedure Edit2KeyPress(Sender: TObject; var Key: Char);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure TreeView1Click(Sender: TObject);
    procedure StaticText6Click(Sender: TObject);
    procedure StaticText7Click(Sender: TObject);
    procedure CreateParams(var Params: TCreateParams); override;
    procedure setEdit(const flag:boolean);
    procedure clearedit;
    procedure treefind(const parentname:string;var node:TTreenode;parentquery:TADOQuery);
    procedure StaticText4Click(Sender: TObject);

  private
   procedure WMPAINT1(var msg:TMESSAGE);message WM_PAINT;
   procedure WMNCPAINT1(var msg:TWMNCPAINT);message WM_NCPAINT;
   procedure Active(var msg:Tmessage);message WM_ACTIVATE;
   procedure WMNCLBUTTONDBLCLK1(var msg:Tmessage);message WM_NCLBUTTONDBLCLK;
       { Private declarations }
  public
    oldclassname:Tcaption;
    titleBmp:Tbitmap;
    { Public declarations }
  end;

var
  //BookInfoform:  TbookclassForm;

  parentnode,classnode:TTreeNode;

implementation

uses MainForm,DataModule;
{$R *.dfm}
function MyShowmessage(text:Pchar):boolean; external 'resource.dll';

procedure TbookclassForm.WMNCLBUTTONDBLCLK1(var msg:Tmessage);
begin

  //
end;
procedure TbookclassForm.Active(var msg:Tmessage);
begin
self.WMPAINT1(msg);
end;

procedure TbookclassForm.CreateParams(var Params: TCreateParams);
begin
 inherited;
  params.Style:=params.Style-WS_SYSMENU;
end;

procedure TbookclassForm.WMPAINT1(var msg:TMESSAGE);
begin
sendmessage(self.Handle,WM_NCPAINT,0,0);
inherited;
end;

procedure TbookclassForm.WMNCPAINT1(var msg:TWMNCPAINT);
var
  dc1:HDC;
  y,frame:integer;
  oldbrush:HBrush;
  oldpen,pen:HPEN;
  canvas:Tcanvas;
begin
  canvas:=Tcanvas.Create;
  dc1:=getwindowdc(Handle);
  y:=GetSystemMetrics(SM_CYSIZE);
  frame:=GetSystemMetrics(SM_CYSIZEFRAME);
  oldbrush:=selectobject(dc1,getstockobject(null_brush));
  pen:=createpen(PS_SOLID,1,rgb(155,155,155));
  oldpen:=selectobject(dc1,pen);
  RoundRect(dc1,0,0,Width,Height,12,12);
  pen:=createpen(PS_SOLID,frame*2-5,rgb(255,255,255));
  selectobject(dc1,pen);
  RoundRect(dc1,2,2,Width-2,Height-2,8,10);
  StretchBlt(dc1,frame,frame,Width-2*frame,y+frame div 2,titlebmp.Canvas.Handle,0,0,titlebmp.Width,titlebmp.Height,srccopy);
  canvas.Handle:=dc1;
  canvas.Brush.Style:=bsclear;
  canvas.TextOut(frame*3,(y-frame)div 2,self.Caption);
  selectobject(dc1,oldbrush);
  selectobject(dc1,oldpen);
  deleteObject(pen);
  canvas.Handle:=0;
  canvas.Free;
  releasedc(Handle,dc1);
end;
procedure TbookclassForm.FormCreate(Sender: TObject);
begin
titlebmp:=Tbitmap.Create;
titlebmp.LoadFromResourceName(main.resource,'TItle');
end;


procedure TbookclassForm.StaticText1Click(Sender: TObject);
begin
self.Close;
end;

procedure TbookclassForm.FormShow(Sender: TObject);
var
  QueryClass:TADOQuery;
begin
  treeview1.Items.Clear;
  QueryClass:=TADOQuery.Create(nil);
  try
  QueryClass.Connection:=Data.ADOConnection1;
  with data.PublicQuery do
   begin  //with
     close;
     sql.Clear;
     sql.Add('select * from bookkind where isbase=1');
     open;
     while not Eof do
      begin                //while not eof
        parentnode:=treeview1.Items.Add(classnode,FieldByName('KindName').AsString);
        parentnode.ImageIndex:=fieldbyname('image').Asinteger;
        parentnode.SelectedIndex:=parentnode.ImageIndex;
        treefind(FieldByName('KindName').AsString,parentnode,QueryClass); //遍历 树
        next;
      end;             // while not of
   end;   //with
  finally
    QueryClass.Free;
  end;
end;

procedure TbookclassForm.treefind(const parentname:string;var node:TTreenode;parentquery:TADOQuery);
var                                         //递归便利
fnode:TTreenode;
cadoquery:Tadoquery;
begin
  cadoquery:=Tadoquery.Create(nil);
  try
  cadoquery.Connection:=data.ADOConnection1;
  with parentquery do
  begin //with
    Close;
    SQL.Clear;
    SQL.Add('select * from bookkind where parentname=:parentname');
    Parameters.ParamByName('parentname').Value:=parentname;
    Open;
    if recordcount > 0 then
    while not eof do
      begin
        fnode:=treeview1.Items.AddChildFirst(node,fieldbyname('kindname').AsString);//增加叶子
        fnode.ImageIndex:=fieldbyname('image').Asinteger;
        fnode.SelectedIndex:=fnode.ImageIndex;
        treefind(fieldbyname('kindname').AsString,fnode,cadoquery);
        next;
      end;
  end;   //with
  finally
    cadoquery.Free;
  end;
end;

procedure TbookclassForm.StaticText3MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  (sender as Tstatictext).BorderStyle:=sbsSunken;
end;

procedure TbookclassForm.StaticText3MouseUp(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  (sender as Tstatictext).BorderStyle:=sbsNone;
end;

procedure TbookclassForm.StaticText3Click(Sender: TObject);
begin
  if Trim(statictext3.Caption)='添加' then
  begin
    setedit(true);
    clearedit;
    edit2.SetFocus;
    statictext3.Caption:='     保存 ';
  end
  else
    begin     //else begin
      with data.PublicQuery do
      begin     //with b
        if (trim(edit1.Text) ='') or (edit1.Text='无') then
        begin    //add root  b
          close;
          sql.Clear;
          sql.Add('select * from bookkind where kindname=:kindname');
          parameters.ParamByName('kindname').Value:=edit2.Text;
          open;
          if recordcount > 0 then
          begin
            myshowmessage(#13+'该类型已经存在!');
            exit;
          end;
          close;
          sql.Clear;
          sql.Add('insert into bookkind values(1,NULL,:kindname,:image,:memo)');
          parameters.ParamByName('kindname').Value:=edit2.Text;
          parameters.ParamByName('image').Value:=comboboxex1.ItemIndex;
          parameters.ParamByName('memo').Value:=memo1.Text;
          execsql;
          self.FormShow(self);
        end      //add root e
        else
          begin   //else 2 b
            close;
            sql.Clear;
            sql.Add('select * from bookkind where kindname=:kname');
            parameters.ParamByName('kname').Value:=edit2.Text;
            open;
            if recordcount > 0 then
            begin
              myshowmessage(#13+'该类已经存在');
              statictext3.Caption:='     添加 ';
              setedit(false);
              clearedit;
              edit1.Clear;
              exit;
            end;
            close;
            sql.Clear;
            sql.Add('select * from bookkind where kindname=:kname');
            parameters.ParamByName('kname').Value:=edit1.Text;
            open;
            if recordcount >0 then
            begin  //find parent node
              close;
              sql.Clear;
              sql.Add('insert into bookkind values(0,:parent,:kindname,:image,:memo)');
              parameters.ParamByName('parent').Value:=edit1.Text;
              parameters.ParamByName('kindname').Value:=edit2.Text;
              parameters.ParamByName('image').Value:=comboboxex1.ItemIndex;
              parameters.ParamByName('memo').Value:=memo1.Text;
              execsql;
              self.FormShow(self);
            end    //find parent node
            else
              begin    //don't fond the parent
                myshowmessage('该上级不存在!!请查阅后重新输入');
              end;      //don't fond the parent
          end;   //else 2 e
       end;      //with e
    setedit(false);
    clearedit;
    edit1.Clear;
    Statictext3.Caption:='     添加 ';
  end;      //else end
end;


procedure TbookclassForm.setEdit(const flag:boolean);
begin
  edit1.Enabled:=flag;
  edit2.Enabled:=flag;
  memo1.Enabled:=flag;
  comboboxex1.Enabled:=flag;
end;

procedure TbookclassForm.clearedit;
begin
  edit2.Clear;
  memo1.Clear;
end;

procedure TbookclassForm.StaticText8Click(Sender: TObject);
begin
  data.PublicQuery.Close;
  close;
end;

procedure TbookclassForm.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
  if  key=#13 then
    edit1.SetFocus;
end;

procedure TbookclassForm.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if  key=#13 then
    memo1.SetFocus;
end;

procedure TbookclassForm.TreeView1Click(Sender: TObject);
begin
  if assigned(treeview1.Selected) then
  begin
    edit2.Text:=treeview1.Selected.Text;
    comboboxex1.ItemIndex:=treeview1.Selected.ImageIndex;
    with data.PublicQuery do
    begin
      close;
      sql.Clear;
      sql.Add('select * from bookKind where Kindname=:name');
      parameters.ParamByName('name').Value:=edit2.Text;
      open;
      memo1.Text:=fieldbyname('memo').AsString;
    end;
    if Assigned(treeview1.Selected.Parent) then
      edit1.Text:=treeview1.Selected.Parent.Text
    else
      edit1.Text:='';
  end;
end;

procedure TbookclassForm.StaticText6Click(Sender: TObject);
begin
  if Trim(statictext6.Caption)='修改' then
  begin
    setedit(true);
    edit2.SetFocus;
    oldclassname:=edit2.Text;
    statictext6.Caption:='     保存 ';
  end
  else
  begin     //else begin
    if trim(edit2.Text) = '' then
    begin
      myshowmessage('请选择将要修改的书类!谢谢!!');
      exit;
    end
    else
      begin// change code
        with data.PublicQuery do
        begin     //with b
          if  strcomp(pchar(trim(edit1.Text)),pchar(trim(oldclassname)))=0 then
          begin
            myshowmessage('不能修改自身为自身的子类!!');
            exit;
          end;
          if (trim(edit1.Text) ='') or (edit1.Text='无') then
          begin    //add root  b
            close;
            sql.Clear;
            sql.Add('update bookkind set  IsBase=1,ParentName=null,KindName=(:kindname),image=(:image),memo=(:memo)  where kindname=(:oldkindname)');
            parameters.ParamByName('oldkindname').Value:=oldclassname;
            parameters.ParamByName('kindname').Value:=edit2.Text;
            parameters.ParamByName('image').Value:=comboboxex1.ItemIndex;
            parameters.ParamByName('memo').Value:=memo1.Text;
            execsql;
          end      //add root e
          else
          begin  //not root
            if not (strcomp(pchar(trim(oldclassname)),pchar(trim(edit2.Text)))=0)	 then
            begin      // name changed
              close;
              sql.Clear;
              sql.Add('select * from bookkind where kindname=:kname');
              parameters.ParamByName('kname').Value:=edit2.Text;
              open;
              if recordcount > 0 then
              begin
                myshowmessage('所修改的类名称已经存在!');
                statictext6.Caption:='     修改 ';
                setedit(false);
                edit1.Clear;
                exit;
              end;
            end;       //name changed
            close;
            sql.Clear;
            sql.Add('select * from bookkind where kindname=:kname');
            parameters.ParamByName('kname').Value:=edit1.Text;
            open;
            if recordcount <1 then
            begin  //not fond parent node
              myshowmessage('所修改的上级不存在!!请查阅后重新输入');
              exit;
            end    //not fond parent node
            else
            begin    //fond the parent
              close;
              sql.Clear;
              sql.Add('update bookkind set IsBase=0,ParentName=(:parentname),KindName=(:kindname),image=(:image),Memo=(:memo)');
              sql.Add('  where kindname=(:oldkindname)');
              parameters.ParamByName('oldkindname').Value:=oldclassname;
              parameters.ParamByName('kindname').Value:=edit2.Text;
              parameters.ParamByName('parentname').Value:=edit1.Text;
              parameters.ParamByName('image').Value:=comboboxex1.ItemIndex;
              parameters.ParamByName('memo').Value:=memo1.Text;
              execsql;
              // self.FormShow(self);
            end;      //fond the parent
          end;// not root
          close;
          sql.clear;
          sql.add('update bookkind set parentName=:Parentname where ParentName=:oldname');
          parameters.ParamByName('oldname').Value:=oldclassname;
          parameters.ParamByName('Parentname').Value:=edit2.Text;
          execsql;
          self.FormShow(self);
        end;//with e
      end;                //change code
      setedit(false);
      Statictext6.Caption:='     修改 ';
  end;      //else end
end;

procedure TbookclassForm.StaticText7Click(Sender: TObject);
begin
  setEdit(false);
  clearedit;
  edit1.clear;
  Statictext6.Caption:='     修改 ';
  statictext3.Caption:='     添加 ';
end;

procedure TbookclassForm.StaticText4Click(Sender: TObject);
var
  node1:tTreenode;
begin
  if trim(edit2.text) = '' then
  begin
   myshowmessage(#13+'请选择将要删除的书类!');
   exit;
  end
  else
  begin
    node1:=treeview1.selected;
    if node1.HasChildren then
    begin
      myshowmessage('对不起! 不能删除含有子类的种类!');
      exit;
    end;
    with data.publicquery do
    begin    //with
      close;
      sql.clear;
      sql.add('delete from bookkind where kindname=:kindname');
      parameters.parambyname('kindname').value:=edit2.text;
      execsql;
      Myshowmessage(#13+'删除成功');
      node1.free;
    end;   //with
  end;
end;

end.

⌨️ 快捷键说明

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