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

📄 ygdm.pas

📁 已经给出使用的每个SQL Server数据库
💻 PAS
字号:
unit ygdm;
             
interface

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

type
  Tf_ygdm = class(Tf_fram)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    ygdm: TEdit;
    ygmc: TEdit;
    male: TRadioButton;
    female: TRadioButton;
    DateTimePicker1: TDateTimePicker;
    gj: TEdit;
    sf: TEdit;
    sx: TEdit;
    dz: TEdit;
    zw: TComboBox;
    chb: TListBox;
    bmmc: TComboBox;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    procedure ygdmKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure gjKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure sfKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure sxKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure chbDblClick(Sender: TObject);
    procedure chbKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure B1Click(Sender: TObject);
    procedure B2Click(Sender: TObject);
    procedure B3Click(Sender: TObject);
    procedure B4Click(Sender: TObject);
    procedure B5Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure B9Click(Sender: TObject);
    procedure B10Click(Sender: TObject);
    procedure B11Click(Sender: TObject);
    procedure B12Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure chbExit(Sender: TObject);
    
  private
    { Private declarations }
  public
    Procedure FindNext;
    Procedure EditValue;//将记录集当前数据赋给编辑框
    Procedure SelectTable(TableName: String);
    Procedure SetListPos(WinControl: TWinControl);
    Procedure ClearEdit;
    Function EditIsNull: Boolean;
    { Public declarations }
  end;

var
  f_ygdm: Tf_ygdm;

implementation
  uses DataModal;
{$R *.dfm}

{ Tf_ygdm }

procedure Tf_ygdm.FindNext;
begin
  if FindNextControl(ActiveControl,True,True,False)is TEdit then
    TEdit(FindNextControl(ActiveControl,True,True,False)).SetFocus
  else if FindNextControl(ActiveControl,True,True,False)is TDateTimePicker then
    TDateTimePicker(FindNextControl(ActiveControl,True,True,False)).SetFocus
  else if FindNextControl(ActiveControl,True,True,False)is TRadioButton then
    TRadioButton(FindNextControl(ActiveControl,True,True,False)).SetFocus
  else if FindNextControl(ActiveControl,True,True,False)is TComboBox then
    TComboBox(FindNextControl(ActiveControl,True,True,False)).SetFocus;  
end;

procedure Tf_ygdm.SelectTable(TableName: String);
begin
  with Data.Query1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select * from '+ TableName);
    Open;
    if RecordCount>0 then
    begin
      chb.Clear;
      while Not Eof do
      begin
        chb.Items.Add(Fields[0].AsString);
        Next;
      end;
    end;
  end;
end;

procedure Tf_ygdm.ygdmKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = vk_Return then
    FindNext;
end;

procedure Tf_ygdm.gjKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  ygdm.OnKeyDown(Sender,key,shift);
  if Key = vk_Next then
  begin
    SelectTable('t_state');
    chb.Tag := 1;
    SetListPos(gj);
  end;
end;

procedure Tf_ygdm.SetListPos(WinControl: TWinControl);
begin
  chb.Top := WinControl.Top;
  chb.Left := WinControl.Left+(WinControl.Width-chb.Width);
  chb.Visible := True;
  chb.SetFocus;
end;

procedure Tf_ygdm.sfKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  ygdm.OnKeyDown(Sender,key,shift);
  if Key = vk_Next then
  begin
    SelectTable('t_sf');
    chb.Tag := 2;
    SetListPos(sf);
  end;

end;

procedure Tf_ygdm.sxKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  ygdm.OnKeyDown(Sender,key,shift);
  if Key = vk_Next then
  begin
    SelectTable('t_city');
    chb.Tag := 3;
    SetListPos(sx);
  end;
end;

procedure Tf_ygdm.chbDblClick(Sender: TObject);
var
  Key: Word;
begin
  inherited;
  Key:= vk_ReTurn;
  chb.OnKeyDown(nil,Key,[ssLeft]);
end;

procedure Tf_ygdm.ClearEdit;
var
  Num: Integer;
begin
  For Num := 0 to Panel1.ControlCount-1 do
    if Panel1.Controls[Num]is TEdit then
      TEdit(Panel1.Controls[Num]).Clear;
end;
procedure Tf_ygdm.chbKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  inherited;
  if Key = vk_Return then
  begin
    Case chb.Tag of
      1: begin
           gj.Text := gj.Text+ chb.Items[chb.ItemIndex];
           gj.SetFocus;
         end;
      2: 
         begin
           sf.Text := sf.Text+chb.Items[chb.ItemIndex];
           sf.SetFocus;
         end;
      3: begin
           sx.Text := sx.Text+chb.Items[chb.ItemIndex];
           sx.SetFocus;
         end;
    end;
    chb.Visible := False;
  end;
end;

procedure Tf_ygdm.B1Click(Sender: TObject);
begin
  inherited;
  DateTimePicker1.DateTime := Now;
  ClearEdit;
  ygdm.SetFocus;
  B3.Enabled := True;//保存按钮可用
  B2.Enabled := False;//修改按钮不可用 
  B5.Enabled := False; // 删除按钮不可用
end;

function Tf_ygdm.EditIsNull: Boolean;
var
  i: Integer;
begin
  Result := False;
  For i :=0 to Panel1.ControlCount-1 do
    if Panel1.Controls[i]is TEdit then
      //在保存数据时电话号码与传真可以为空
      if (TEdit(Panel1.Controls[i]).TabOrder<>6)and(TEdit(Panel1.Controls[i]).TabOrder<>7)
        and(Trim(TEdit(Panel1.Controls[i]).Text)='') then
      begin
        Result := True;
        Exit;
      end;
end;

procedure Tf_ygdm.B2Click(Sender: TObject);
begin
  inherited;
  if Application.MessageBox('确实要修改当前记录吗?','提示',mb_YesNo)=ID_Yes then
  begin
    if (EditIsNull = False)and(Trim(zw.Text)<>'')and(Trim(bmmc.Text)<>'') then
    begin
      Try
        with Data.Query1 do
        begin
          Close;
          SQL.Clear;
          SQL.Add('update t_employee set ygdm = :a,ygmc = :b,xb = :c,bmmc = :d,zwmc = :e,pyrq =:f,gj = :g,sf = :h,sx = :i,dz = :j where ygdm = :k');
          ParamByName('a').AsString := Trim(ygdm.Text);
          ParamByName('b').AsString := Trim(ygmc.Text);
          if male.Checked then
            ParamByName('c').AsInteger := 0
          else
            ParamByName('c').AsInteger := 1;
          ParamByName('d').AsString := Trim(bmmc.Text);
          ParamByName('e').AsString := Trim(zw.Text);
          ParamByName('f').asDateTime := DateTimePicker1.Date;
          ParamByName('g').AsString := Trim(gj.Text);  
          ParamByName('h').AsString := Trim(sf.Text); 
          ParamByName('i').AsString := Trim(sx.Text);
          ParamByName('j').AsString := Trim(dz.Text);
          ParamByName('k').AsString := Trim(Data.Query2.FieldByName('ygdm').AsString);
          ExecSQL;
        end;  
        Application.MessageBox('修改成功.','提示',64);
        B4.OnClick(Sender);
      Except
        Application.MessageBox('修改失败.','提示',64);
      End;
    end
    else
      Application.MessageBox('数据项不能为空.','提示',64);
  end;
end;

procedure Tf_ygdm.B3Click(Sender: TObject);
begin
  inherited;
  if (EditIsNull = False)and(Trim(zw.Text)<>'')and(Trim(bmmc.Text)<>'') then
    Try
      With Data.Query1 do
      begin
        Close;
        SQL.Clear;
        SQL.Add('insert t_employee values(:a,:b,:c,:d,:e,:f,:g,:h,:i,:j)');
        ParamByName('a').AsString := Trim(ygdm.Text);
        ParamByName('b').AsString := Trim(ygmc.Text);
        if Male.Checked then
          ParamByName('c').AsInteger := 0
        else
          ParamByName('c').AsInteger := 1;
        ParamByName('d').AsString := Trim(bmmc.Text);
        ParamByName('e').AsString := Trim(zw.Text);
        ParamByName('f').asDateTime := DateTimePicker1.Date;
        ParamByName('g').AsString := Trim(gj.Text);  
        ParamByName('h').AsString := Trim(sf.Text); 
        ParamByName('i').AsString := Trim(sx.Text);
        ParamByName('j').AsString := Trim(dz.Text);
        ExecSQL;
      end;
      Application.MessageBox('操作成功.','提示',64);
      B4.OnClick(Sender);
      ClearEdit;
      B3.Enabled := False;
    Except
      Application.MessageBox('操作失败.','提示',64);
    End
  Else
  begin
    Application.MessageBox('数据项不能为空.','提示',64);
  end;
end;

procedure Tf_ygdm.B4Click(Sender: TObject);
begin
  inherited;
  B3.Enabled := False;//保存按钮不可用
  With Data.Query2 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select * from t_employee');
    Open;
    if RecordCount>0 then
    begin
      B2.Enabled := True;
      B5.Enabled := True;
      B9.Enabled := True;
      B10.Enabled := True;
      B11.Enabled := True;
      B12.Enabled := True;
      EditValue;
    end
    else
    begin
      B2.Enabled := False;//修改按钮不可用
      B5.Enabled := False;
      DateTimePicker1.DateTime := Now;
    end;
  end;
end;

procedure Tf_ygdm.EditValue;
begin
  with Data.Query2 do
  begin
    ygdm.Text:= FieldByName('ygdm').AsString;
    ygmc.Text:= FieldByName('ygmc').AsString;
    if FieldByName('xb').AsInteger = 0 then
      Male.Checked := True
    else
      Female.Checked := True;
    bmmc.ItemIndex := bmmc.Items.IndexOf(Trim(FieldByName('bmmc').AsString));
    zw.ItemIndex := zw.Items.IndexOf(Trim(FieldByName('zwmc').AsString));
    DateTimePicker1.DateTime := FieldByName('pyrq').AsDateTime;
    gj.Text:= FieldByName('gj').AsString;
    sf.Text:= FieldByName('sf').AsString;
    sx.Text:= FieldByName('sx').AsString;
    dz.Text:= FieldByName('dz').AsString;
  end;
end;

procedure Tf_ygdm.B5Click(Sender: TObject);
begin
  inherited;
  if Application.MessageBox('确实要删除当前记录吗?','提示',mb_YesNo)=ID_Yes then
    if Data.Query2.RecordCount>0 then
    begin
      Data.Query2.Delete;
      B4.OnClick(Sender);
    end;
end;

procedure Tf_ygdm.FormShow(Sender: TObject);
begin
  inherited;
  Data.Query2.RequestLive := True; 
  DateTimePicker1.Date := Now;
  with Data.Query1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select  zwmc from t_zwdm');
    Open;
  end;
  zw.Clear;
  if Data.Query1.RecordCount>0 then
    while Not Data.Query1.Eof do
    begin
      zw.Items.Add(Data.Query1.Fields[0].AsString);
      Data.Query1.Next;
    end;
  bmmc.Clear;
  with Data.Query1  do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select  bmmc from t_bmdm');
    Open
  end;
  if Data.Query1.RecordCount>0 then
    while Not Data.Query1.Eof do
    begin
      bmmc.Items.Add(Data.Query1.Fields[0].AsString);
      Data.Query1.Next;
    end;
  zw.ItemIndex := 0;
  bmmc.ItemIndex := 0;
  B4.OnClick(Sender);  
end;

procedure Tf_ygdm.B9Click(Sender: TObject);
begin
  inherited;
  Data.Query2.First;
  B2.Enabled := True;
  B5.Enabled := True;
  B3.Enabled := False;
  B9.Enabled := False;
  B10.Enabled := False;
  B11.Enabled := True;
  B12.Enabled := True;
  EditValue;
end;

procedure Tf_ygdm.B10Click(Sender: TObject);
begin
  inherited;
  Data.Query2.Prior;
  B2.Enabled := True;
  B5.Enabled := True;
  B3.Enabled := False;
  B11.Enabled := True;
  B12.Enabled := True;
  if Data.Query2.Bof = True then
  begin
    B9.Enabled := False;
    B10.Enabled := False;
  end;
  EditValue;
end;

procedure Tf_ygdm.B11Click(Sender: TObject);
begin
  inherited;
  Data.Query2.Next;
  B2.Enabled := True;
  B5.Enabled := True;
  B3.Enabled := False;
  B9.Enabled := True;
  B10.Enabled := True;
  if Data.Query2.Eof = True then
  begin
    B11.Enabled := False;
    B12.Enabled := False;
  end;
  EditValue;
end;

procedure Tf_ygdm.B12Click(Sender: TObject);
begin
  inherited;
  Data.Query2.Last;
  B2.Enabled := True;
  B3.Enabled := False;
  B5.Enabled := True;
  B9.Enabled := True;
  B10.Enabled := True;
  B11.Enabled := False;
  B12.Enabled := False;
  EditValue;
end;

procedure Tf_ygdm.Button1Click(Sender: TObject);
var
  Key: Word;
begin
  inherited;
  Key := vk_Next;
  gj.OnKeyDown(Nil,Key,[ssLeft]);
end;

procedure Tf_ygdm.Button2Click(Sender: TObject);
var
  Key: Word;
begin
  inherited;
  Key := vk_Next;
  sf.OnKeyDown(Nil,Key,[ssLeft]);
end;

procedure Tf_ygdm.Button3Click(Sender: TObject);
var
  Key: Word;
begin
  inherited;
  Key := vk_Next;
  sx.OnKeyDown(Nil,Key,[ssLeft]);
end;

procedure Tf_ygdm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  inherited;
  Data.Query2.RequestLive := False;
end;

procedure Tf_ygdm.chbExit(Sender: TObject);
begin
  inherited;
  chb.Visible := False;
end;

end.

⌨️ 快捷键说明

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