formcomrec.pas

来自「pasa人力资源考勤管理系统」· PAS 代码 · 共 674 行 · 第 1/2 页

PAS
674
字号
var i:integer;
begin
  for i:=1 to fcount do
   if dbgrid1.SelectedIndex =findex[i] then
    begin
     fsort[i]:='ASC';
     exit;
    end;
  if fcount<5 then
   begin
    fcount:=fcount+1;
    findex[fcount]:=dbgrid1.selectedindex;
    fsort[fcount]:='ASC';
    dbgrid1.Columns[dbgrid1.selectedindex].Color :=clgray;
   end;
end;

procedure Tformcomrecorder.N2Click(Sender: TObject);
var i:integer;
begin
  for i:=1 to fcount do
   if dbgrid1.SelectedIndex =findex[i] then
    begin
     fsort[i]:='DESC';
     exit;
    end;
  if fcount<5 then
   begin
    fcount:=fcount+1;
    findex[fcount]:=dbgrid1.selectedindex;
    fsort[fcount]:='DESC';
    dbgrid1.Columns[dbgrid1.selectedindex].Color :=clgray;
   end;
end;

procedure Tformcomrecorder.N4Click(Sender: TObject);
var i:1..5;
   sortexp:string;
begin
  sortexp:='';
  for i:=1 to fcount do
  begin
   if dbgrid1.Columns[findex[i]].Color=clgray then
    begin
     sortexp :=sortexp+dbgrid1.Columns[findex[i]].FieldName+' '+fsort[i];
     if i<fcount then sortexp:=sortexp+',';
    end;
  end;
  if sortexp<>'' then datamod.ADOcomrecorder.Sort :=sortexp;
end;

procedure Tformcomrecorder.N3Click(Sender: TObject);
var i:1..5;
begin
  for i:=1 to fcount do
    dbgrid1.Columns[findex[i]].Color :=clwindow;
  fcount:=0;
end;

procedure Tformcomrecorder.Edit1Exit(Sender: TObject);
begin
  with datamod.ADOQuery1 do
  begin
    sql.clear;
    sql.Add ('select codename,memo from pub06010 where comcode='''+edit1.text+'''');
    open;
    while not eof do
    begin
      if (fieldbyname('codename').asstring<>null) and (fieldbyname('codename').asstring<>'') then
       begin
        edit2.text:=fieldbyname('codename').asstring;
        edit3.text:=fieldbyname('memo').asstring;
        break;
       end;
      next;
    end;
    close;
  end;
end;

procedure Tformcomrecorder.ToolButton4Click(Sender: TObject);
begin
  close;
end;

procedure Tformcomrecorder.tbndelmanyClick(Sender: TObject);
var  i:integer;
    bookmarklist:Tbookmarklist;
    bookmark:Tbookmarkstr;
begin
   if application.messagebox('您确定要删除这些记录吗?','电脑提示',mb_okcancel)<>idok then
     exit;
   if dbgrid1.SelectedRows.Count >0 then   //多笔记录删除
    begin
     bookmark:=datamod.adocomrecorder.bookmark;
     try
       bookmarklist:=dbgrid1.SelectedRows;
       for i:=0 to bookmarklist.Count-1 do
       begin
        datamod.ADOcomrecorder.bookmark:=bookmarklist[i];
        datamod.ADOcomrecorder.Delete;
       end;
     finally
      datamod.ADOcomrecorder.bookmark:=Bookmark;
     end
    end
   else
     datamod.ADOcomrecorder.Delete;    //单笔删除
   datamod.ADOcomrecorder.Refresh;
end;

procedure Tformcomrecorder.tbnfindClick(Sender: TObject);
begin
  findrecorder(datamod.ADOcomrecorder,'Adocomrecorder','pub06010');
end;

procedure Tformcomrecorder.CheckBox1Click(Sender: TObject);
begin
  if checkbox1.Checked then
   begin
     dbedit1.Enabled :=false;
     dbedit2.Enabled :=false;
     dbedit3.Enabled :=false;
     dbedit4.Enabled :=false;
     dbedit5.Enabled :=false;
     dbedit6.Enabled :=false;
     panel3.visible:=true;
   end
  else begin
     dbedit1.Enabled :=true;
     dbedit2.Enabled :=true;
     dbedit3.Enabled :=true;
     dbedit4.Enabled :=true;
     dbedit5.Enabled :=true;
     dbedit6.Enabled :=true;
     panel3.Visible :=false;
  end;
end;

procedure Tformcomrecorder.ToolButton5Click(Sender: TObject);
begin
  if not toolbutton5.Down then
   begin
    toolbutton5.Hint :='显示有多种行事历代码';
    panel2.Visible :=true;
    dbgrid1.DataSource :=datamod.dscomrecorder;
    dbgrid1.Align :=alclient;
    splitter2.Visible :=false;
    dbgrid2.Visible :=false;
    if checkbox1.Checked then
      panel3.Visible :=true;
    splitter1.Visible :=true;  
    dbnavigator2.Enabled :=true;
    dbnavigator2.DataSource:=DataMod.Dscomrecorder;
    tbndelmany.Enabled :=true;
    tbnsort.Enabled :=true;
    tbnfind.Enabled :=true;
   end
  else begin
    toolbutton5.Hint :='还原窗体界面';
    adom.close;
    adom.open;
    adod.close;
    adod.Open;
    dbgrid1.Datasource :=dsm;
    dbgrid1.Align :=altop;
    splitter2.align:=altop;
    splitter2.Visible :=true;
    dbgrid2.Align :=alclient;
    dbgrid2.Visible :=true;
    panel2.Visible :=false;
    panel3.visible :=false;
    splitter1.Visible :=false;
    //dbnavigator2.Enabled :=false;
    dbnavigator2.DataSource:=dsm;
    tbndelmany.Enabled :=false;
    tbnsort.Enabled :=false;
    tbnfind.Enabled :=false;
  end;
end;

procedure Tformcomrecorder.FormCreate(Sender: TObject);
begin
  //adom.Open;
  //adod.Open;
end;

procedure Tformcomrecorder.tbnsortClick(Sender: TObject);
var i:1..5;
begin
  if manyfield then
   begin
     manyfield:=false;
     tbnsort.hint:='设定多字段排序';
     popupmenu1.Items[0].Enabled :=false;
     popupmenu1.Items[1].Enabled :=false;
     popupmenu1.Items[2].Enabled :=false;
     popupmenu1.Items[3].Enabled :=false;
   end
  else begin
    manyfield:=true;
    tbnsort.hint:='取消多字段排序'; //说明现在dbgrid1正处于多字段排序中
    f:='';
    popupmenu1.Items[0].Enabled :=true;
    popupmenu1.Items[1].Enabled :=true;
    popupmenu1.Items[2].Enabled :=true;
    popupmenu1.Items[3].Enabled :=true;
    fcount:=0;
    for i:=1 to 5 do
     begin
      findex[i]:=0;
      fsort[i]:='';
     end;
  end;
end;

procedure Tformcomrecorder.DBEdit1Exit(Sender: TObject);
begin
  with datamod.ADOQuery1 do
  begin
    sql.clear;
    sql.Add ('select distinct(codename) from pub06010 where comcode='''+dbedit1.text+''' ');
    open;
    if not eof then
     begin
      datamod.ADOcomrecorder.edit;
      datamod.adocomrecorder.fieldbyname('codename').asstring:=fieldbyname('codename').asstring;
     end;
    close;
  end;
end;

procedure Tformcomrecorder.DBEdit1Change(Sender: TObject);
begin
  with datamod.ADOQuery1 do
  begin
    sql.clear;
    sql.Add ('select distinct(codename) from pub06010 where comcode='''+dbedit1.text+''' ');
    open;
    if not eof then
     begin
      if (datamod.adocomrecorder.state=dsinsert) or (datamod.adocomrecorder.state=dsedit) then
      datamod.adocomrecorder.fieldbyname('codename').asstring:=fieldbyname('codename').asstring;
     end;  
    close;
  end;
end;
//输入日期时,算出星期几
procedure Tformcomrecorder.DBEdit2Exit(Sender: TObject);
begin
  if isdate(dbedit2.text) then
   begin
    MonthCalendar1.date:=strtodate(dbedit2.text);
    MonthCalendar1.onclick(sender);
   end
  else
    showmessage('对不起,不是正确的日期,存档时可能会出错');
end;

procedure Tformcomrecorder.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key=VK_F1 then
      begin
        //showmessage('ok!')
     //MessageDlg(Key + ' has been pressed', mtInformation, [mbOK], 0);
      Application.HelpFile :=Extractfilepath(application.ExeName)+ 'help\pasahelp.hlp';
      application.HelpJump('SHM_CONTENTS0050');
    end;
end;

procedure Tformcomrecorder.Button1Click(Sender: TObject);

var s1,s2,s,fmat1:string;
begin
//with datamod do
//begin
  if fmat='/' then
    fmat1:='/  /';
  if fmat='-' then
    fmat1:='-  -';
  if trim(edit4.text)<>'' then
     s1:='(comcode='''+edit4.text+''' ) ';
  if trim(maskedit4.text)<>fmat1 then
    if (not isdate(maskedit3.Text)) or (not isdate(maskedit4.text)) then
    begin
       Application.MessageBox('对不起,您输入的不是有效日期','Warning',mb_ok+mb_iconwarning);
       maskedit3.SetFocus;
       exit;
    end
    else if maskedit4.text<maskedit3.text then
    begin
    application.messagebox('结束日期不能小於开始日期','warning',mb_ok+mb_iconwarning);
    maskedit4.setfocus;
    exit;
    end else
    begin
    s2:='(comdate<='''+maskedit4.text+''' and comdate>='''+maskedit3.text+''') ';
    end;
     if s1<>'' then
     if s2<>'' then s:=s1+' and '+s2
     else s:=s1
  else if s2<>'' then s:=s2;
  if s<>'' then
  begin
 
    datamod.adocomrecorder.close;
    datamod.adocomrecorder.commandtext:='select * from pub06010 where '+s+' ';
    datamod.adocomrecorder.open;

  end;
end;
//end;


procedure Tformcomrecorder.ToolButton1Click(Sender: TObject);
begin
    datamod.adocomrecorder.close;
    datamod.adocomrecorder.commandtext:='select * from pub06010 ';
    datamod.adocomrecorder.open;
end;

procedure Tformcomrecorder.AdomBeforeDelete(DataSet: TDataSet);
begin
 if application.MessageBox(pchar('确定要删除'+adom.fieldbyname('comcode').asstring),'提示',mb_okcancel+mb_iconwarning)=idok then
 begin
   adoquery1.Close;
   adoquery1.SQL.Clear;
   adoquery1.SQL.Text:='delete pub06010 where comcode='''+adom.fieldbyname('comcode').asstring+'''';
   adoquery1.ExecSQL;
 end
 else
   adom.Cancel;
end;

end.

⌨️ 快捷键说明

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