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

📄 sys_sysmenu.pas

📁 一个MRPII系统源代码版本
💻 PAS
📖 第 1 页 / 共 3 页
字号:
              '  PAra6, '+
              '  PAra7, '+
              '  PAra8, '+
              '  PAra9, '+
              '  PAra10) '+
              'Values '+
              '(:SysModuleCode, '+
              ' :PSysMenuCode, '+
              ' :SysMenuCode, '+
              ' :SysMenuName, '+
              ' :FormName, '+
              ' :PAra1, '+
              ' :PAra2, '+
              ' :PAra3, '+
              ' :PAra4, '+
              ' :PAra5, '+
              ' :PAra6, '+
              ' :PAra7, '+
              ' :PAra8, '+
              ' :PAra9, '+
              ' :PAra10)');
      AssignsqlpAra;
      execsql;
    end;
    openqr_menu;
    btn_ok.Enabled :=False;
    btn_Cancel.enabled:=False;
    //以下修改Treeview1并纠正qr_menu的焦点
    if Treeview1.Items.Count=1 then
    begin
      Treeview1.Items.AddChild(Treeview1.Selected,AdoQry_Tmp2.fieldbyname('SysMenuCode').AsString +' '+AdoQry_Tmp2.fieldbyname('SysMenuName').AsString);
      Treeview1.SetFocus;
      Treeview1.Selected.GetNext.Selected :=True;
    end
    else
    begin
      Lc_OldCode:=Trim(Edt_SysMenuCode.text);
      set_Treeview_after_ok;
      AdoQry_Tmp2.locate('SysMenuCode',Lc_OldCode,[]);
    end;
    s:=Treeview1.Selected.Text;
    if  s='Root' then
      setedits(False,False,False)
    else if copy(s,pos(' ',s)+1,1)='-' then
      setedits(False,True,True)
    else
    setedits(False,True,True);
    Treeview1.SetFocus;
    tbsht_general.Show;
    tlbtn_Add.enabled:=False;
    tlbtn_Delete.enabled:=False;
    Edt_SysMenuCode.Enabled:=True;
    Edt_SysMenuCode.setfocus;
    panel1.Visible:=True;
  end;
  refreshedits;
  inherited;
end;

procedure TFrm_Sys_SysMenu.AssignsqlpAra;
begin
  with AdoQry_Tmp1 do
  begin
    if length(Edt_SysMenuCode.Text)=4 then
      Parameters.ParambyName('PSysMenuCode').Value:=''
    else Parameters.ParambyName('PSysMenuCode').Value:=copy(Edt_SysMenuCode.Text,1,length(Trim(Edt_SysMenuCode.text))-2);
    Parameters.ParambyName('SysMenuCode').Value:=Edt_SysMenuCode.text;
    Parameters.ParambyName('SysModuleCode').Value:=Lc_SysModuleCode;
    if not Panel1.Visible then Parameters.ParambyName('SysMenuId').Value:=Lc_SysMenuId;
    Parameters.ParambyName('SysMenuName').Value:=Trim(Edt_SysMenuName.Text);
    Parameters.ParambyName('FormName').Value:=Trim(Edt_FormName.Text)+' ';
    Parameters.ParambyName('pAra1').Value:=edt_1.text+' ';
    Parameters.ParambyName('pAra2').Value:=edt_2.text+' ';
    Parameters.ParambyName('pAra3').Value:=edt_3.text+' ';
    Parameters.ParambyName('pAra4').Value:=edt_4.text+' ';
    Parameters.ParambyName('pAra5').Value:=edt_5.text+' ';
    Parameters.ParambyName('pAra6').Value:=edt_6.text+' ';
    Parameters.ParambyName('pAra7').Value:=edt_7.text+' ';
    Parameters.ParambyName('pAra8').Value:=edt_8.text+' ';
    Parameters.ParambyName('pAra9').Value:=edt_9.text+' ';
    Parameters.ParambyName('pAra10').Value:=edt_10.text+' ';
  end;
end;

procedure TFrm_Sys_SysMenu.tlbtn_DeleteClick(Sender: TObject);
var
  fidstring,Sourceid,s:string;//父id;源id
begin
  if Application.MessageBox('  真的删除吗? ','信息提示',MB_yesno+mb_Iconquestion)=ID_No then
    exit;
  s:=Treeview1.Selected.Text;
  if s='Root' then
  begin
    Application.MessageBox('  系统保留项目,不能删除!  ','错误提示',MB_OK+mb_Iconstop);
    Treeview1.setfocus;
    exit;
  end;
  if Treeview1.Selected.HaSchildren then
  begin
    Application.MessageBox('  还有下级菜单,不能删除!  ','错误提示',MB_OK+mb_Iconstop);
    Treeview1.setfocus;
    exit;
  end;
  with AdoQry_Tmp2 do
  begin
    fidstring:=fieldbyname('PSysMenuCode').asstring;
    Sourceid:=fieldbyname('SysMenuCode').asstring;
  end;
  Changerecdel(fidstring,Sourceid);
  openqr_menu;
  set_Treeview_after_Delete;
  s:=Treeview1.selected.text;
  if s<>'Root'then
  begin
    Lc_OldCode:=GetCode(s);
    AdoQry_Tmp2.locate('SysMenuCode',Lc_OldCode,[]);
    refreshedits;
  end;
  if s='Root' then
    setedits(False,False,False)
  else if copy(s,pos(' ',s)+1,1)='-' then
    setedits(False,True,True)
  else
    setedits(False,True,True);//既没有选中'Root'又没有选中'-'
  if s<>'Root' then
    refreshedits;
  inherited;
end;

procedure TFrm_Sys_SysMenu.tlbtn_expandClick(Sender: TObject);
begin
  if Treeview1.selected<>nil then
    Treeview1.selected.expand(True);
  inherited;
end;

procedure TFrm_Sys_SysMenu.tlbtn_CollApseClick(Sender: TObject);
begin
  if Treeview1.selected<>nil then
    Treeview1.selected.collApse(True);
  inherited;
end;

procedure TFrm_Sys_SysMenu.ChangeID(Sourceid, tArgetid: string;isdelete:boolean);
var
  s:string;//当isdelete为True时,Sourceid的后一个兄弟id
  sqltext:string;
  Sourcelen:string;
begin
  if length(tArgetid)<>4 then
    sqltext:='update SysMenu set '+
                ' SysMenuCode='''+tArgetid+''','+
                ' PSysMenuCode='''+copy(tArgetid,1,length(tArgetid)-2)+''' '+
              ' where SysModuleCode='''+Lc_SysModuleCode+''' '+
                   '  and SysMenuCode='''+Sourceid+''''
  else
    sqltext:='update SysMenu set '+
               '  SysMenuCode='''+tArgetid+''' '+
             ' where SysModuleCode='''+Lc_SysModuleCode+''' '+
                '  and SysMenuCode='''+Sourceid+''' ';
  with AdoQry_Tmp1 do
  begin
    Close;
    sql.clear;
    sql.text:=sqltext;
    execsql;
  end;
  if isdelete then
  begin
    s:=copy(Sourceid,length(Sourceid)-1,2);
    s:=copy(Sourceid,1,length(Sourceid)-2)+
      prefixofstr(inttostr(strtoint(s)+1),'0',2);
  end
  else s:=tArgetid;
  Sourcelen:=inttostr(length(Sourceid)+1);
  sqltext:='update SysMenu set '+
              ' SysMenuCode='''+tArgetid+'''+substring(SysMenuCode,'+Sourcelen+',14),'+
              ' pSysMenuCode='''+tArgetid+'''+substring(pSysMenuCode,'+Sourcelen+',14) '+
            ' where SysModuleCode='''+Lc_SysModuleCode+''' and '+
                   'SysMenuCode<'''+s+''' and SysMenuCode>'''+Sourceid+'''';
  with AdoQry_Tmp1 do
  begin
    Close;
    sql.clear;
    sql.text:=sqltext;
    execsql;
  end;
end;

procedure TFrm_Sys_SysMenu.Addnode(fidstring: string; treenode1: ttreenode);
var
  recCount,i:integer;//记录数
  s:string;
begin
  with AdoQry_tmp2 do
  begin
    First;
    recCount:=0;
    while not eof do
    begin
      inc(recCount);
      next;
    end;
    First;
    for i:=1 to recCount do
    begin
      if fieldbyname('PSysMenuCode').AsString =fidstring then
      begin
        s:=fieldbyname('SysMenuCode').AsString+' '+fieldbyname('SysMenuName').AsString;
        treenode:=Treeview1.Items.Addchild(treenode1,s );
        treenode.SelectedIndex :=1;
        if fieldbyname('SysMenuCode').AsString=Lc_OldCode then
        begin
          node1:=treenode;
          refreshedits;
        end;
        Addnode(fieldbyname('SysMenuCode').asstring,treenode );
      end;
      Next;
    end;
    locate('SysMenuCode',fidstring,[]);
  end;
end;

procedure TFrm_Sys_SysMenu.refreshedits;
begin
  with AdoQry_Tmp2 do
  begin
    Lc_SysMenuId:=fieldbyname('SysMenuId').AsInteger;
    Lc_SysMenuCode:=fieldbyname('SysMenuCode').AsString;
    Edt_SysMenuCode.text:=fieldbyname('SysMenuCode').AsString;
    Edt_FormName.text:=fieldbyname('FormName').AsString;
    Edt_SysMenuName.text:=fieldbyname('SysMenuName').AsString;
    edt_1.text:=fieldbyname('pAra1').asstring;
    edt_2.text:=fieldbyname('pAra2').asstring;
    edt_3.text:=fieldbyname('pAra3').asstring;
    edt_4.text:=fieldbyname('pAra4').asstring;
    edt_5.text:=fieldbyname('pAra5').asstring;
    edt_6.text:=fieldbyname('pAra6').asstring;
    edt_7.text:=fieldbyname('pAra7').asstring;
    edt_8.text:=fieldbyname('pAra8').asstring;
    edt_9.text:=fieldbyname('pAra9').asstring;
    edt_10.text:=fieldbyname('pAra10').asstring;
  end;
end;

procedure TFrm_Sys_SysMenu.CreateTreeview;
var                                                                   
  rootnode:ttreenode;
  Currentid,s:string;
  i,recCount:integer;
begin
  Treeview1.Items.clear;
  rootnode:=Treeview1.Items.Add(nil,'Root');
  rootnode.SelectedIndex :=1;
  with AdoQry_tmp2 do
  begin
    First;
    recCount:=0;
    while not eof do
    begin
      inc(recCount);
      next;
    end;
    First;
    for i:=1 to recCount do
    begin
      if fieldbyname('PSysMenuCode').AsString='' then
      begin
        Currentid:=fieldbyname('SysMenuCode').AsString ;
        s:=Currentid+' '+fieldbyname('SysMenuName').AsString;
        treenode:=Treeview1.Items.Addchild(rootnode,s);
        treenode.SelectedIndex :=1;
        if Currentid=Lc_OldCode then
        begin
         node1:=treenode;
         refreshedits;
        end;
        Addnode(fieldbyname('SysMenuCode').asstring,treenode);
      end;
      locate('SysMenuCode',Currentid,[]);
      next;
    end;
  end;
  btn_ok.Enabled :=False;
  btn_Cancel.enabled:=False;
  tlbtn_Delete.Enabled :=True;
  tlbtn_Add.Enabled :=True;
end;

procedure TFrm_Sys_SysMenu.openqr_menu;
begin
  with AdoQry_Tmp2 do
  begin
    Close;
    sql.clear;
    sql.Add('select * from SysMenu '+
            'where SysModuleCode=:SysModuleCode '+
            'Order by PSysMenuCode,SysMenuCode ');
    Parameters.ParamByName('SysModuleCode').Value:=Lc_SysModuleCode;
    open;
  end;
end;

procedure TFrm_Sys_SysMenu.setedits(setmenuid,setmenuName,setOtherInfo:boolean);
begin
  if not setmenuid then Edt_SysMenuCode.Text:='';
  if not setmenuName then Edt_SysMenuName.Text:='';
  if not setOtherInfo then
  begin
    Edt_FormName.Text:='';
    Edt_1.Text:='';
    Edt_2.Text:='';
    Edt_3.Text:='';
    Edt_4.Text:='';
    Edt_5.Text:='';
    Edt_6.Text:='';
    Edt_7.Text:='';
    Edt_8.Text:='';
    Edt_9.Text:='';
    Edt_10.Text:='';
  end;

  Edt_SysMenuCode.Enabled:=setmenuid;
  Edt_SysMenuName.Enabled:=setmenuName;
  Edt_FormName.Enabled:=setOtherInfo;
end;

procedure TFrm_Sys_SysMenu.delcurrec(sqlstring:string);
begin
  with AdoQry_Tmp1 do
  begin
    Close;
    sql.clear;
    sql.Add(sqlstring);
//    ParambyName('moduleid').asstring:=moduleid;
//    ParambyName('id').asstring:=Trim(Edt_SysMenuCode.text);
    execsql;
  end;
end;

procedure TFrm_Sys_SysMenu.Changerecok(fidstring,Sourceid: string);
var
  i,Count:integer;
  s,tArgetid:string;
  brOtherBack:Array[1..99] of string;
begin
  with AdoQry_Tmp2 do
  begin
    Count:=0;
    First;
    while not eof do
    begin
      if (fieldbyname('PSysMenuCode').AsString =fidstring)and
         (fieldbyname('SysMenuCode').AsString>=Sourceid) then
      begin
        Inc(Count);
        brOtherBack[Count]:=fieldbyname('SysMenuCode').AsString;
      end;
      next;
    end;
    for i:=Count downto 1 do
    begin
      Sourceid:=brOtherBack[i];

⌨️ 快捷键说明

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