📄 unsettabledetail.pas
字号:
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 + -