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

📄 unsettabledetail.pas

📁 本产品是开发LISTVIEW相关功能的可定制产品
💻 PAS
📖 第 1 页 / 共 2 页
字号:
  Query1.Close;
  Query1.Open;
  if ((i<>0) and (Query1.Active)) then
  begin
       while ((not Query1.eof) And (Query1.FieldByName('TABLEDETAILID').AsInteger<>i))do
             Query1.next;
  end;

except
       on e:Exception do  HandleException(e);
end;
end;

function TfrmTableDetail.CheckInfoValidate:Boolean;
begin
  result := True;
  if Edit1.Text = '' then result := false;
  if Edit2.Text = '' then result := false;
//  if Edit3.Text = '' then Result := False;//应该可以允许为空白
  if Edit1.Text = '' then result := false;
  if SpinEdit1.Value = 0 then Result := False;
end;

procedure TfrmTableDetail.spPost2Click(Sender: TObject);
var i:integer;
begin
try
  i:=0;
  if not CheckInfoValidate then
    begin
      MessageDlg('    输入信息不全,请重新输入!',mtWarning ,[mbYes] ,0);
      exit;
    end;

  with CDM.sqlExecute do
  begin
    if opState=esAppend then
    begin
      if not Query1.Active then
         Query1.Active := True;
      If Query1.Locate('FORMCAPTION;CAPTION;PRINTCAPTION;COLUMNNAME', VarArrayOf([COMBOBOX1.Text, EDIT1.Text,EDIT2.Text,EDIT3.Text]),[])Then
         begin
            ShowMessage('    您需要录入的打印定制资料已经存在,请重新输入!');
            Exit;
         end
      Else
         begin
              SQL.Clear;
              SQL.Add('INSERT INTO SFRJTABLEDETAIL(FORMCAPTION,CAPTION,PRINTCAPTION,COLUMNNAME,WIDTH)'+
                            ' VALUES(:FORMCAPTION,:CAPTION,:PRINTCAPTION,:COLUMNNAME,:WIDTH)');
              ParamByName('FORMCAPTION').AsString := ComboBox1.Text;
              ParamByName('CAPTION').AsString := Edit1.Text;
              ParamByName('PRINTCAPTION').AsString := Edit2.Text;
              ParamByName('COLUMNNAME').AsString := Edit3.Text;
              ParamByName('WIDTH').AsInteger := SpinEdit1.Value;
              ExecSQL;
              ClearDatas;//清除显示数据
            end;
    end;
    if opState=esEdit then
    begin
          i:=Query1.FieldByName('TABLEDETAILID').AsInteger;
          if not Query1.Active then
               Query1.Active := True;
//          If Query1.Locate('FORMCAPTION;CAPTION;PRINTCAPTION;COLUMNNAME', VarArrayOf([Query1.FieldByName('FORMCAPTION').AsString, Query1.FieldByName('CAPTION').AsString,Query1.FieldByName('PRINTCAPTION').AsString,Query1.FieldByName('COLUMNNAME').AsString]),[])Then
          If ((Query1.Locate('FORMCAPTION;CAPTION;PRINTCAPTION;COLUMNNAME;WIDTH', VarArrayOf([COMBOBOX1.Text, EDIT1.Text,EDIT2.Text,EDIT3.Text,SpinEdit1.Value]),[])) And (Query1.FieldByName('TABLEDETAILID').AsInteger<>i)) Then
          begin
                ShowMessage('    您需要录入打印定义已经存在,请重新输入!');
                Exit;
          end
          else
              begin
                  SQL.Clear;
                  SQL.Add('UPDATE SFRJTABLEDETAIL SET CAPTION=:CAPTION ,PRINTCAPTION=:PRINTCAPTION ,COLUMNNAME=:COLUMNNAME ,WIDTH=:WIDTH  where FORMCAPTION=:FORMCAPTION AND CAPTION=:CAPTION1 AND PRINTCAPTION=:PRINTCAPTION1 AND COLUMNNAME=:COLUMNNAME1');

              end;
        ParamByName('FORMCAPTION').AsString := ComboBox1.Text;
        ParamByName('CAPTION').AsString := Edit1.Text;
        ParamByName('PRINTCAPTION').AsString :=  Edit2.Text;
        ParamByName('COLUMNNAME').AsString := Edit3.Text;
        ParamByName('WIDTH').AsInteger := SpinEdit1.value;
        ParamByName('CAPTION1').AsString := Query1.FieldByName('CAPTION').AsString;
        ParamByName('PRINTCAPTION1').AsString := Query1.FieldByName('PRINTCAPTION').AsString;
        ParamByName('COLUMNNAME1').AsString := Query1.FieldByName('COLUMNNAME').AsString;
        ExecSQL;
    end;

  end;

  spRefreshClick(Sender);
  if opState=esAppend then
    if Query1.Active then
       Query1.Last;
  if opState=esEdit then
    if Query1.Active then
    begin
       while ((not Query1.eof) And (Query1.FieldByName('TABLEDETAILID').AsInteger<>i))do
             Query1.next;
    end;
  opState := esBrowse;
  OldFormName:=ComboBox1.Text;
except
       on e:Exception do  HandleException(e);
end;
spDel.Visible:=False;
N6.Visible:=False;

end;

procedure TfrmTableDetail.DBGrid1DblClick(Sender: TObject);
begin
  if (Query1.Active) and
     (Query1.FieldByName('FORMCAPTION').AsString <> '') then
    opState := esEdit
  else
    opState := esAppend;
end;

procedure TfrmTableDetail.spFisrtClick(Sender: TObject);
begin
    if Query1.Active then
        Query1.First;
end;

procedure TfrmTableDetail.HandleException(E:Exception);
var tmpStr : string;
begin
  if e is EDBEngineError then
    begin
      tmpStr := '数据库连接错误:';
    end
  else
  if e is EDataBaseError then
    begin
      tmpStr := '数据库操作错误:';
    end
  else
    tmpStr := '运行中发生错误:';
  //将错误信息显示到状态栏中
  tmpStr := DateTimeToStr(now) + ' '+ tmpStr + e.Message;
  spDispInfo.Panels.Items[2].Text := tmpStr;
end;

procedure TfrmTableDetail.Panel1DblClick(Sender: TObject);
begin
    spDel.Visible:=True;
    N6.Visible:=True;

end;

procedure TfrmTableDetail.ComboBox2Click(Sender: TObject);
begin
    try
    begin
      Query1.Close;
      Query1.SQL.Clear;
      if Combobox2.Text<>'所有窗体报表项'then
         Query1.SQL.Add('SELECT  * FROM SFRJTABLEDETAIL A WHERE FORMCAPTION='''+Combobox2.Text+''' ORDER BY TABLEDETAILID')
      else
         Query1.SQL.Add('SELECT  * FROM SFRJTABLEDETAIL A ORDER BY TABLEDETAILID');
      Query1.Open;
      Query1.First;
    end;
    Except;
    end;
end;

procedure TfrmTableDetail.N16Click(Sender: TObject);
begin
   if N16.Checked=False then
   begin
      N16.Checked:=True;
      Label5.Visible:=True;
      Combobox2.Visible:=True;
   end
   else
   begin
      N16.Checked:=False;
      Label5.Visible:=False;
      Combobox2.Visible:=False;
   end;

end;

procedure TfrmTableDetail.N18Click(Sender: TObject);
begin
  try
  begin
    Query1.Close;
    Query1.SQL.Clear;
    if Combobox2.Text<>'所有窗体报表项'then
       Query1.SQL.Add('SELECT  * FROM SFRJTABLEDETAIL A WHERE FORMCAPTION='''+Combobox2.Text+''' ORDER BY FORMCAPTION')
    else
       Query1.SQL.Add('SELECT  * FROM SFRJTABLEDETAIL A ORDER BY FORMCAPTION');
    Query1.Open;
    Query1.First;
  end;
  Except;
  end;
end;

procedure TfrmTableDetail.N19Click(Sender: TObject);
begin
  try
  begin
    Query1.Close;
    Query1.SQL.Clear;
    if Combobox2.Text<>'所有窗体报表项'then
       Query1.SQL.Add('SELECT  * FROM SFRJTABLEDETAIL A WHERE FORMCAPTION='''+Combobox2.Text+''' ORDER BY WIDTH')
    else
       Query1.SQL.Add('SELECT  * FROM SFRJTABLEDETAIL A ORDER BY WIDTH');
    Query1.Open;
    Query1.First;
  end;
  Except;
  end;
end;

procedure TfrmTableDetail.FormShow(Sender: TObject);
begin
    spRefresh.Click;
end;

procedure TfrmTableDetail.DBGrid1TitleClick(Column: TColumn);
begin
    if Column.Title.Caption ='流水序号' then  spRefresh.Click;
    if Column.Title.Caption ='窗体名称' then  N18.Click;
    if Column.Title.Caption ='打印列宽度' then  N19.Click;
end;

procedure TfrmTableDetail.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then
  begin
    Key := #0;
    Perform(CM_DIALOGKEY, VK_TAB, 0);
  end;

end;

procedure TfrmTableDetail.DBGrid1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if Not Query1.Eof then
  begin
      ComboBox1.Text := Query1.FieldByName('FORMCAPTION').AsString;
      Edit1.Text := Query1.FieldByName('CAPTION').AsString;
      Edit2.Text := Query1.FieldByName('PRINTCAPTION').AsString;
      Edit3.Text := Query1.FieldByName('COLUMNNAME').AsString;
      SpinEdit1.value := Query1.FieldByName('WIDTH').AsInteger;
      ComboBox3.ItemIndex := Query1.FieldByName('DATATYPE').AsInteger;
      SpinEdit2.value := Query1.FieldByName('INARYSERIALID').AsInteger;
      
  end;
end;

procedure TfrmTableDetail.DBGrid1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Not Query1.Eof then
  begin
      ComboBox1.Text := Query1.FieldByName('FORMCAPTION').AsString;
      Edit1.Text := Query1.FieldByName('CAPTION').AsString;
      Edit2.Text := Query1.FieldByName('PRINTCAPTION').AsString;
      Edit3.Text := Query1.FieldByName('COLUMNNAME').AsString;
      SpinEdit1.value := Query1.FieldByName('WIDTH').AsInteger;
      ComboBox3.ItemIndex := Query1.FieldByName('DATATYPE').AsInteger;
      SpinEdit2.value := Query1.FieldByName('INARYSERIALID').AsInteger;
  end;

end;

procedure TfrmTableDetail.spRefresh1Click(Sender: TObject);
begin
  try
  //  i:=Query1.FieldByName('TABLEDETAILID').AsInteger;
    try
    begin
      Query1.Close;
      Query1.SQL.Clear;
      if Combobox2.Text<>'所有窗体报表项'then
         Query1.SQL.Add('SELECT  * FROM SFRJTABLEDETAIL A WHERE FORMCAPTION='''+Combobox2.Text+''' ORDER BY TABLEDETAILID')
      else
         Query1.SQL.Add('SELECT  * FROM SFRJTABLEDETAIL A ORDER BY TABLEDETAILID');
      Query1.Open;
      Query1.First;
    end;
    Except;
    end;
  except
         on e:Exception do  HandleException(e);
  end;
end;

procedure TfrmTableDetail.spEditClick(Sender: TObject);
begin
  if Edit1.Text = '' then exit;
  if not Query1.Active then
    opState := esAppend
  else
  begin
    opState := esEdit;
  end;
  if spDel.Visible=True then
  begin
      ComboBox1.Enabled:=True;
      Edit1.Enabled:=True;
      Edit3.Enabled:=True;
  end
  else
  begin
      ComboBox1.Enabled:=False;
      Edit1.Enabled:=False;
      Edit3.Enabled:=False;
  end;
end;

procedure TfrmTableDetail.spPostClick(Sender: TObject);
  var i:integer;
begin
  try
    i:=0;
    if not CheckInfoValidate then
      begin
        MessageDlg('    输入信息不全,请重新输入!',mtWarning ,[mbYes] ,0);
        exit;
      end;

    with CDM.sqlExecute do
    begin
      if opState=esAppend then
      begin
        if not Query1.Active then
           Query1.Active := True;
        If Query1.Locate('FORMCAPTION;CAPTION;PRINTCAPTION;COLUMNNAME', VarArrayOf([COMBOBOX1.Text, EDIT1.Text,EDIT2.Text,EDIT3.Text]),[])Then
           begin
              ShowMessage('    您需要录入的打印定制资料已经存在,请重新输入!');
              Exit;
           end
        Else
           begin
                SQL.Clear;
                SQL.Add('INSERT INTO SFRJTABLEDETAIL(FORMCAPTION,CAPTION,PRINTCAPTION,COLUMNNAME,WIDTH,DATATYPE,INARYSERIALID)'+
                              ' VALUES(:FORMCAPTION,:CAPTION,:PRINTCAPTION,:COLUMNNAME,:WIDTH,:DATATYPE,:INARYSERIALID)');
                ParamByName('FORMCAPTION').AsString := ComboBox1.Text;
                ParamByName('CAPTION').AsString := Edit1.Text;
                ParamByName('PRINTCAPTION').AsString := Edit2.Text;
                ParamByName('COLUMNNAME').AsString := Edit3.Text;
                ParamByName('WIDTH').AsInteger := SpinEdit1.Value;
                ParamByName('DATATYPE').AsInteger := ComboBox3.ItemIndex;
                ParamByName('INARYSERIALID').AsInteger := SpinEdit2.Value;
                ExecSQL;
                ClearDatas;//清除显示数据
              end;
              spEdit.Enabled:=True;
              spDel.Enabled:=True;
              N5.Enabled:=True;
              N6.Enabled:=True;

      end;
      if opState=esEdit then
      begin
            i:=Query1.FieldByName('TABLEDETAILID').AsInteger;
            if not Query1.Active then
                 Query1.Active := True;
            If ((Query1.Locate('FORMCAPTION;CAPTION;PRINTCAPTION;COLUMNNAME;WIDTH;DATATYPE;INARYSERIALID',
               VarArrayOf([COMBOBOX1.Text, EDIT1.Text,EDIT2.Text,EDIT3.Text,SpinEdit1.Value,
               ComboBox3.ItemIndex,SpinEdit2.Value]),[])) And
               (Query1.FieldByName('TABLEDETAILID').AsInteger<>i)) Then
            begin
                  ShowMessage('    您需要录入打印定义已经存在,请重新输入!');
                  Exit;
            end
            else
                begin
                    SQL.Clear;
                    SQL.Add('UPDATE SFRJTABLEDETAIL SET CAPTION=:CAPTION ,'
                      +'PRINTCAPTION=:PRINTCAPTION ,COLUMNNAME=:COLUMNNAME ,WIDTH=:WIDTH ,DATATYPE=:DATATYPE,INARYSERIALID=:INARYSERIALID  '
                      +'where FORMCAPTION=:FORMCAPTION AND CAPTION=:CAPTION1 AND '
                      +'PRINTCAPTION=:PRINTCAPTION1 AND COLUMNNAME=:COLUMNNAME1 ');
                end;
          ParamByName('FORMCAPTION').AsString := ComboBox1.Text;
          ParamByName('CAPTION').AsString := Edit1.Text;
          ParamByName('PRINTCAPTION').AsString :=  Edit2.Text;
          ParamByName('COLUMNNAME').AsString := Edit3.Text;
          ParamByName('WIDTH').AsInteger := SpinEdit1.value;
          ParamByName('CAPTION1').AsString := Query1.FieldByName('CAPTION').AsString;
          ParamByName('PRINTCAPTION1').AsString := Query1.FieldByName('PRINTCAPTION').AsString;
          ParamByName('COLUMNNAME1').AsString := Query1.FieldByName('COLUMNNAME').AsString;
          ParamByName('DATATYPE').AsInteger := ComboBox3.ItemIndex;
          ParamByName('INARYSERIALID').AsInteger := SpinEdit2.Value;

          ExecSQL;
          spAdd.Enabled:=True;
          spDel.Enabled:=True;
          N4.Enabled:=True;
          N6.Enabled:=True;
      end;

    end;

    spRefreshClick(Sender);
    if opState=esAppend then
      if Query1.Active then
      begin
         Query1.Last;
      end;
    if opState=esEdit then
      if Query1.Active then
      begin
         while ((not Query1.eof) And (Query1.FieldByName('TABLEDETAILID').AsInteger<>i))do
               Query1.next;
      end;
    opState := esBrowse;
    OldFormName:=ComboBox1.Text;
  except
         on e:Exception do  HandleException(e);
  end;
  spDel.Visible:=False;
  N6.Visible:=False;
  ComboBox3.Enabled:=False;
end;

procedure TfrmTableDetail.spCancelClick(Sender: TObject);
begin
  opState := esBrowse;
  Query1.Prior;
  Query1.Next;
  spCancel.Enabled := False;
  spPost.Enabled := False;
  OldFormName:=ComboBox1.Text;
  if Query1.Eof then ClearDatas;
  spDel.Visible:=False;
  N6.Visible:=False;
  spAdd.Enabled:=True;
  spEdit.Enabled:=True;
  spDel.Enabled:=True;
  N4.Enabled:=True;
  N5.Enabled:=True;
  N6.Enabled:=True;
  ComboBox3.Enabled:=False;
end;

procedure TfrmTableDetail.spExitClick(Sender: TObject);
begin
  Query1.close;
  Close;
end;

end.

⌨️ 快捷键说明

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