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

📄 unit4.pas

📁 delphi开发的小软件
💻 PAS
字号:
unit Unit4;

interface

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

type
  TSearchForm = class(TForm)
    Label1: TLabel;
    ComboBox1: TComboBox;
    Label2: TLabel;
    Edit1: TEdit;
    Button1: TButton;
    DBGrid1: TDBGrid;
    Button2: TButton;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    GroupBox1: TGroupBox;
    Image1: TImage;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    RichEdit1: TRichEdit;
    ComboBox2: TComboBox;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Edit1Enter(Sender: TObject);
    procedure ComboBox1Select(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure Button1Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure DBGrid1CellClick(Column: TColumn);
    procedure Edit2KeyPress(Sender: TObject; var Key: Char);
    procedure Edit3KeyPress(Sender: TObject; var Key: Char);
    procedure Edit5KeyPress(Sender: TObject; var Key: Char);
    procedure Button4Click(Sender: TObject);
    procedure DBGrid1Enter(Sender: TObject);
    procedure Edit2Exit(Sender: TObject);
    procedure Edit3Exit(Sender: TObject);
    procedure ComboBox2Exit(Sender: TObject);
    procedure Edit5Exit(Sender: TObject);
    procedure Edit6Exit(Sender: TObject);
    procedure RichEdit1Exit(Sender: TObject);
  private
    { Private declarations }
  str:string;
  flag:Boolean;
  change:Boolean;
  public
    { Public declarations }
  end;

var
  SearchForm: TSearchForm;

implementation

uses Unit1, Unit3;

{$R *.dfm}

procedure TSearchForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
    Action:=caFree;
    SearchForm:=nil;
    MainForm.Enabled:=TRUE;
end;

procedure TSearchForm.Edit1Enter(Sender: TObject);
begin
    if ComboBox1.ItemIndex=-1 then
    begin
        ShowMessage('请选择查询方式!');
        ComboBox1.SetFocus;
    end;
end;

procedure TSearchForm.ComboBox1Select(Sender: TObject);
begin
    if ComboBox1.ItemIndex=0 then
    begin
      str:='Number';
      Edit1.Clear;
      Edit1.SetFocus;
    end
    else if ComboBox1.ItemIndex=1 then
    begin
      str:='Name';
      Edit1.Clear;
      Edit1.SetFocus;
    end;
end;

procedure TSearchForm.FormCreate(Sender: TObject);
begin
    flag:=FALSE;
    change:=FALSE;
    DataModule1.ADOQuery1.Active:=TRUE;
    DBGrid1.DataSource:=DataModule1.DataSource1;
end;

procedure TSearchForm.Button2Click(Sender: TObject);
begin
    if MessageDlg('是否删除  '+'"'+DBGrid1.Fields[1].asString+'"'+'  的记录?',
                  mtInformation, mbOKCancel, 0)=1 then
      DataModule1.ADOQuery1.Delete;
end;

procedure TSearchForm.Button5Click(Sender: TObject);
begin
    SearchForm.Close;
end;

procedure TSearchForm.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
    if str='Number' then
        if not (Key in['0'..'9', #8]) then
        begin
            Key:=#0;
            MessageBeep(1);
        end;
    if str='Name' then
        if(Key<>#8) and (ord(Key)<128) then
        begin
            Key:=#0;
            MessageBeep(1);
        end;
end;

procedure TSearchForm.Button1Click(Sender: TObject);
var sSQL:string;
begin
    if (str='Number') AND (Edit1.GetTextLen<8)  then
    begin
        ShowMessage('请输入8位编号!');
        Edit1.SetFocus;
    end
    else if (str='Name') AND (Edit1.GetTextLen=2)  then
    begin
        ShowMessage('不能只输入一个汉字!');
        Edit1.SetFocus;
    end
    else
    begin
        sSQL:='select Number,Name,Sex,Age,Address,Comment '
              +' from 表1 '+'where '+str+'='+'"'+Edit1.text+'" '
              +'order by Number ASC';
        with DataModule1 do
        begin
          ADOQuery1.Close;
          ADOQuery1.SQL.Clear;
          ADOQuery1.SQL.Add(sSQL);
          ADOQuery1.ExecSQL;
          ADOQuery1.Active:=TRUE;
        end;
    end;
end;

procedure TSearchForm.Button6Click(Sender: TObject);
var sSQL:string;
begin
    ComboBox1.ItemIndex:=-1;
    Edit1.Clear;
    sSQL:='select * from 表1';
    with DataModule1 do
    begin
      ADOQuery1.Close;
      ADOQuery1.SQL.Clear;
      ADOQuery1.SQL.Add(sSQL);
      ADOQuery1.ExecSQL;
      ADOQuery1.Active:=TRUE;
    end;
end;

procedure TSearchForm.DBGrid1CellClick(Column: TColumn);
begin
    Edit2.Text:=DBGrid1.Fields[0].AsString;
    Edit3.Text:=DBGrid1.Fields[1].AsString;
    if DBGrid1.Fields[2].AsString='男' then
        ComboBox2.ItemIndex:=0
    else ComboBox2.ItemIndex:=1;
    Edit5.Text:=DBGrid1.Fields[3].AsString;
    Edit6.Text:=DBGrid1.Fields[4].AsString;
    RichEdit1.Text:=DBGrid1.Fields[5].AsString;
end;

procedure TSearchForm.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
    if not (Key in['0'..'9', #8]) then
    begin
      Key:=#0;
      MessageBeep(1);
    end;
end;

procedure TSearchForm.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
    if(Key<>#8) and (ord(Key)<128) then
    begin
      Key:=#0;
      MessageBeep(1);
    end;
end;

procedure TSearchForm.Edit5KeyPress(Sender: TObject; var Key: Char);
begin
    if not (Key in['0'..'9', #8]) then
    begin
      Key:=#0;
      MessageBeep(1);
    end;
end;

procedure TSearchForm.Button4Click(Sender: TObject);
var sSQL:string;
begin
  if  flag=FALSE then
      ShowMessage('请选择要修改的记录项!')
  else if Edit2.GetTextLen<8 then
  begin
    ShowMessage('请输入8位编号!');
    Edit2.SetFocus;
  end
  else if Edit3.GetTextLen<4 then
  begin
    ShowMessage('请正确输入姓名!');
    Edit3.SetFocus;
  end
  else if (Edit5.Text='') OR ((StrToInt(Edit5.Text)<18)
                      OR (StrToInt(Edit5.Text)>55)) then
  begin
      ShowMessage('请输入18到55之间的年龄!');
      Edit5.SetFocus;
  end
  else  if (DBGrid1.Fields[0].AsString=Edit2.Text) AND change then
          if MessageDlg('是否对人员信息进行修改', mtInformation, mbOKCancel, 0)=1 then
          begin
            sSQL:='update 表1 set Name="'+Edit3.Text+'", Sex="'+ComboBox2.Text
                +'", Age="'+Edit5.Text+'", Address="'+Edit6.Text+'", Comment'
                +'="'+RichEdit1.Text+'" where Number='+'"'+Edit2.Text+'"';
            with DataModule1 do
            begin
              ADOQuery1.Close;
              ADOQuery1.SQL.Clear;
              ADOQuery1.SQL.Add(sSQL);
              ADOQuery1.ExecSQL;
              ADOQuery1.SQL.Clear;
              ADOQuery1.SQL.Add('select Number,Name,Sex,Age,Address,Comment from 表1'
                                +' order by Number ASC');
              ADOQuery1.ExecSQL;
              ADOQuery1.Active:=TRUE;
            end;
            change:=FALSE;
            sSQL:='';
          end;
  if (DBGrid1.Fields[0].AsString<>Edit2.Text) AND change  then
        if MessageDlg('是否改变人员的编号?', mtInformation, mbOKCancel, 0)=1 then
        begin
          try
            sSQL:='insert into 表1 values('+'"'+Edit2.Text+'","'+Edit3.Text+
                  '","'+ComboBox1.Text+'","'+Edit5.Text+'","'+Edit6.Text+
                  '","'+RichEdit1.Text+'",'+'" ")';
            with DataModule1 do
            begin
              ADOQuery1.Close;
              ADOQuery1.SQL.Clear;
              ADOQuery1.SQL.Add(sSQL);
              ADOQuery1.ExecSQL;
              ADOQuery1.SQL.Clear;
              ADOQuery1.SQL.Add('select Number,Name,Sex,Age,Address,Comment from 表1'
                                +' order by Number ASC');
              ADOQuery1.ExecSQL;
              ADOQuery1.Active:=TRUE;
            end;
          except
              with DataModule1 do
              begin
              ADOQuery1.Close;
              ADOQuery1.SQL.Clear;
              ADOQuery1.SQL.Add('select Number,Name,Sex,Age,Address,Comment from 表1'
                                +' order by Number ASC');
              ADOQuery1.ExecSQL;
              ADOQuery1.Active:=TRUE;
              end;
              ShowMessage('编号  '+Edit2.Text+'  已经存在!');
          end;
          change:=FALSE;
          sSQL:='';
        end;
end;

procedure TSearchForm.DBGrid1Enter(Sender: TObject);
begin
  flag:=TRUE;
end;

procedure TSearchForm.Edit2Exit(Sender: TObject);
begin
    if DBGrid1.Fields[0].AsString<>Edit2.Text then
        change:=TRUE;
end;

procedure TSearchForm.Edit3Exit(Sender: TObject);
begin
    if DBGrid1.Fields[1].AsString<>Edit3.Text then
        change:=TRUE;
end;

procedure TSearchForm.ComboBox2Exit(Sender: TObject);
begin
    if DBGrid1.Fields[2].AsString<>ComboBox1.Text then
        change:=TRUE;
end;

procedure TSearchForm.Edit5Exit(Sender: TObject);
begin
    if DBGrid1.Fields[3].AsString<>Edit5.Text then
        change:=TRUE;
end;

procedure TSearchForm.Edit6Exit(Sender: TObject);
begin
    if DBGrid1.Fields[4].AsString<>Edit6.Text then
        change:=TRUE;
end;

procedure TSearchForm.RichEdit1Exit(Sender: TObject);
begin
    if DBGrid1.Fields[5].AsString<>RichEdit1.Text then
        change:=TRUE;
end;

end.

⌨️ 快捷键说明

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