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

📄 ufrmmain.pas

📁 这也是一个图书管理系统,不过比上一个更加具有价值,是难得的尤物
💻 PAS
字号:
unit ufrmMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ActnMenus, ToolWin, ActnMan, ActnCtrls, StdActns, ActnList,
  XPStyleActnCtrls, ImgList, ExtCtrls, ComCtrls,jpeg,DB, DBCtrls, Menus,uDM;

type
  TMainForm = class(TForm)
    ToolbarImages: TImageList;
    ActionManager1: TActionManager;
    EditCopy1: TEditCopy;
    EditPaste1: TEditPaste;
    EditCut1: TEditCut;
    EditSelectAll1: TEditSelectAll;
    actView1: TAction;
    actView2: TAction;
    actView3: TAction;
    actView4: TAction;
    actNew: TAction;
    actEdit: TAction;
    actDelete: TAction;
    actFind: TAction;
    actPrint: TAction;
    actExit: TAction;
    ActionMainMenuBar1: TActionMainMenuBar;
    StatusBar1: TStatusBar;
    ActionToolBar2: TActionToolBar;
    Panel1: TPanel;
    Splitter1: TSplitter;
    Panel2: TPanel;
    Tree: TTreeView;
    ListView1: TListView;
    imlSmall: TImageList;
    imlLarge: TImageList;
    Splitter2: TSplitter;
    Image1: TImage;
    actRefresh: TAction;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    procedure FormCreate(Sender: TObject);
    procedure TreeClick(Sender: TObject);
    procedure actViewExecute(Sender: TObject);
    procedure ListView1CustomDraw(Sender: TCustomListView;
      const ARect: TRect; var DefaultDraw: Boolean);
    procedure FormDestroy(Sender: TObject);
    procedure ListView1SelectItem(Sender: TObject; Item: TListItem;
      Selected: Boolean);
    procedure actEditExecute(Sender: TObject);
    procedure actExitExecute(Sender: TObject);
    procedure actNewExecute(Sender: TObject);
    procedure actRefreshExecute(Sender: TObject);
    procedure actDeleteExecute(Sender: TObject);
    procedure ListView1DblClick(Sender: TObject);
    procedure FormResize(Sender: TObject);
  private
    FJpg:TJPEGImage;
    procedure AddChildNodes(nodeName:String;SQLStr:string;imlID:integer);
  public
    FdmMain: TdmMain;
  end;

var
  MainForm: TMainForm;


implementation

uses  ufrmEdit;

{$R *.dfm}



procedure TMainForm.AddChildNodes(nodeName:String;SQLStr:string;imlID:integer);
var
  curID,SubNodeName:string;
  subnode,subnodechild:TTreenode;
begin
    subnode:=tree.Items.AddChild(tree.TopItem,nodeName);
    subnode.ImageIndex:=imlID;
    with FdmMain.adqBook do
    begin
      close;
      sql.Clear;
      sql.Add(SQLStr);
      open;
      first;
      while not Eof do
      begin
        curID:=trim(FieldByName('a').AsString);
        SubNodeName:=curID;
        subnodechild:=tree.items.addchild(subnode,SubNodeName);
        subnodechild.ImageIndex:=2;
        next;
      end;
    end;
end;


procedure TMainForm.FormCreate(Sender: TObject);
var
  NewColumn: TListColumn;
begin
  FdmMain:=TDmMain.Create(self);
  actRefreshExecute(nil);
  with ListView1 do
  begin
    SmallImages := imlSmall;
    LargeImages := imlLarge;
    NewColumn := Columns.Add;
    NewColumn.Caption :='书名';
    NewColumn.Width:=280;
    NewColumn := Columns.Add;
    NewColumn.Caption :='译著者';
    NewColumn.Width:=80;
    NewColumn := Columns.Add;
    NewColumn.Caption :='出版社';
    NewColumn.Width:=100;
    NewColumn := Columns.Add;
    NewColumn.Caption :='出版时间';
    NewColumn.Width:=80;
  end;
  Fjpg:=TJPEGImage.Create;
  Fjpg.LoadFromFile('bg003.jpg');
end;

procedure TMainForm.TreeClick(Sender: TObject);
var
  a,b:string;
  I: Integer;
  ListItem: TListItem;
begin
  a:=tree.Selected.Text;
  with FdmMain.adqBook do
  begin
    Filtered:=false;
    if (a<>'全部') then
    begin
      b:=tree.Selected.Parent.Text;
      Filtered:=false;
      if  (b<>'全部') then
      begin
        Filter:=b+'='+#39+a+#39;
        Filtered:=True;
      end;
    end;
  end;

  with ListView1 do
  begin
    SmallImages := imlSmall;
    LargeImages := imlLarge;
    Clear;
    with FdmMain.adqBook do
    begin
      first;
      for I := 0 to RecordCount - 1 do
      begin
        ListItem := Items.Add;
        Listitem.Caption :=FieldByName('图书名称').AsString;
        ListItem.ImageIndex :=2;
        ListItem.SubItems.Add(FieldByName('译著者').AsString);
        ListItem.SubItems.Add(FieldByName('出版社').AsString);
        ListItem.SubItems.Add(FieldByName('出版时间').AsString);
        next;
      end;
    end;
  end;
end;

procedure TMainForm.actViewExecute(Sender: TObject);
begin
 ListView1.ViewStyle := TViewStyle((Sender as TComponent).Tag);
end;

procedure TMainForm.ListView1CustomDraw(Sender: TCustomListView;
  const ARect: TRect; var DefaultDraw: Boolean);
var
  x,y,w,h:Integer;
begin
  with FJpg do
  begin
    w:=Width;
    h:=Height;
  end;
  y:=0;
  while y<ListView1.Height do
  begin
    x:=0;
    while x<ListView1.Width do
    begin
      ListView1.Canvas.Draw(x,y,FJpg);
      Inc(x,w);
    end;
    Inc(y,h);
  end;
end;

procedure TMainForm.FormDestroy(Sender: TObject);
begin
  FJpg.free;
end;

procedure TMainForm.ListView1SelectItem(Sender: TObject; Item: TListItem;
  Selected: Boolean);
begin
  FdmMain.adqBook.Locate('图书名称',Item.Caption,[loPartialKey]);
  TBlobField(FdmMain.adqBook.FieldByName('封面照片')).SaveToFile('1.bmp');
  Image1.Picture.LoadFromFile('1.bmp');
end;

procedure TMainForm.actEditExecute(Sender: TObject);
var
  EditForm:TEditForm;
  NeedRefresh:Boolean;
begin
  NeedRefresh:=False;
  EditForm :=TEditForm.Create(nil);
  try
    FdmMain.adqBook.edit;
    if (EditForm.ShowModal=mrOK) then
    begin
      FdmMain.adqBook.post;
      NeedRefresh:=True;
    end
    else
      FdmMain.adqBook.Cancel;
  finally
    EditForm.Free;
  end;
  if NeedRefresh then
  begin
    FdmMain.adqBook.Filtered:=false;
    Tree.FullCollapse;
  end;
end;

procedure TMainForm.actExitExecute(Sender: TObject);
begin
  close;
end;

procedure TMainForm.actNewExecute(Sender: TObject);
var
  EditForm:TEditForm;
  NeedRefresh:Boolean;
begin
  NeedRefresh:=True;
  EditForm :=TEditForm.Create(nil);
  try
    FdmMain.adqBook.Append;
    if (EditForm.ShowModal=mrOK) then
    begin
      try
        FdmMain.adqBook.Post;
      except
        on e:exception do
        begin
          if e.Message='Empty row cannot be inserted. Row must have at least one column value set' then
            application.MessageBox('没有输入内容的空记录无效!','提示',MB_ICONWARNING);
          FdmMain.adqBook.Cancel;
          NeedRefresh:=False;
        end;
      end;
    end
    else
    begin
     FdmMain.adqBook.Cancel;
     NeedRefresh:=False;
    end;
  finally
    EditForm.Free;
  end;
  if NeedRefresh then
    actRefreshExecute(nil);
end;

procedure TMainForm.actRefreshExecute(Sender: TObject);
var
  strQry:string;
  RootNode:TTreenode;
begin
  FdmMain.adqBook.Filtered:=false;
  tree.Items.Clear;
  RootNode:= Tree.Items.Add(nil, '全部'); { Add a root node }
  RootNode.ImageIndex:=1;
  strQry:='select distinct 出版社 as a from mybook ';
  AddChildNodes('出版社',strQry,3);
  strQry:='select distinct 印次 as a from mybook ';
  AddChildNodes('印次',strQry,4);
  strQry:='select distinct 类别 as a from mybook ';
  AddChildNodes('类别',strQry,5);
  strQry:='select distinct 出版时间 as a from mybook ';
  AddChildNodes('出版时间',strQry,6);
  with FdmMain.adqBook do
  begin
    close;
    sql.Clear;
    sql.Add('select *  from mybook order by 图书名称');
    open;
    StatusBar1.Panels[1].Text:='共有记录'+inttostr(RecordCount)+'条。';
  end;
  StatusBar1.Panels[0].Text:=DateTimeTostr(now);
end;

procedure TMainForm.actDeleteExecute(Sender: TObject);
var
  str:Pchar;
begin
  str:=Pchar('是否删除记录《'+FdmMain.adqBook.FieldByName('图书名称').AsString+'》?');
  if (Application.MessageBox(str,'提示',MB_YESNO+MB_ICONQUESTION)=IDYES) then
  begin
    FdmMain.adqBook.Delete;
    FdmMain.adqBook.Post;
  end;
end;

procedure TMainForm.ListView1DblClick(Sender: TObject);
begin
  actEditExecute(nil);
end;

procedure TMainForm.FormResize(Sender: TObject);
begin
  image1.Update;
end;

end.

⌨️ 快捷键说明

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