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

📄 ueditf.pas

📁 图书管理系统 用于进行图书的管理
💻 PAS
字号:
unit uEditF;

interface

uses 
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, dbtables;

type
  TEditF = class(TFrame)
    Button1: TButton;
    Button2: TButton;
    Panel1: TPanel;
    Bevel1: TBevel;
    CodeEdit: TEdit;
    StaticText1: TStaticText;
    NameEdit: TEdit;
    StaticText2: TStaticText;
    StaticText3: TStaticText;
    ClassEdit: TEdit;
    StaticText4: TStaticText;
    AuthorEdit: TEdit;
    StaticText5: TStaticText;
    ConcernEdit: TEdit;
    StaticText6: TStaticText;
    OutTimeEdit: TEdit;
    StaticText7: TStaticText;
    CostEdit: TEdit;
    StaticText8: TStaticText;
    Memo1: TMemo;
    ComboBox1: TComboBox;
    Panel2: TPanel;
    Button3: TButton;
    Panel3: TPanel;
    StaticText9: TStaticText;
    procedure Button1Click(Sender: TObject);
    procedure CodeEditChange(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure CodeEditKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure ViewBook(Code : string);
    function GetClassName(ClassID : string): string;
    procedure UpDateBook(Code : string);
    procedure Init;
    constructor Create(AOwner : TComponent);override;
  end;

var
  EditF : TEditF;

implementation

uses
  uGloabVar, uMainF, uShowBookF;

{$R *.DFM}

procedure TEditF.Button1Click(Sender: TObject);
begin
  Parent := nil;
  MainF.Caption := '图书管理系统';
end;

constructor TEditF.Create(AOwner: TComponent);
var
  Query : TQuery;
begin
  inherited Create(AOwner);
  try
    Query := TQuery.Create(nil);
    Query.DatabaseName := DBName;
    Query.SQL.Add('select ClassID from Class');
    Query.Open;
    while not Query.Eof do
    begin
      ComboBox1.Items.Add(Query.FieldByName('ClassID').AsString);
      Query.Next;
    end;
    ComboBox1.ItemIndex := 0;
    ClassEdit.Text := GetClassName(ComboBox1.Items[ComboBox1.ItemIndex]);
    Query.Close;
    Query.Free;
  except
    ComboBox1.Items.Clear;
  end;
  
end;

procedure TEditF.ViewBook(Code : string);
var
  Query : TQuery;
  i : integer;
  FoundClass : boolean;
begin
  Query := TQuery.Create(nil);
  Query.DatabaseName := DBName;
  Query.SQL.Add('select Book.* ,ClassName from book,Class where Code=:Code');
  Query.ParamByName('Code').AsString := Code;
  Query.Open;
  if Query.RecordCount = 0 then
    MessageDlg('没有此书的信息存在',mtError,[mbok],0);
  NameEdit.Text := Query.FieldByName('Name').AsString;
  FoundClass := False;
  for i := 0 to ComboBox1.Items.Count-1 do
  begin
    if Query.FieldByName('Class').AsString = ComboBox1.Items[i] then
    begin
      ComboBox1.ItemIndex := i;
      FoundClass := True;
    end;
  end;
  if not FoundClass then
    ComboBox1.ItemIndex := 0;
  ClassEdit.Text := GetClassName(ComboBox1.Items[ComboBox1.ItemIndex]);
  AuthorEdit.Text := Query.FieldByName('Author').AsString;  
  ConcernEdit.Text := Query.FieldByName('Concern').AsString;
  OutTimeEdit.Text := Query.FieldByName('OutDate').AsString;
  CostEdit.Text := Query.FieldByName('Cost').AsString;
  Memo1.Lines.Text:=Query.FieldByName('Memo').AsString;
  Query.Close;
  Query.Free;
end;

procedure TEditF.CodeEditChange(Sender: TObject);
begin
  if Length(CodeEdit.Text) = CodeLength then
  begin
    try
      ViewBook(CodeEdit.Text);
    except
      MessageDlg('数据操作出错',mtError,[mbok],0);
    end;
  end;
end;

function TEditF.GetClassName(ClassID: string): string;
var
  Query : TQuery;
begin
  try
    Query := TQuery.Create(nil);
    Query.DatabaseName := DBName;
    Query.SQL.Add('select ClassName from Class where ClassID =:ClassID');
    Query.ParamByName('ClassID').AsString := ClassID;
    Query.Open;
    if Query.RecordCount = 0 then
      Result := ''
    else Result := Query.FieldByName('ClassName').AsString;
    Query.Close;
    Query.Free;
  except
    Result := '';
  end;
end;

procedure TEditF.ComboBox1Change(Sender: TObject);
begin
  ClassEdit.Text := GetClassName(ComboBox1.Items[ComboBox1.ItemIndex]);
end;

procedure TEditF.UpDateBook(Code: string);
var
  Query : TQuery;
begin
  Query := TQuery.Create(nil);
  Query.DatabaseName := DBName;
  Query.SQL.Add('update book set Name=:Name, Class =:Class,Author =:Author,'+
                ' Concern =:ConCern,OutDate=:OutDate,Cost = :Cost,Memo =:Memo'+
                ' where Code = :Code');
  Query.ParamByName('Code').AsString := Code;
  Query.ParamByName('Name').AsString := NameEdit.Text;
  Query.ParamByName('Class').AsString := ComboBox1.Items[ComboBox1.ItemIndex];
  Query.ParamByName('Author').AsString := AuthorEdit.Text;
  Query.ParamByName('Concern').AsString := ConcernEdit.Text;
  try
    Query.ParamByName('OutDate').AsDateTime := StrToDate(OutTimeEdit.Text);
  except
    MessageDlg('参数<出版时间>设置错误',mtError,[mbok],0);
    Query.Free;
    Exit;
  end;
  try
    Query.ParamByName('Cost').AsFloat := StrToFloat(CostEdit.Text);
  except
    MessageDlg('参数<价格>设置错误',mtError,[mbok],0);
    Query.Free;
    Exit;
  end;
  Query.ParamByName('Memo').AsString := Memo1.Lines.GetText;
  Query.ExecSQL;
  Query.Free;
end;

procedure TEditF.Button2Click(Sender: TObject);
begin
  try
    if Length(CodeEdit.Text)<>CodeLength then
    begin
      MessageDlg('书号不正确,不能更新数据。',mtWarning,[mbok],0);
      CodeEdit.SetFocus;
      Exit;
    end;
    UpDateBook(CodeEdit.Text);
    Init;
  except
    MessageDlg('保存出错',mtError,[mbok],0);
  end;
  CodeEdit.SetFocus;
end;

procedure TEditF.Init;
begin
  CodeEdit.SetFocus;
  CodeEdit.SelectAll;
  NameEdit.Text := '';
  AuthorEdit.Text := '';
  OutTimeEdit.Text := '';
  CostEdit.Text := '';
  ConcernEdit.Text := '';
  ComboBox1.ItemIndex := 0;
  Memo1.Lines.Clear;
  ClassEdit.Text := GetClassName(ComboBox1.Items[ComboBox1.ItemIndex]);
end;

procedure TEditF.Button3Click(Sender: TObject);
var
  P : TPoint;
begin
  P.x := Panel2.Left;
  P.y := Panel2.Top +Panel2.Height;
  ShowBookF.Top := Panel1.ClientToScreen(P).y;
  ShowBookF.Left := Panel1.ClientToScreen(P).x;
  ShowBookF.Show(CodeEdit);
  {if ShowBookF.ShowModal = mrOk then
    if ShowBookF.ListView1.Selected <> nil then
    begin
      CodeEdit.Text := '';
      CodeEdit.Text := ShowBookF.ListView1.Selected.Caption;
    end;}  
end;

procedure TEditF.CodeEditKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = 13 then
    CodeEditChange(Sender);
end;

end.

⌨️ 快捷键说明

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