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

📄 coursetimeassignfrm.~pas

📁 delphi 编制的服务器程序
💻 ~PAS
字号:
unit CourseTimeAssignFrm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DbChildFrm, DB, ADODB, ImgList, StdCtrls, Grids, DBGrids,
  ComCtrls, Buttons, ExtCtrls, DBCtrls, Mask, DBDateTimePicker;

  type
  TSNode = class
  public
    BH: string;
    MC: string;
    Constructor Create(ABH: string);
  end;
  TCourseTimeAssignForm = class(TDbChildForm)
    ADOQuery1ClassCode: TWideStringField;
    ADOQuery1CourseCode: TWideStringField;
    ADOQuery1DayWeek: TWordField;
    ADOQuery1term: TWideStringField;
    ADOQuery2: TADOQuery;
    ADOQuery3: TADOQuery;
    ADOQuery1CourseName: TStringField;
    ADOQuery1ClassCap: TStringField;
    ADOQuery1teacher: TWideStringField;
    tv: TTreeView;
    Splitter1: TSplitter;
    ADOQuery4: TADOQuery;
    ADOQuery1weekcap: TStringField;
    ADOQuery1Beginhour: TWordField;
    ADOQuery1Endhour: TWordField;
    ADOQuery1beginMin: TWordField;
    ADOQuery1EndMin: TWordField;
    ADOQuery1Explain: TWideStringField;
    Panel3: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    DBLookupComboBox1: TDBLookupComboBox;
    DBComTerm: TDBComboBox;
    DBLookupComboBox4: TDBLookupComboBox;
    Panel4: TPanel;
    DBEdit1: TDBEdit;
    Edit1: TEdit;
    DBEdit2: TDBEdit;
    Panel5: TPanel;
    DBEdit6: TDBEdit;
    Edit2: TEdit;
    DBEdit7: TDBEdit;
    DBEdit3: TDBEdit;
    SpeedButton1: TSpeedButton;
    ADOQuerypublic: TADOQuery;
    ImageListTree: TImageList;
    DbcboTea: TDBComboBox;
    procedure FormShow(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure tvClick(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
  private
    { Private declarations }
     procedure CreateTree;
     function GetClassCaption(sCode:string):string;
     function  AddChildNode(tv: TTreeView; Node: TTreeNOde;
                      Code,Name: string): TTreeNode;
     procedure AppendRecordToAdo(sClassCode:string);
     procedure CreateTeacherItems;
  public
    { Public declarations }
  end;

var
  CourseTimeAssignForm: TCourseTimeAssignForm;
  procedure CallCourseTimeAssignForm;
implementation

uses MainDm, ClassCheckSelectFrm;

{$R *.dfm}

function GetBH(Node: TTreeNode): string;
begin
  if Node = nil then Result := ''
  else Result := TsNode(Node.Data).BH;
end;

procedure CallCourseTimeAssignForm;
begin
  if CourseTimeAssignForm = nil then
    CourseTimeAssignForm := TCourseTimeAssignForm.Create(Application);
  CourseTimeAssignForm.ShowModal;
  CourseTimeAssignForm.Free;
  CourseTimeAssignForm := nil;
end;
{ TCourseTimeAssignForm }

procedure TCourseTimeAssignForm.CreateTree;
var
  sTeacher,sTerm,PreTerm,PreTeacher,sClassCode,sClassName: string;
  First1,second: TTreeNode;
begin
  //
  with DmMain.QueryPublic do
  begin
    Close;
    Sql.Text := 'select * from  CourseTimeAssign Order by Term,Teacher,ClassCode';
    Open;
    preTerm := '';
    preTeacher := '';
    while not eof do
    begin
      sTerm := FieldByName('Term').Asstring;
      sTeacher := FieldByName('Teacher').Asstring;
      sClassCode := FieldByName('ClassCode').Asstring;
      sClassName := GetClassCaption(sClassCode);
      if sTerm <> preTerm then
      begin
        First1 := AddChildNode(tv,nil,sTerm,sTerm); //年级
        Second := AddChildNode(tv,First1,sTeacher,sTeacher);  //老师
        AddChildNode(tv,Second,sClassCode,sClassName); //班级
      end
      else
      if sTeacher <> preTeacher then
      begin
        Second := AddChildNode(tv,First1,sTeacher,sTeacher);
        AddChildNode(tv,Second,sClassCode,sClassName); //班级
      end
      else
        AddChildNode(tv,Second,sClassCode,sClassName); //班级
      Next;
      preTerm := sTerm;
      preTeacher := sTeacher;
    end;
  end;
end;

procedure TCourseTimeAssignForm.FormShow(Sender: TObject);
begin
  inherited;
  CreateTree;
  CreateTeacherItems;
end;

function TCourseTimeAssignForm.AddChildNode(tv: TTreeView; Node: TTreeNOde;
  Code, Name: string): TTreeNode;
var
  child: TTreeNode;
begin
  child := tv.Items.AddChild(Node,Name);
  child.Data := TsNode.Create(Code);
  case Child.Level of
    0:  child.ImageIndex := 0;
    1:  child.ImageIndex := 1;
    2:  child.ImageIndex := 2;
  end;
  child.SelectedIndex := Child.ImageIndex;
  Result := child;
end;

function TCourseTimeAssignForm.GetClassCaption(sCode: string): string;
begin
  Result := '';
  with ADOQuerypublic do
  begin
    Close;
    Sql.Text := 'select * from Monitor where ClassCode = ' + QuotedStr(sCode);
    open;
    Result := FieldByName('ClassCaption').AsString;
  end;
end;

procedure TCourseTimeAssignForm.AppendRecordToAdo(sClassCode: string);
var
  st,sCourse,sweek,sbh,sbm,seh,sem,steacher: string;
begin
  With AdoQuery1 do
  begin
    st := AdoQuery1Term.Value;
    sCourse := AdoQuery1CourseCode.Value;
    sWeek := ADOQuery1DayWeek.AsString;
    sbh := ADOQuery1Beginhour.AsString;
    sbm := ADOQuery1beginMin.AsString;
    seh := ADOQuery1Endhour.AsString;
    sem := ADOQuery1EndMin.AsString;
    sTeacher := ADOQuery1Teacher.Value;
    Cancel;
    Append;
    AdoQuery1Term.Value := st;
    AdoQuery1CourseCode.Value := sCourse ;
    ADOQuery1DayWeek.AsString := sWeek;
    ADOQuery1Beginhour.AsString := sbh ;
    ADOQuery1beginMin.AsString := sbm ;
    ADOQuery1Endhour.AsString := seh ;
    ADOQuery1EndMin.AsString := sem ;
    ADOQuery1Teacher.Value := sTeacher ;
    AdoQuery1ClassCode.Value := sClassCode;
    Post;
  end;
end;

procedure TCourseTimeAssignForm.CreateTeacherItems;
begin
  with DmMain.QueryPublic do
  begin
    Close;
    Sql.Text := 'Select * from Teacher';
    Open;
    while not eof do
    begin
      DbCboTea.Items.Add(FieldByName('TeacherName').Asstring) ;
      Next;
    end;
  end;
  with DmMain.QueryPublic do
  begin
    Close;
    Sql.Text := 'Select * from Term order by TermCode';
    Open;
    while not eof do
    begin
      DBComTerm.Items.Add(FieldByName('TermCaption').Asstring) ;
      Next;
    end;
  end;

end;

{ TSNode }

constructor TSNode.Create(ABH: string);
begin
  BH := Abh;
end;

procedure TCourseTimeAssignForm.FormDestroy(Sender: TObject);
var
  I: Integer;
begin
  for I := 0 to tv.Items.Count - 1 do
    TsNode(tv.Items[I].Data).Free;

end;

procedure TCourseTimeAssignForm.tvClick(Sender: TObject);
var
  sCode,sTerm,sTeacher,sClass: string;
begin
  inherited;
  if tv.Selected = nil then Exit;
  if (tv.Selected.Level=0) then
    sTerm := GetBh(Tv.Selected);
  if  (tv.Selected.Level=1) then
    sTeacher := GetBh(Tv.Selected);
  if  (tv.Selected.Level=2) then
    sClass := GetBh(Tv.Selected);
  if tv.Selected.Level = 0 then
    sCode := 'select * from CourseTimeAssign where Term='+QuotedStr(sTerm);
  if tv.Selected.Level = 1 then
    sCode := 'select * from CourseTimeAssign where Term='+QuotedStr(sTerm)+ ' and Teacher='+QuotedStr(sTeacher);
  if tv.Selected.Level = 2 then
    sCode := 'select * from CourseTimeAssign where Term='+QuotedStr(sTerm)+ ' and Teacher='+QuotedStr(sTeacher)+ ' and ClassCode='+QuotedStr(sClass);
  with AdoQuery1 do
  begin
    Close;
    Sql.Text := sCode;
    Open;
  end;
end;

procedure TCourseTimeAssignForm.SpeedButton1Click(Sender: TObject);
var
  bh,mc,sClassCode: string;
begin
  inherited;
//  if not Checked then Exit;
  if GetBMH2(bh,mc) then
  begin
    bh := bh + ',';
    Caption := bh;
    repeat
      sClassCode := copy(bh,1,pos(',',bh)-1);
      AppendRecordToAdo(sClassCode);
      bh := copy(bh,pos(',',bh)+1,Length(bh)-pos(',',bh));
    until Length(bh) = 0 ;
  end;
end;

end.

⌨️ 快捷键说明

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