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

📄 hz.pas

📁 c/s系统。 delphi 6+access 运行前先配置数据环境:把db文件夹复制到c:下 要编译请安装第三方控件fastreport2.47 这是我的小小的毕业设计
💻 PAS
字号:
unit hz;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ImgList, ComCtrls, Menus, StdCtrls, OleCtrls, SHDocVw, DB, ADODB,
  ExtCtrls, ScktComp, DBTables;

type

  //自定义一个结构的数据类型
  PMyRecord = ^TMyRecord;
  TMyRecord = record
    ParentNodeID : String; //父节点
    NodeID : String;       //节点代号
    Caption : String;      //标题文字
             //网址
  end;

  Thz_f = class(TForm)
    TreeView1: TTreeView;
    ImageList1: TImageList;
    ADOTable1: TADOTable;
    ADOConnection1: TADOConnection;
    Panel1: TPanel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Label3: TLabel;
    Label5: TLabel;
    Label4: TLabel;
    Edit6: TEdit;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Edit8: TEdit;
    Label9: TLabel;
    Edit9: TEdit;
    Edit10: TEdit;
    Button1: TButton;
    Table1: TTable;
    Table2: TTable;
    Database1: TDatabase;
    Button3: TButton;
    StatusBar1: TStatusBar;
    PopupMenu1: TPopupMenu;
    MenuADD: TMenuItem;
    renamenode: TMenuItem;
    deletechildnode: TMenuItem;
    ADOQuery1: TADOQuery;
    refresh: TMenuItem;

    procedure TreeView1DblClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Edit6Change(Sender: TObject);
    procedure MenuADDClick(Sender: TObject);
    procedure renamenodeClick(Sender: TObject);
    procedure deletechildnodeClick(Sender: TObject);
    procedure refreshClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);


  private
    { Private declarations }
  public
    { Public declarations }
    //自定义函数
    procedure CreateSubNodes(myNode :TTreeNode);
  end;


var
  hz_f: Thz_f;

    SEV_RESP_WAIT:boolean;
implementation

uses u_add,u_ren,u_del;

{$R *.DFM}


procedure Thz_f.TreeView1DblClick(Sender: TObject);
var
        currentnode: ttreenode;



        begin


             currentnode:=treeview1.selected;

                      if treeview1.selected.level=1  then
                      begin
                          Edit1.Text:=currentnode.Text;
                       end;
                     if treeview1.selected.level=2 then
                      begin
                          Edit2.Text:=currentnode.Text;
                      end;
                    if treeview1.selected.level=3 then
                      begin
                          Edit3.Text:=currentnode.Text;
                      end;
                    if treeview1.selected.level=4 then
                      begin
                          Edit4.Text:=currentnode.Text;
                      end;

          end;

procedure Thz_f.FormCreate(Sender: TObject);
var
   //声明指针变量
   MyRecordPointer: PMyRecord;
begin
   //创建指针变量
   New(MyRecordPointer);

   //设置根节点的指针变量内容
   MyRecordPointer.ParentNodeID := '';
   MyRecordPointer.NodeID := 'Root';
   MyRecordPointer.Caption := TreeView1.Items[0].Text;

   TreeView1.Items[0].Data :=  MyRecordPointer;

   //将数据库的数据写到TTreeView对象中
   CreateSubNodes(TreeView1.Items[0]);
end;


//************************************************
//将数据库的内容转到TTreeView对象
//*************************************************
procedure Thz_f.CreateSubNodes(myNode :TTreeNode);
var
   //声明指针变量
   MyRecordPointer: PMyRecord;
   tmpDataSet : TADODataSet;
   tmpNode : TTreeNode;
   SQLStr : string;
begin
   //创建DataSet
   tmpDataSet := TADODataSet.Create(nil);

   //组合SQL命令,找出指定节点的所有的子节点
   SQLStr := ' ParentNodeID = ''' + PMyRecord(myNode.Data)^.NodeID + '''';

   //连接数据库
   tmpDataSet.Connection := ADOConnection1;
   tmpDataSet.CursorType := ctStatic;
   tmpDataSet.CursorLocation := clUseClient;
   tmpDataSet.CommandText := 'select * from  myTTreeView where ' + SQLStr + ' Order by NodeID ';
   tmpDataSet.Active := True;
   tmpDataSet.First;
   While Not tmpDataSet.Eof do begin
       //创建Model Node
       tmpNode := TreeView1.Items.AddChild(myNode,tmpDataSet.FieldValues['Caption']);

       //设置图片属性
       tmpNode.ImageIndex := tmpNode.Level + 1;
       tmpNode.SelectedIndex := tmpNode.Level + 1;

       //创建指针变量
       New(MyRecordPointer);

       //将相关数据保存到tmpNode
       MyRecordPointer.ParentNodeID := tmpDataSet.FieldValues['ParentNodeID'];
       MyRecordPointer.NodeID := tmpDataSet.FieldValues['NodeID'];
       MyRecordPointer.Caption := tmpDataSet.FieldValues['Caption'];

       tmpNode.Data :=  MyRecordPointer;

       //创建子节点(以递归的方式调用)
       CreateSubNodes(tmpNode);
       tmpDataSet.Next;
   end;

   //关闭与释放DataSet
   tmpDataSet.Active := False;
   tmpDataSet.Free;
end;





procedure Thz_f.Button1Click(Sender: TObject);
var data1 ,data2:string;
begin //检查是否输入完全
    if(edit1.Text<>'')and(edit2.Text<>'')and(edit3.Text<>'')and (edit4.Text<>'')
      and(edit6.Text<>'')and(edit8.Text<>'')and (edit9.Text<>'')and (edit10.Text<>'') then

          if not table2.FindKey([edit6.text]) then
          showmessage('没有此报修序号,请核查!')
           else
             begin
              with table1 do
     //向表中添加数据
    table1.Append;
    table1.FieldByName('维修系统').AsString :=edit1.text;
    table1.FieldByName('系统部件').AsString :=edit2.text;
    table1.FieldByName('部件位置').AsString :=edit3.text;
    table1.FieldByName('修理情况').AsString :=edit4.text;
    table1.FieldByName('报修序号').AsString :=edit6.text;
     table1.FieldByName('维修工时').AsString :=edit8.text;
    table1.FieldByName('修理句').AsString :=edit2.text+edit3.text+edit4.text;
    table1.FieldByName('检验员').AsString :=edit9.text;
    table1.FieldByName('维修员').AsString :=edit10.text;
    table1.FieldByName('修完时间').AsString :=datetimetostr(now());
    // 计算维修耗时
     data1:=datetostr(now()-table2.lookup('报修序号',edit6.Text,'报修时间') ) ;
     data2:=copy(data1,1,1);
     table1.FieldByName('维修耗时').AsString :=inttostr(strtoint(data2)+1);
     Table1.post;
     //清空对话框
     edit1.Text:='' ;
     edit2.text:='' ;
     edit3.Text:='' ;
     edit4.text:='' ;

     edit6.text:='' ;

     edit8.text:='' ;
     edit9.text:='' ;
     edit10.text:='' ;
    showmessage('你已成功保存新的记录')  ;

     end
  else

      showmessage('你没有完全填写数据,请重新填写数据');

end;

procedure Thz_f.Button3Click(Sender: TObject);
begin
close;
end;

procedure Thz_f.Edit6Change(Sender: TObject);
begin
   if  table2.FindKey([edit6.text]) then
       begin

       StatusBar1.SimpleText:='报修序号为__'+edit6.Text+'的报修故障:'+table2.lookup('报修序号',edit6.Text,'故障句');

       end
    else
      StatusBar1.SimpleText:='没有此项记录报修情况请核查!';
end;

procedure Thz_f.MenuADDClick(Sender: TObject);

var
   //声明指针变量
   MyRecordPointer: PMyRecord;
begin
   with Tadd.Create(Application) do begin
       try
          ShowModal;
       finally
          //假如用户是单击OK按钮,则将数据加以保存
          if ModalResult = mrOK then begin
             //创建指针变量
             New(MyRecordPointer);

             //添加新的节点
             with TreeView1.Items.AddChild(TreeView1.Selected,EditCaption.Text) do begin
                  //指定图片
                  ImageIndex:= Level + 1;
                  SelectedIndex := Level + 1;

                  //指定指针变量的内容
                  MyRecordPointer.ParentNodeID := PMyRecord(TreeView1.Selected.Data)^.NodeID;
                  MyRecordPointer.NodeID := PMyRecord(TreeView1.Selected.Data)^.NodeID + '-' + IntToStr(TreeView1.Selected.Count);
                  MyRecordPointer.Caption := EditCaption.Text;


                  //设置节点的Data属性值
                  Data := MyRecordPointer;
             end;

             //将数据保存到数据库
             ADOTable1.Append;
             ADOTable1.FieldByName('ParentNodeID').AsString := PMyRecord(TreeView1.Selected.Data)^.NodeID;
             ADOTable1.FieldByName('NodeID').AsString := PMyRecord(TreeView1.Selected.Data)^.NodeID + '-' + IntToStr(TreeView1.Selected.Count);
             ADOTable1.FieldByName('Caption').AsString := EditCaption.Text;

             ADOTable1.Post;
          end;
          Free;
       end;
   end;
end;


procedure Thz_f.renamenodeClick(Sender: TObject);
begin
with Tren.Create(Application) do begin
 try
          ShowModal;//显示对话匡
       finally
          //假如用户是单击OK按钮,则将数据加以保存
          if ModalResult = mrOK then begin
             with adoquery1 do
      begin

      adoquery1.Close;
      adoquery1.SQL.Clear;
      adoquery1.sql.add('update myTTreeView set caption=:cc  Where caption=:bb');//声名2个变量cc ,bb
      parameters.parambyname('bb').value:=treeview1.Selected.Text;
      parameters.parambyname('cc').value:=reedit.text ;
      adoquery1.execsql;

          end;
            treeview1.selected.Text:=reedit.Text;
          end;
       end;
   end;
end;

procedure Thz_f.deletechildnodeClick(Sender: TObject);
begin
 with Tdel.Create(Application) do begin
        try
          ShowModal;//显示对话匡
       finally
          //假如用户是单击yes按钮,则将数据加以保存
          if ModalResult = mryes then
       begin


        //从数据库中删除节点
      with adoquery1 do
      begin
      if treeview1.selected.level<>1 then
        begin
      adoquery1.Close;
      adoquery1.SQL.Clear;
      adoquery1.sql.add('delete from myTTreeView  Where caption=:aa');//声名一个变量aa
      parameters.parambyname('aa').value:=treeview1.Selected.Text;
      adoquery1.execsql;
        end
        else
          showmessage('你不删除根目录!');
      end;
       //在treelist 中删除节点
       if (treeview1.Selected.level<>0)and(treeview1.Selected.level<>1) then
         treeview1.Items.Delete(treeview1.Selected);

                end;
           end;
    end;

end;

procedure Thz_f.refreshClick(Sender: TObject);
begin
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
edit4.Text:='';
edit6.Text:='';
edit8.Text:='';
edit9.Text:='';
edit10.Text:='';
end;

procedure Thz_f.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
edit4.Text:='';
edit6.Text:='';
edit8.Text:='';
edit9.Text:='';
edit10.Text:='';
end;

end.

⌨️ 快捷键说明

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