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

📄 u_zdsl.pas

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

interface

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

type

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

  Tfzdsl = class(TForm)
    TreeView1: TTreeView;
    ImageList1: TImageList;
    Panel1: TPanel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    ClientSocket1: TClientSocket;
    Edit5: TEdit;
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    Label2: TLabel;
    Label1: TLabel;
    Label3: TLabel;
    Label5: TLabel;
    Label4: TLabel;
    Label6: TLabel;
    Edit6: TEdit;
    L_ADOConnection1: TADOConnection;
    PopupMenu1: TPopupMenu;
    MenuADD: TMenuItem;
    Image1: TImage;
    ListBox1: TListBox;

    procedure TreeView1DblClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
    procedure ClientSocket1Disconnect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ClientSocket1Connect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure MenuADDClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);

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


var
  fzdsl: Tfzdsl;

    SEV_RESP_WAIT:boolean;
implementation

 uses u_dm;

{$R *.DFM}


procedure Tfzdsl.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;


//************************************************
//将数据库的内容转到TTreeView对象
//*************************************************
procedure Tfzdsl.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;


procedure Tfzdsl.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 := L_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 Tfzdsl.Button1Click(Sender: TObject);
begin
     with dm.iptable do
         begin
         clientsocket1.Host:=dm.iptable.fieldbyname('ip').asstring
         end;
     ClientSocket1.Active:=true;
     Button1.Enabled:=false;
end;

procedure Tfzdsl.Button2Click(Sender: TObject);

    var

    adate:TstringList;
begin
     if(edit1.Text<>'')and(edit2.Text<>'')and(edit3.Text<>'')and (edit4.Text<>'')
        and (edit5.Text<>'') then
        begin
     
     adate:=TstringList.Create;
    ListBox1.Items.Add('开始传输数据.....');
     adate.values['报修系统']:=Edit1.text;
     adate.values['报修部件']:=Edit2.text;
     adate.values['报修位置']:=Edit3.text;
     adate.values['故障特征']:=Edit4.text;
     adate.values['车辆号码']:=Edit5.text;
     adate.values['维修地点']:=Edit6.text;
     adate.values['报修时间']:=datetimetostr(now());
     adate.values['故障句']:=Edit2.text+Edit3.text+Edit4.text;
     ClientSocket1.Socket.SendText(adate.text);
     SEV_RESP_WAIT:=true;
     button2.Enabled:=false;
     while SEV_RESP_WAIT do
        
       Application.ProcessMessages;
      end
      else
      showmessage('你没有完全填写数据,请重新填写数据');


end;

procedure Tfzdsl.Button3Click(Sender: TObject);

begin
 SEV_RESP_WAIT:=false;
  ClientSocket1.Active:=false;
  button2.Enabled:=true;
  Button3.Enabled:=true;
  ListBox1.Items.Add('连接已被中断');
  Button1.Enabled:=true;
  end;



procedure Tfzdsl.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);

begin
     if SEV_RESP_WAIT then
     begin
       ListBox1.Items.Add('数据已被成功传输到服务器no:'+Socket.ReceiveText);
         button2.Enabled:=true;
         SEV_RESP_WAIT:=false;
         Edit1.text:='';
         Edit2.text:='';
         Edit3.text:='';
         Edit4.text:='';
         Edit5.text:='';
         Edit6.text:='';
     end;
end;

procedure Tfzdsl.ClientSocket1Disconnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin

     showmessage('服务器已被关闭或者你已中断连接,请停止传输数据!');
end;

procedure Tfzdsl.ClientSocket1Connect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
     showmessage('你已经成功连接服务器!');
end;

procedure Tfzdsl.MenuADDClick(Sender: TObject);
begin
   Edit1.text:='';
   Edit2.text:='';
   Edit3.text:='';
   Edit4.text:='';
   Edit5.text:='';
   Edit6.text:='';
   ListBox1.Items.clear;

end;

procedure Tfzdsl.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   Edit1.text:='';
   Edit2.text:='';
   Edit3.text:='';
   Edit4.text:='';
   Edit5.text:='';
   Edit6.text:='';
  ListBox1.Items.Clear;
end;

end.

⌨️ 快捷键说明

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