📄 u_main.pas
字号:
unit u_main;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ActiveX, AxCtrls, CourseSelect_TLB, StdVcl, Db, DBTables, StdCtrls, Mask, ComCtrls, Buttons, DBCtrls, Grids, DBGrids;type TCourseSelectClient = class(TActiveForm, ICourseSelectClient) PageControl1: TPageControl; TabSheet1: TTabSheet; TabSheet2: TTabSheet; Label1: TLabel; i_user: TMaskEdit; Label2: TLabel; i_passwd: TEdit; B_login: TButton; Label3: TLabel; Label4: TLabel; TabSheet3: TTabSheet; Database: TDatabase; B_logout: TButton; Q_login: TQuery; T_person: TTable; DS_person: TDataSource; o_name: TDBEdit; o_depart: TDBEdit; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; Label9: TLabel; Label10: TLabel; i_passwd1: TEdit; i_passwd2: TEdit; DBEdit3: TDBEdit; DBMemo1: TDBMemo; DBEdit1: TDBEdit; DBEdit2: TDBEdit; BitBtn1: TBitBtn; Label11: TLabel; DBGrid1: TDBGrid; GroupBox1: TGroupBox; Label12: TLabel; DBGrid2: TDBGrid; Button1: TButton; Button2: TButton; Q_course_select: TQuery; DS_course_select: TDataSource; Q_course_list: TQuery; DS_course_list: TDataSource; Label13: TLabel; Label14: TLabel; Label15: TLabel; Label16: TLabel; Label17: TLabel; Label18: TLabel; Label19: TLabel; DBEdit4: TDBEdit; DBEdit5: TDBEdit; DBMemo2: TDBMemo; DBMemo3: TDBMemo; DBMemo4: TDBMemo; DBEdit6: TDBEdit; DBMemo5: TDBMemo; UQ_change: TUpdateSQL; T_counter: TTable; Q_change: TQuery; Q_course_learned: TQuery; DS_course_learned: TDataSource; DBGrid3: TDBGrid; Label20: TLabel; B_about: TButton; procedure B_logoutClick(Sender: TObject); procedure B_loginClick(Sender: TObject); procedure BitBtn1Click(Sender: TObject); procedure TabSheet2Show(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure TabSheet3Show(Sender: TObject); procedure B_aboutClick(Sender: TObject); private { Private declarations } FEvents: ICourseSelectClientEvents; procedure ActivateEvent(Sender: TObject); procedure ClickEvent(Sender: TObject); procedure CreateEvent(Sender: TObject); procedure DblClickEvent(Sender: TObject); procedure DeactivateEvent(Sender: TObject); procedure DestroyEvent(Sender: TObject); procedure KeyPressEvent(Sender: TObject; var Key: Char); procedure PaintEvent(Sender: TObject); protected { Protected declarations } procedure DefinePropertyPages(DefinePropertyPage: TDefinePropertyPage); override; procedure EventSinkChanged(const EventSink: IUnknown); override; function Get_Active: WordBool; safecall; function Get_AutoScroll: WordBool; safecall; function Get_AutoSize: WordBool; safecall; function Get_AxBorderStyle: TxActiveFormBorderStyle; safecall; function Get_Caption: WideString; safecall; function Get_Color: OLE_COLOR; safecall; function Get_Cursor: Smallint; safecall; function Get_DoubleBuffered: WordBool; safecall; function Get_DropTarget: WordBool; safecall; function Get_Enabled: WordBool; safecall; function Get_Font: IFontDisp; safecall; function Get_HelpFile: WideString; safecall; function Get_KeyPreview: WordBool; safecall; function Get_PixelsPerInch: Integer; safecall; function Get_PrintScale: TxPrintScale; safecall; function Get_Scaled: WordBool; safecall; function Get_Visible: WordBool; safecall; function Get_VisibleDockClientCount: Integer; safecall; procedure _Set_Font(const Value: IFontDisp); safecall; procedure AboutBox; safecall; procedure Set_AutoScroll(Value: WordBool); safecall; procedure Set_AutoSize(Value: WordBool); safecall; procedure Set_AxBorderStyle(Value: TxActiveFormBorderStyle); safecall; procedure Set_Caption(const Value: WideString); safecall; procedure Set_Color(Value: OLE_COLOR); safecall; procedure Set_Cursor(Value: Smallint); safecall; procedure Set_DoubleBuffered(Value: WordBool); safecall; procedure Set_DropTarget(Value: WordBool); safecall; procedure Set_Enabled(Value: WordBool); safecall; procedure Set_Font(var Value: IFontDisp); safecall; procedure Set_HelpFile(const Value: WideString); safecall; procedure Set_KeyPreview(Value: WordBool); safecall; procedure Set_PixelsPerInch(Value: Integer); safecall; procedure Set_PrintScale(Value: TxPrintScale); safecall; procedure Set_Scaled(Value: WordBool); safecall; procedure Set_Visible(Value: WordBool); safecall; public { Public declarations } procedure Initialize; override; end;implementationuses ComObj, ComServ, About, crypt;{$R *.DFM}{ TCourseSelectClient }procedure TCourseSelectClient.DefinePropertyPages(DefinePropertyPage: TDefinePropertyPage);begin { Define property pages here. Property pages are defined by calling DefinePropertyPage with the class id of the page. For example, DefinePropertyPage(Class_CourseSelectClientPage); }end;procedure TCourseSelectClient.EventSinkChanged(const EventSink: IUnknown);begin FEvents := EventSink as ICourseSelectClientEvents;end;procedure TCourseSelectClient.Initialize;begin inherited Initialize; OnActivate := ActivateEvent; OnClick := ClickEvent; OnCreate := CreateEvent; OnDblClick := DblClickEvent; OnDeactivate := DeactivateEvent; OnDestroy := DestroyEvent; OnKeyPress := KeyPressEvent; OnPaint := PaintEvent;end;function TCourseSelectClient.Get_Active: WordBool;begin Result := Active;end;function TCourseSelectClient.Get_AutoScroll: WordBool;begin Result := AutoScroll;end;function TCourseSelectClient.Get_AutoSize: WordBool;begin Result := AutoSize;end;function TCourseSelectClient.Get_AxBorderStyle: TxActiveFormBorderStyle;begin Result := Ord(AxBorderStyle);end;function TCourseSelectClient.Get_Caption: WideString;begin Result := WideString(Caption);end;function TCourseSelectClient.Get_Color: OLE_COLOR;begin Result := OLE_COLOR(Color);end;function TCourseSelectClient.Get_Cursor: Smallint;begin Result := Smallint(Cursor);end;function TCourseSelectClient.Get_DoubleBuffered: WordBool;begin Result := DoubleBuffered;end;function TCourseSelectClient.Get_DropTarget: WordBool;begin Result := DropTarget;end;function TCourseSelectClient.Get_Enabled: WordBool;begin Result := Enabled;end;function TCourseSelectClient.Get_Font: IFontDisp;begin GetOleFont(Font, Result);end;function TCourseSelectClient.Get_HelpFile: WideString;begin Result := WideString(HelpFile);end;function TCourseSelectClient.Get_KeyPreview: WordBool;begin Result := KeyPreview;end;function TCourseSelectClient.Get_PixelsPerInch: Integer;begin Result := PixelsPerInch;end;function TCourseSelectClient.Get_PrintScale: TxPrintScale;begin Result := Ord(PrintScale);end;function TCourseSelectClient.Get_Scaled: WordBool;begin Result := Scaled;end;function TCourseSelectClient.Get_Visible: WordBool;begin Result := Visible;end;function TCourseSelectClient.Get_VisibleDockClientCount: Integer;begin Result := VisibleDockClientCount;end;procedure TCourseSelectClient._Set_Font(const Value: IFontDisp);begin SetOleFont(Font, Value);end;procedure TCourseSelectClient.AboutBox;begin ShowCourseSelectClientAbout;end;procedure TCourseSelectClient.ActivateEvent(Sender: TObject);begin if FEvents <> nil then FEvents.OnActivate;end;procedure TCourseSelectClient.ClickEvent(Sender: TObject);begin if FEvents <> nil then FEvents.OnClick;end;procedure TCourseSelectClient.CreateEvent(Sender: TObject);begin if FEvents <> nil then FEvents.OnCreate;end;procedure TCourseSelectClient.DblClickEvent(Sender: TObject);begin if FEvents <> nil then FEvents.OnDblClick;end;procedure TCourseSelectClient.DeactivateEvent(Sender: TObject);begin if FEvents <> nil then FEvents.OnDeactivate;end;procedure TCourseSelectClient.DestroyEvent(Sender: TObject);begin if FEvents <> nil then FEvents.OnDestroy;end;procedure TCourseSelectClient.KeyPressEvent(Sender: TObject; var Key: Char);var TempKey: Smallint;begin TempKey := Smallint(Key); if FEvents <> nil then FEvents.OnKeyPress(TempKey); Key := Char(TempKey);end;procedure TCourseSelectClient.PaintEvent(Sender: TObject);begin if FEvents <> nil then FEvents.OnPaint;end;procedure TCourseSelectClient.Set_AutoScroll(Value: WordBool);begin AutoScroll := Value;end;procedure TCourseSelectClient.Set_AutoSize(Value: WordBool);begin AutoSize := Value;end;procedure TCourseSelectClient.Set_AxBorderStyle( Value: TxActiveFormBorderStyle);begin AxBorderStyle := TActiveFormBorderStyle(Value);end;procedure TCourseSelectClient.Set_Caption(const Value: WideString);begin Caption := TCaption(Value);end;procedure TCourseSelectClient.Set_Color(Value: OLE_COLOR);begin Color := TColor(Value);end;procedure TCourseSelectClient.Set_Cursor(Value: Smallint);begin Cursor := TCursor(Value);end;procedure TCourseSelectClient.Set_DoubleBuffered(Value: WordBool);begin DoubleBuffered := Value;end;procedure TCourseSelectClient.Set_DropTarget(Value: WordBool);begin DropTarget := Value;end;procedure TCourseSelectClient.Set_Enabled(Value: WordBool);begin Enabled := Value;end;procedure TCourseSelectClient.Set_Font(var Value: IFontDisp);begin SetOleFont(Font, Value);end;procedure TCourseSelectClient.Set_HelpFile(const Value: WideString);begin HelpFile := String(Value);end;procedure TCourseSelectClient.Set_KeyPreview(Value: WordBool);begin KeyPreview := Value;end;procedure TCourseSelectClient.Set_PixelsPerInch(Value: Integer);begin PixelsPerInch := Value;end;procedure TCourseSelectClient.Set_PrintScale(Value: TxPrintScale);begin PrintScale := TPrintScale(Value);end;procedure TCourseSelectClient.Set_Scaled(Value: WordBool);begin Scaled := Value;end;procedure TCourseSelectClient.Set_Visible(Value: WordBool);begin Visible := Value;end;procedure TCourseSelectClient.B_logoutClick(Sender: TObject);begin Database.Connected:=False; PageControl1.Enabled:=False; o_name.Text:=''; o_depart.Text:=''; i_passwd.Text:=''; i_user.Enabled:=True; i_passwd.Enabled:=True; B_login.Enabled:=True; B_logout.Enabled:=False;end;procedure TCourseSelectClient.B_loginClick(Sender: TObject);var passwd:String;begin Database.Connected:=True; passwd:=i_passwd.Text; passwd:=Copy(passwd+passwd,1,10); passwd:=Encrypt(passwd,123); Q_login.Params.ParamValues['USER']:=i_user.Text; Q_login.Params.ParamValues['PASSWD']:=passwd; Q_login.Open; if Q_login['COUNT']=1 then begin //通过认证 i_user.Enabled:=False; i_passwd.Enabled:=False; B_login.Enabled:=False; B_logout.Enabled:=True; PageControl1.Enabled:=True; T_person.Filter:='ID='''+i_user.Text+''''; T_person.Filtered:=True; T_person.Open; end else begin //认证失败 Application.MessageBox('请确认用户名和密码,注意大小写!', '认证失败',MB_OK); Database.Connected:=False; end; Q_login.Close;end;procedure TCourseSelectClient.BitBtn1Click(Sender: TObject);var passwd:String;begin if (i_passwd1.Text=i_passwd2.Text) and (length(i_passwd1.Text)>5) then begin passwd:=i_passwd1.Text; i_passwd1.Text:=''; i_passwd2.Text:=''; passwd:=Copy(passwd+passwd,1,10); passwd:=Encrypt(passwd,123); With T_person do begin Edit; FieldValues['PASSWD']:=passwd; Post; end; end else Application.MessageBox('注意密码长度必须大于5。请重新输入密码!','密码不符合要求', MB_OK);end;procedure TCourseSelectClient.TabSheet2Show(Sender: TObject);begin Q_course_list.Open; Q_course_select.Close; Q_course_select.Params.ParamValues['PERSON']:=i_user.Text; Q_course_select.Open;end;procedure TCourseSelectClient.Button1Click(Sender: TObject);var counter:Integer;begin if Q_course_list['COUNTER']<Q_course_list['NUMBER'] then begin With T_counter do begin //获取编号 Open; counter:=FieldValues['COUNTER_VALUE']; Inc(counter); Edit; FieldValues['COUNTER_VALUE']:=counter; Post; Close; end; With Q_change do begin //添加记录 Close; SQL:=UQ_change.InsertSQL; Params.ParamValues['ID']:=counter; Params.ParamValues['PERSON']:=i_user.Text; Params.ParamValues['COURSE']:=Q_course_list['ID']; ExecSQL; end; Q_course_select.Close; Q_course_select.Open; end else Application.MessageBox('请选择其他课程。', '人数已满', MB_OK);end;procedure TCourseSelectClient.Button2Click(Sender: TObject);begin With Q_change do begin Close; SQL:=UQ_change.DeleteSQL; Params.ParamValues['ID']:=Q_course_select['ID']; ExecSQL; end; Q_course_select.Close; Q_course_select.Open;end;procedure TCourseSelectClient.TabSheet3Show(Sender: TObject);begin With Q_course_learned do begin Close; Params.ParamValues['PERSON']:=i_user.Text; Open; end;end;procedure TCourseSelectClient.B_aboutClick(Sender: TObject);begin AboutBox;end;initialization TActiveFormFactory.Create( ComServer, TActiveFormControl, TCourseSelectClient, Class_CourseSelectClient, 1, '', OLEMISC_SIMPLEFRAME or OLEMISC_ACTSLIKELABEL, tmApartment);end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -