📄 unsettabledetail.pas
字号:
{---------------------------------------------------------------}
{ }
{ The Source code for Control.dpr Include Files }
{ The Source code Compile By Delphi 6.0 }
{ Author : Dpd }
{ CopyRight(C) Chengdu SiFang Information Tech Co.,LTD. }
{ }
{ Established : 2003/12/03 }
{ Latest Changed : }
{ }
{---------------------------------------------------------------}
unit unSetTableDetail;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Buttons, ExtCtrls, ComCtrls, Grids, DBGrids, StdCtrls, Mask, DBCtrls, Db,
DBTables, Menus,Spin,Variants,unCDefine, ToolWin, ImgList;
type
TEditState = (esBrowse,esEdit,esAppend);
TfrmTableDetail = class(TForm)
spDispInfo: TStatusBar;
Query1: TQuery;
DataSource1: TDataSource;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
Bevel1: TBevel;
Panel4: TPanel;
Panel2: TPanel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label6: TLabel;
Label7: TLabel;
Label4: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
ComboBox1: TComboBox;
SpinEdit1: TSpinEdit;
Panel3: TPanel;
DBGrid1: TDBGrid;
Splitter1: TSplitter;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
N12: TMenuItem;
N13: TMenuItem;
N14: TMenuItem;
N15: TMenuItem;
N16: TMenuItem;
N17: TMenuItem;
N18: TMenuItem;
N19: TMenuItem;
N20: TMenuItem;
ImageList1: TImageList;
ToolBar1: TToolBar;
spAdd: TToolButton;
spEdit: TToolButton;
spDel: TToolButton;
ToolButton3: TToolButton;
spPost: TToolButton;
spCancel: TToolButton;
spExit: TToolButton;
spRefresh: TToolButton;
Label5: TLabel;
ComboBox2: TComboBox;
Splitter2: TSplitter;
ComboBox3: TComboBox;
Label8: TLabel;
Label9: TLabel;
SpinEdit2: TSpinEdit;
Panel1: TPanel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
procedure FormCreate(Sender: TObject);
procedure spExit2Click(Sender: TObject);
procedure spPriClick(Sender: TObject);
procedure spNextClick(Sender: TObject);
procedure spLastClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure spRefreshClick(Sender: TObject);
procedure dbe_1KeyPress(Sender: TObject; var Key: Char);
procedure sqlTableDetailAfterScroll(DataSet: TDataSet);
procedure ComboBox1KeyPress(Sender: TObject; var Key: Char);
procedure ComboBox1DblClick(Sender: TObject);
procedure spCancel2Click(Sender: TObject);
procedure spEdit2Click(Sender: TObject);
procedure spAdd2Click(Sender: TObject);
procedure spDel2Click(Sender: TObject);
procedure spPost2Click(Sender: TObject);
procedure DBGrid1DblClick(Sender: TObject);
procedure spFisrtClick(Sender: TObject);
procedure Panel1DblClick(Sender: TObject);
procedure ComboBox2Click(Sender: TObject);
procedure N16Click(Sender: TObject);
procedure N18Click(Sender: TObject);
procedure N19Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure DBGrid1TitleClick(Column: TColumn);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure DBGrid1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure DBGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure spRefresh1Click(Sender: TObject);
procedure spEditClick(Sender: TObject);
procedure spPostClick(Sender: TObject);
procedure spCancelClick(Sender: TObject);
procedure spExitClick(Sender: TObject);
private
{ Private declarations }
//改变显示数据的颜色
FState : TEditState;
OldFormName:String;
procedure EnableModify(value:Boolean);
procedure SetEditColor(BKColor,FontColor:TColor);
procedure SetState(value:TEditState); //改变系统编辑状态
procedure ClearDatas; //将显示的数据清除
function CheckInfoValidate:Boolean;
procedure HandleException(E:Exception);
public
property opState : TEditState read FState write SetState;
end;
var
frmTableDetail: TfrmTableDetail;
implementation
uses unCDm;
{$R *.DFM}
procedure TfrmTableDetail.spExit2Click(Sender: TObject);
begin
Query1.close;
Close;
end;
//改变显示数据的颜色
procedure TfrmTableDetail.SetEditColor(BKColor,FontColor:TColor);
begin
End;
procedure TfrmTableDetail.EnableModify(value:Boolean);
var i : integer;
begin
for i:= 0 to ComponentCount - 1 do
if Components[i].tag = 1 then
BEGIN
if (Components[i] is TEdit) then
(Components[i] as TEdit).ReadOnly := Value;
if (Components[i] is TSpinEdit) then
(Components[i] as TSpinEdit).ReadOnly := Value;
END;
end;
procedure TfrmTableDetail.ClearDatas; //将显示的数据清除
var i : integer;
begin
for i:= 0 to ComponentCount - 1 do
if Components[i].tag = 1 then
begin
if (Components[i] is TEdit) then
(Components[i] as TEdit).Text := '';
end;
SpinEdit1.Value:=30;
ComboBox1.ItemIndex := -1;
ComboBox3.ItemIndex :=1;
SpinEdit2.Value:=0;
end;
procedure TfrmTableDetail.SetState(value:TEditState); //改变系统编辑状态
begin
FState := Value;
case value of
esBrowse:
begin
N13.Enabled:=False;
N14.Enabled:=False;
spPost.Enabled:=False;
spCancel.Enabled:=False;
EnableModify(True); //不允许修改
SetEditColor(clWhite,clBlack); //........
spDispInfo.Panels[1].Text:='浏览';
end;
esEdit:
begin
N13.Enabled:=True;
N14.Enabled:=True;
spPost.Enabled:=True;
spCancel.Enabled:=True;
spAdd.Enabled:=False;
spDel.Enabled:=False;
N4.Enabled:=False;
N6.Enabled:=False;
EnableModify(False); //允许修改
ComboBox3.Enabled:=True;
Edit2.SetFocus;
SetEditColor(clWhite,clBlack); //........
spDispInfo.Panels[1].Text:='编辑';
End;
esAppend:
Begin
N13.Enabled:=True;
N14.Enabled:=True;
spPost.Enabled:=True;
spCancel.Enabled:=True;
spEdit.Enabled:=False;
spDel.Enabled:=False;
N5.Enabled:=False;
N6.Enabled:=False;
ClearDatas;//清除显示数据
EnableModify(False); //允许修改
ComboBox1.Enabled:=True;
ComboBox3.Enabled:=True;
Edit1.Enabled:=True;
Edit3.Enabled:=True;
ComboBox1.Text:=OldFormName;
Edit1.SetFocus;
SetEditColor(clWhite,clBlack); //........
spDispInfo.Panels[1].Text:='添加';
End;
end;
End;
procedure TfrmTableDetail.spPriClick(Sender: TObject);
begin
if Query1.Active then
Query1.Prior;
end;
procedure TfrmTableDetail.spNextClick(Sender: TObject);
begin
if Query1.Active then
Query1.Next;
end;
procedure TfrmTableDetail.spLastClick(Sender: TObject);
begin
if Query1.Active then
Query1.Last;
end;
procedure TfrmTableDetail.FormCreate(Sender: TObject);
begin
try
with QUERY1 do
begin
Close;
SQL.Clear;
SQL.Add('SELECT FORMCAPTION FROM SFRJREPORTNAME A GROUP BY FORMCAPTION');
Open;
First;
ComBoBox1.Items.Clear;
ComBoBox2.Items.Clear;
ComBoBox2.Items.Add('所有窗体报表项');
While not eof do
begin
ComBoBox1.Items.Add(FieldByName('FORMCAPTION').AsString);
ComBoBox2.Items.Add(FieldByName('FORMCAPTION').AsString);
next;
end;
Close;
SQL.Clear;
SQL.Add('SELECT * FROM SFRJTABLEDETAIL A ORDER BY TABLEDETAILID');
Open;
First;
ComboBox2.ItemIndex:=0;
ComboBox1.Text := FieldByName('FORMCAPTION').AsString;
Edit1.Text := FieldByName('CAPTION').AsString;
Edit2.Text := FieldByName('PRINTCAPTION').AsString;
Edit3.Text := FieldByName('COLUMNNAME').AsString;
SpinEdit1.value := FieldByName('WIDTH').AsInteger;
end;
Query1.AfterScroll := sqlTableDetailAfterScroll;
opState := esBrowse;
except
on e:Exception do HandleException(e);
end;
end;
procedure TfrmTableDetail.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Query1.Close;
end;
procedure TfrmTableDetail.spRefreshClick(Sender: TObject);
begin
try
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.dbe_1KeyPress(Sender: TObject; var Key: Char);
begin
if Key = Chr (VK_RETURN ) then
PerForm(WM_NEXTDLGCTL,0,0);
end;
procedure TfrmTableDetail.sqlTableDetailAfterScroll(DataSet: TDataSet);
begin
if opState<>esEdit then
begin
try
with Dataset do
begin
ComboBox1.Text := FieldByName('FORMCAPTION').AsString;
Edit1.Text := FieldByName('CAPTION').AsString;
Edit2.Text := FieldByName('PRINTCAPTION').AsString;
Edit3.Text := FieldByName('COLUMNNAME').AsString;
SpinEdit1.value := FieldByName('WIDTH').AsInteger;
ComboBox3.ItemIndex := FieldByName('DATATYPE').AsInteger;
SpinEdit2.value := FieldByName('INARYSERIALID').AsInteger;
end;
OldFormName:=ComboBox1.Text;
except
on e:Exception do HandleException(e);
end;
end;
end;
procedure TfrmTableDetail.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
if (Key <> Char(VK_UP))and(Key <> Char(VK_DOWN))then
key := Char(0); //禁止用户键盘输入信息
end;
procedure TfrmTableDetail.ComboBox1DblClick(Sender: TObject);
begin
if opState <> esBrowse then
(Sender as TComboBox).itemindex :=
((Sender as TComboBox).itemindex + 1) mod (Sender as TComboBox).items.count
end;
procedure TfrmTableDetail.spCancel2Click(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;
end;
procedure TfrmTableDetail.spEdit2Click(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;
SpinEdit2.Enabled:=True;
end
else
begin
ComboBox1.Enabled:=False;
Edit1.Enabled:=False;
Edit3.Enabled:=False;
SpinEdit2.Enabled:=False;
end;
end;
procedure TfrmTableDetail.spAdd2Click(Sender: TObject);
begin
opState := esAppend;
end;
procedure TfrmTableDetail.spDel2Click(Sender: TObject);
VAR i,j:Integer;
begin
try
if MessageDlg(' 您确认要删除显示列:'+Edit1.Text+',打印列:'+Edit2.Text+#13#10+'的定义内容吗?' ,
mtConfirmation ,[mbYes,mbNo] ,0) <> mrYes then exit;
try
i:=0;
j:=Query1.FieldByName('TABLEDETAILID').AsInteger;
Query1.Prior;
if Not Query1.Eof then
begin
i:=Query1.FieldByName('TABLEDETAILID').AsInteger;
Query1.Next;
end
else
Query1.first;
with CDM.sqlExecute do
begin
Close;
SQL.Clear;
SQL.Add('DELETE FROM SFRJTABLEDETAIL WHERE TABLEDETAILID = :TABLEDETAILID');
ParamByname('TABLEDETAILID').AsInteger := j;
ExecSQL;
Close;
end;
except
ShowMessage(' 删除显示列:'+Edit1.Text+',打印列:'+Edit2.Text+'失败,请重试!');
raise;
end;
opState := esBrowse;
ClearDatas;//清除显示数据
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -