📄 specunit.pas
字号:
unit SpecUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData,
cxDataStorage, cxEdit, DB, cxDBData, ADODB, StdCtrls, Buttons, ExtCtrls,
cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView,
cxClasses, cxControls, cxGridCustomView, cxGrid;
type
TScholar=record
Id:integer;
Scholar:string;
end;
TDepartment=record
id:integer;
department:string;
end;
Tspecform = class(TForm)
cxGrid1: TcxGrid;
cxGrid1DBTableView1: TcxGridDBTableView;
cxGrid1Level1: TcxGridLevel;
Panel1: TPanel;
Label1: TLabel;
Label2: TLabel;
Scholar_ComboBox: TComboBox;
scholar_edit: TEdit;
new_button: TBitBtn;
ok_button: TBitBtn;
cancel_button: TBitBtn;
del_button: TBitBtn;
close_button: TBitBtn;
list_adoquery: TADOQuery;
DataSource1: TDataSource;
oper_adoquery: TADOQuery;
Label3: TLabel;
department_ComboBox: TComboBox;
Spec_edit: TEdit;
Department_edit: TEdit;
cxGrid1DBTableView1spec: TcxGridDBColumn;
cxGrid1DBTableView1department: TcxGridDBColumn;
cxGrid1DBTableView1scholar: TcxGridDBColumn;
procedure close_buttonClick(Sender: TObject);
procedure new_buttonClick(Sender: TObject);
procedure DataSource1DataChange(Sender: TObject; Field: TField);
procedure cancel_buttonClick(Sender: TObject);
procedure del_buttonClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ok_buttonClick(Sender: TObject);
procedure Scholar_ComboBoxChange(Sender: TObject);
procedure department_ComboBoxChange(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
NewScholar:array of TScholar;
NewDepartMent:array of TDepartment;
procedure clearContent;
procedure ButtonUse(CanUse:boolean);
procedure CloseWindow(var Msg:TMessage);message wm_user;
public
{ Public declarations }
end;
var
specform: Tspecform;
implementation
uses DMUnit, MainformUnit;
{$R *.dfm}
{ Tspecform }
procedure Tspecform.ButtonUse(CanUse: boolean);
begin
new_button.Enabled :=canuse;
del_button.Enabled :=false;
ok_button.Enabled :=not canuse;
cancel_button.Enabled :=not canuse;
end;
procedure Tspecform.clearContent;
begin
Scholar_ComboBox.ItemIndex:=-1;
scholar_edit.Text :='';
department_combobox.ItemIndex:=-1;
department_edit.Text :='';
Department_edit.Text :='';
spec_Edit.Text :='';
end;
procedure Tspecform.close_buttonClick(Sender: TObject);
begin
if new_button.Enabled then
begin
self.Close ;
exit;
end;
if messagebox(handle,pchar('当前正在进行新增操作,请确认是否退出'),'请选择',MB_ICONQUESTION +MB_YESNO)=6 then
self.Close ;
end;
procedure Tspecform.new_buttonClick(Sender: TObject);
begin
clearcontent;
panel1.Enabled :=true;
Scholar_combobox.SetFocus ;
cxGrid1.Enabled :=false;
buttonuse(false);
end;
procedure Tspecform.DataSource1DataChange(Sender: TObject; Field: TField);
begin
clearcontent;
with list_adoquery do
begin
del_button.Enabled :=not IsEmpty;
if not isempty then
begin
Scholar_ComboBox.ItemIndex:=Scholar_ComboBox.Items.IndexOf(fieldbyname('scholar').AsString );
Scholar_edit.Text :=fieldbyname('scholarid').asstring ;
Scholar_ComboBox.OnChange (nil);
Department_edit.Text :=fieldbyname('departmentid').AsString ;
Department_ComboBox.ItemIndex:=Department_ComboBox.Items.IndexOf(fieldbyname('department').AsString );
spec_edit.Text :=fieldbyname('spec').AsString ;
end;
end;
end;
procedure Tspecform.cancel_buttonClick(Sender: TObject);
var
BookMark:TBookMark;
begin
panel1.Enabled :=false;
cxGrid1.Enabled :=true;
buttonuse(true);
try
bookmark:=list_adoquery.GetBookmark ;
list_adoquery.Close;
list_adoquery.Open;
list_adoquery.GotoBookmark(bookmark);
except
end;
end;
procedure Tspecform.del_buttonClick(Sender: TObject);
begin
with oper_adoquery do
begin
close;
sql.Clear;
sql.Add('select * from Student where SpecID=:SpecID');
Parameters.ParamByName('SpecID').Value :=List_adoquery.FieldValues['ID'];
open;
if not isempty then
begin
MessageBox(application.handle,pchar('该记录信息已被引用,无法删除!'),'错误',MB_ICONWARNING+MB_OK);
exit;
end;
end;
if messagebox(handle,pchar('请确认是否删除当前记录信息!'),'请选择',MB_ICONQUESTION +MB_yesno)=6 then
begin
with oper_adoquery do
begin
close;
sql.Clear;
sql.Add('delete from spec where Id=:ID');
Parameters.ParamByName('ID').Value :=List_adoquery.FieldValues['ID'];
ExecSQL ;
end;
list_adoquery.Close;
list_adoquery.Open;
end;
end;
procedure Tspecform.FormCreate(Sender: TObject);
var
i:integer;
begin
with oper_adoquery do
begin
close;
sql.Clear;
sql.Add('select * from Scholar order by id');
open;
if not isempty then
begin
setlength(NewScholar,RecordCount);
for i := 0 to RecordCount-1 do
begin
NewScholar[i].Id :=fieldbyname('id').AsInteger ;
NewScholar[i].Scholar:=fieldbyname('Scholar').AsString ;
scholar_combobox.Items.Add(fieldbyname('Scholar').AsString) ;
Next;
end;
end;
end;
list_adoquery.Open;
end;
procedure Tspecform.ok_buttonClick(Sender: TObject);
var
BookMark:TBookMark;
begin
if trim(Scholar_ComboBox.Text )='' then
begin
MessageBox(application.handle,pchar('学历类型名称没有选择!'),'错误',MB_ICONWARNING+MB_OK);
Scholar_ComboBox.SetFocus ;
exit;
end;
if trim(department_combobox.Text )='' then
begin
MessageBox(application.handle,pchar('院系没有选择!'),'错误',MB_ICONWARNING+MB_OK);
department_combobox.SetFocus ;
exit;
end;
if trim(spec_edit.Text )='' then
begin
MessageBox(application.handle,pchar('专业名称没有填写!'),'错误',MB_ICONWARNING+MB_OK);
spec_edit.SetFocus ;
exit;
end;
with Oper_adoquery do
begin
close;
sql.Clear;
sql.Add('insert into Spec (ScholarId,Departmentid,spec) values (:ScholarId,:Departmentid,:spec)');
Parameters.ParamByName('ScholarId').Value :=trim(scholar_edit.Text );
Parameters.ParamByName('Departmentid').Value := trim(department_edit.Text );
Parameters.ParamByName('spec').Value := trim(spec_edit.Text );
try
ExecSQL ;
except
on e:exception do
MessageBox(application.handle,pchar(e.Message),'错误',MB_ICONWARNING+MB_OK);
end;
end;
panel1.Enabled :=false;
cxGrid1.Enabled :=true;
buttonuse(true);
try
bookmark:=list_adoquery.GetBookmark ;
list_adoquery.Close;
list_adoquery.Open;
list_adoquery.GotoBookmark(bookmark);
except
end;
end;
procedure Tspecform.Scholar_ComboBoxChange(Sender: TObject);
var
i:integer;
begin
department_combobox.ItemIndex:=-1;
department_edit.Text :='';
department_combobox.Items.Clear;
scholar_Edit.Text:='';
if scholar_combobox.ItemIndex<0 then exit;
scholar_Edit.Text :=inttostr(NewScholar[scholar_combobox.itemindex].id);
with oper_adoquery do
begin
close;
sql.Clear;
sql.Add('select * from department where ScholarId=:ScholarId order by id');
Parameters.ParamByName('ScholarId').Value :=scholar_edit.Text ;
open;
if not isempty then
begin
setlength(NewDepartMent,RecordCount);
for i := 0 to RecordCount-1 do
begin
NewDepartMent[i].Id :=fieldbyname('id').AsInteger ;
NewDepartMent[i].department :=fieldbyname('department').AsString ;
department_combobox.Items.Add(fieldbyname('department').AsString) ;
Next;
end;
end;
end;
end;
procedure Tspecform.department_ComboBoxChange(Sender: TObject);
begin
if department_combobox.ItemIndex>-1 then
department_Edit.Text :=inttostr(Newdepartment[department_ComboBox.itemindex].id);
end;
procedure Tspecform.CloseWindow(var Msg: TMessage);
begin
FreeAndNil(specform);
end;
procedure Tspecform.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=cafree;
postmessage(handle,wm_user,0,0);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -