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

📄 datamanager.~pas

📁 Delphi编程┃Delphi数据库编程
💻 ~PAS
字号:
unit DataManager;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Buttons, ExtCtrls, ComCtrls, StdCtrls, Grids, DBGrids;

type
  TDataManagerForm = class(TForm)
    Panel1: TPanel;
    PzmcSpeedButton: TSpeedButton;
    ClientNameSpeedButton: TSpeedButton;
    Panel2: TPanel;
    ExitSpeedButton: TSpeedButton;
    Bevel1: TBevel;
    InputPageControl: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    Panel3: TPanel;
    PMListDBGrid: TDBGrid;
    Label1: TLabel;
    PzmcEdit: TEdit;
    Label2: TLabel;
    CfEdit: TEdit;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    WidthEdit: TEdit;
    MzEdit: TEdit;
    KcEdit: TEdit;
    Panel5: TPanel;
    Bevel2: TBevel;
    Panel9: TPanel;
    Panel10: TPanel;
    KHListDBGrid: TDBGrid;
    Label11: TLabel;
    ClientNameEdit: TEdit;
    AddPMSpeedButton: TSpeedButton;
    DelPMSpeedButton: TSpeedButton;
    AddKHSpeedButton: TSpeedButton;
    DelKHSpeedButton: TSpeedButton;
    procedure ExitSpeedButtonClick(Sender: TObject);
    procedure PzmcSpeedButtonClick(Sender: TObject);
    procedure ClientNameSpeedButtonClick(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure AddPMSpeedButtonClick(Sender: TObject);
    procedure DelPMSpeedButtonClick(Sender: TObject);
    procedure AddKHSpeedButtonClick(Sender: TObject);
    procedure DelKHSpeedButtonClick(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure PMListDBGridDblClick(Sender: TObject);
    procedure PMListDBGridDrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    procedure KHListDBGridDrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    procedure KHListDBGridDblClick(Sender: TObject);
  private
    { Private declarations }
  public
    function SaveClientName(ClientName :string):boolean;
    function SaveBreedName(pzmc, width, mz, kc, cf :string):boolean;
  end;

var
  DataManagerForm: TDataManagerForm;

implementation

uses dataform, main;

{$R *.dfm}

procedure TDataManagerForm.ExitSpeedButtonClick(Sender: TObject);
begin
  MDataForm.PMManagerADOQuery.Close;
  MDataForm.ClientNameADOQuery.Close;

  Close;
end;

procedure TDataManagerForm.PzmcSpeedButtonClick(Sender: TObject);
begin
  InputPageControl.ActivePageIndex :=0;
  //打开品种资料库
  try
    with MDataForm.PMManagerADOQuery do
    begin
      Close;
      SQL.Clear;
      SQL.Add('select * from BreedName');
      Open;
    end;
    PzmcEdit.SetFocus;
  except
    MainForm.PshowMessage('系统错误','打开资料库时失败!',0);
  end;
end;

procedure TDataManagerForm.ClientNameSpeedButtonClick(Sender: TObject);
begin
  InputPageControl.ActivePageIndex :=1;
  //打开客户资料
  try
    with MDataForm.ClientNameADOQuery do
    begin
      Close;
      SQL.Clear;
      SQL.Add('select * from ClientName');
      Open;
    end;
    ClientNameEdit.SetFocus;
  except
    MainForm.PshowMessage('系统错误','打开资料库时失败!',0);
  end;

end;

procedure TDataManagerForm.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if (Key=#13) and not(ActiveControl is TDBGrid)then
    Perform(WM_NEXTDLGCTL,0,0);
end;

procedure TDataManagerForm.AddPMSpeedButtonClick(Sender: TObject);
var SaveOK :boolean;
begin
  //先禁用ADOQuery,保存数据,关闭,打开,再解开禁止
  SaveOK :=SaveBreedName(PzmcEdit.Text, WidthEdit.Text, MzEdit.Text, KcEdit.Text,
                         CfEdit.Text);
  if not SaveOK then
     MainForm.PshowMessage('系统错误','保存品种名称数据至数据库失败!',0);

  PzmcSpeedButtonClick(nil);  //刷新数据显示
  MDataForm.PMManagerADOQuery.EnableControls;
end;

procedure TDataManagerForm.DelPMSpeedButtonClick(Sender: TObject);
begin
  if MainForm.PshowMessage('提示','是否真的要删除下面所选择的数据行?',1) then
  begin
    try
      With MDataForm.PMManagerADOQuery do
      begin
        DisableControls;
        Delete;
        PzmcSpeedButtonClick(nil);  //刷新数据显示
        EnableControls;
      end;
    except
      MainForm.PshowMessage('系统错误','删除品种名称资料失败!',0)
    end;
  end;
end;

procedure TDataManagerForm.AddKHSpeedButtonClick(Sender: TObject);
var SaveOk :boolean;
begin
  //保存客户资料
  //先禁用ADOQuery,保存数据,关闭,打开,再解开禁止
  SaveOK := SaveClientName(ClientNameEdit.Text);
  if not SaveOK then
    MainForm.PshowMessage('系统错误','保存客户名称数据至数据库失败!',0);
  ClientNameSpeedButtonClick(nil);  //刷新数据显示
  MDataForm.ClientNameADOQuery.EnableControls;
end;

procedure TDataManagerForm.DelKHSpeedButtonClick(Sender: TObject);
begin
  //删除客户资料
  if MainForm.PshowMessage('提示','是否真的要删除下面所选择的数据行?',1) then
  begin
    try
      With MDataForm.ClientNameADOQuery do
      begin
        DisableControls;
        Delete;
        ClientNameSpeedButtonClick(nil);  //刷新数据显示
        EnableControls;
      end;
    except
      MainForm.PshowMessage('系统错误','删除客户名称资料失败!',0)
    end;
  end;
end;

procedure TDataManagerForm.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  //save
  if (ssCtrl in Shift) and (Key=word('S')) then
  begin
    if InputPageControl.ActivePageIndex =0 then AddPMSpeedButtonClick(nil)
                                           else AddKHSpeedButtonClick(nil);
  end;
  //delete
  if (ssCtrl in Shift) and (Key=46) then
  begin
    if InputPageControl.ActivePageIndex =0 then DelPMSpeedButtonClick(nil)
                                           else DelKHSpeedButtonClick(nil);
  end;

end;

procedure TDataManagerForm.PMListDBGridDblClick(Sender: TObject);
begin
  if PMListDBGrid.ReadOnly then
  begin
    PMListDBGrid.ReadOnly := false;
    PMListDBGrid.Options :=PMListDBGrid.Options -[dgRowSelect] +[dgEditing];
  end else
  begin
    PMListDBGrid.ReadOnly := true;
    PMListDBGrid.Options :=PMListDBGrid.Options +[dgRowSelect] -[dgEditing];
  end;
end;

procedure TDataManagerForm.PMListDBGridDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
  if (MDataForm.PMManagerADOQuery.RecNo mod 2) = 1 then
  begin
     with PMListDBGrid do
     begin
        canvas.brush.color:= $00F2D5D0;
        DefaultDrawColumnCell(Rect, DataCol,Column,State);
     end;
  end;

end;

procedure TDataManagerForm.KHListDBGridDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
  if (MDataForm.ClientNameADOQuery.RecNo mod 2) = 1 then
  begin
     with KHListDBGrid do
     begin
        canvas.brush.color:= $00F2D5D0;
        DefaultDrawColumnCell(Rect, DataCol,Column,State);
     end;
  end;

end;

procedure TDataManagerForm.KHListDBGridDblClick(Sender: TObject);
begin
  if KHListDBGrid.ReadOnly then
  begin
    KHListDBGrid.ReadOnly := false;
    KHListDBGrid.Options :=KHListDBGrid.Options -[dgRowSelect] +[dgEditing];
  end else
  begin
    KHListDBGrid.ReadOnly := true;
    KHListDBGrid.Options :=KHListDBGrid.Options +[dgRowSelect] -[dgEditing];
  end;
end;

function TDataManagerForm.SaveBreedName(pzmc, width, mz, kc,
  cf: string): boolean;
begin
  try
    with MDataForm.PMManagerADOQuery do
    begin
      DisableControls;
      Close;
      SQL.Clear;
      SQL.Add('insert into BreedName values (:pzmc, :width, :mz, :kc, :cf)');
      Parameters.ParamByName('pzmc').Value := pzmc;
      Parameters.ParamByName('width').Value := width;
      Parameters.ParamByName('mz').Value := StrToFloat(mz);
      Parameters.ParamByName('kc').Value := StrToFloat(kc);
      Parameters.ParamByName('cf').Value := cf;
      ExecSQL;
    end;
    Result := true;
  except
    Result := false;
  end;
end;

function TDataManagerForm.SaveClientName(ClientName: string): boolean;
begin
  try
    with MDataForm.ClientNameADOQuery do
    begin
      DisableControls;
      Close;
      SQL.Clear;
      SQL.Add('insert into ClientName values (:khmc)');
      Parameters.ParamByName('khmc').Value := ClientName;
      ExecSQL;
    end;
    Result := true;
  except
    Result := false;
  end;

end;

end.

⌨️ 快捷键说明

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