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

📄 frmmain.pas

📁 本文件中还有JSP、php和delphi等源程序
💻 PAS
📖 第 1 页 / 共 2 页
字号:
end;

procedure TForm1.TreeView1Editing(Sender: TObject; Node: TTreeNode;
  var AllowEdit: Boolean);
begin
  if(Node.Level=0)or(Node.Level=2) then
    AllowEdit:=False;
end;

procedure TForm1.TreeView1Edited(Sender: TObject; Node: TTreeNode;
  var S: String);
var
  GroupId:Integer;
begin
  GroupId:=(PMyData(Node.Data))^.Id;
  with ADOQuery1 do
  begin
    SQL.Clear;
    SQL.Add('UPDATE TXL_GROUP');
    SQL.Add('SET GROUP_NAME='''+S+'''');
    SQL.Add('WHERE GROUP_ID='+IntToStr(GroupId));
    //ADOQuery1.ExecSQL;
    showmessage(SQL.Text);
  end;
end;

procedure TForm1.AddGroupClick(Sender: TObject);
var
  NewNode,RootNode:TTreeNode;
  NewNodeName:String;
  PtrMyData:PMyData;
  NewNodeId:Integer;
begin
  {在TXL_GROUP表内添加一条新记录}
  with ADOQuery1 do
  begin
    SQL.Clear;
    SQL.Add('INSERT INTO TXL_GROUP(GROUP_NAME)');
    SQL.Add('VALUES(''新建组'+IntToStr(i)+''')');
    ExecSQL;
    {获得新添加记录的GROUP_ID字段值}
    SQL.Clear;
    SQL.Add('SELECT *');
    SQL.Add('FROM TXL_GROUP');
    SQL.Add('WHERE GROUP_NAME=''新建组'+IntToStr(i)+'''');
    Open;
    NewNodeName:=FieldByName('GROUP_NAME').AsString;
    NewNodeId:=FieldByName('GROUP_ID').AsInteger;
    Close;
    i:=i+1;
  end;
  {在TTreeView控件中添加一个新的组节点}
  PtrMyData:=new(PMyData);
  PtrMyData.Id:=NewNodeId;
  PtrMyData.NodeType:=0;
  RootNode:=TreeView1.Items.GetFirstNode;
  NewNode:=TreeView1.Items.AddChildObject(RootNode,NewNodeName,PtrMyData);
  NewNode.ImageIndex:=1;
  NewNode.SelectedIndex:=1;
  {将新增组节点设置为选中状态}
  NewNode.Selected:=True;
end;

procedure TForm1.DeleteGroupClick(Sender: TObject);
var
  GroupId,RecordId:Integer;
begin
  if (MessageDlg('确实要删除当前组吗?', mtConfirmation,
      [mbYes, mbNo],0))=mrYes then
  begin
    {读取存储在组节点中的Id号}
    GroupId:=(PMyData(TreeView1.Selected.Data))^.Id;
    {删除当前组及其相应记录}
     with ADOQuery1 do
     begin
      {删除TXL_GROUP表内相关记录}
      SQL.Clear;
      SQL.Add('DELETE FROM TXL_GROUP');
      SQL.Add('WHERE GROUP_ID='+IntToStr(GroupId));
      ExecSQL;
      {删除TXL_RECORD表内相关记录}
      SQL.Clear;
      SQL.Add('SELECT * FROM TXL_MAP');
      SQL.Add('WHERE MAP_GROUP_ID='+IntToStr(GroupId));
      Open;
      while not Eof do
      begin
        RecordId:=FieldByName('MAP_RECORD_ID').AsInteger;
        ADOQuery2.SQL.Clear;
        ADOQuery2.SQL.Add('DELETE FROM TXL_RECORD');
        ADOQuery2.SQL.Add('WHERE RECORD_ID='+IntToStr(RecordId));
        ADOQuery2.ExecSQL;
        next;
      end;
      Close;  
      {删除TXL_MAP表内相关记录}
      SQL.Clear;
      SQL.Add('DELETE FROM TXL_MAP');
      SQL.Add('WHERE MAP_GROUP_ID='+IntToStr(GroupId));
      ExecSQL;
     end;
     {在控件TTreeView上删除组节点及其子节点}
     TreeView1.Selected.Delete;
  end;

end;

procedure TForm1.BtnAddClick(Sender: TObject);
begin
  LastSelNode:=TreeView1.Selected;
  txtName.Text:='';
  dtpBirthday.DateTime:=now;
  txtQQ.Text:='';
  txtTel.Text:='';
  txtMobile.Text:='13*********';
  ActiveControl:=txtName;
  ActionCode:=1;//是添加动作
end;

procedure TForm1.BtnPostClick(Sender: TObject);
var
  RecordId:Integer;
  GroupId:Integer;
begin
  {动作编码为1,表示添加操作}
  if(ActionCode=1)then
  begin
    if(CheckValid=False)then
    begin
      ShowMessage('输入的数据有错误,因此不能进行添加操作!');
      ActiveControl:=txtName;
    end
    else
    begin
      {将新记录插入到TXL_RECORD表内}
      with tblRecord do
      begin
        Open;
        Insert;
        FieldValues['RECORD_NAME']:=txtName.Text;
        FieldValues['RECORD_BIRTHDAY']:=dtpBirthday.DateTime;
        FieldValues['RECORD_TEL']:=txtTel.Text;
        FieldValues['RECORD_MOBILE']:=txtMobile.Text;
        FieldValues['RECORD_OICQ']:=txtQQ.Text;
        Post;
        Close;
      end;
      {获得TXL_RECORD表内RECORD_ID字段的最大值}
      with tblRecord do
      begin
        Open;
        Last;
        RecordId:=FieldByName('RECORD_ID').AsInteger;
        Close;
      end;
      {将一条新的映射关系插入到TXL_MAP表中}
      GroupId:=(PMyData(TreeView1.Selected.Parent.Data))^.Id;
      with tblMap do
      begin
        Open;
        Insert;
        FieldValues['MAP_RECORD_ID']:=RecordId;
        FieldValues['MAP_GROUP_ID']:=GroupId;
        Post;
        Close;
      end;
    end;
  end
  {动作编码为2,表示删除操作}
  else if(ActionCode=2)then
  begin
    {删除TXL_RECORD表中对应记录}
    RecordId:=(PMyData(TreeView1.Selected.Data))^.Id;
    with tblRecord do
    begin
      Open;
      while not Eof do
      begin
        if(FieldByName('RECORD_ID').AsInteger=RecordId)then
          Delete;
        next;
      end;
      Close;
    end;
    {删除TXL_MAP表中对应的映射关系}
    with tblMap do
    begin
      Open;
      while not Eof do
      begin
        if(FieldByName('MAP_RECORD_ID').AsInteger=RecordId)then
          Delete;
        next;
      end;
      Close;
    end;
  end
  {动作编码为3,表示修改操作}
  else if(ActionCode=3)then
  begin
    if(CheckValid=False)then
    begin
      ShowMessage('输入的数据有错误,因此不能进行修改操作!');
      ActiveControl:=txtName;
    end
    else
    begin
      {修改TXL_RECORD表中相应记录}
      with tblRecord do
      begin
        Open;
        while not Eof do
        begin
          if(FieldByName('RECORD_ID').AsInteger=(PMyData(LastSelNode.Data))^.Id)then
          begin
            Update;
            FieldValues['RECORD_NAME']:=txtName.Text;
            FieldValues['RECORD_BIRTHDAY']:=dtpBirthday.DateTime;
            FieldValues['RECORD_TEL']:=txtTel.Text;
            FieldValues['RECORD_MOBILE']:=txtMobile.Text;
            FieldValues['RECORD_OICQ']:=txtQQ.Text;
            Post;
          end;
          next;
        end;
        Close;
      end;
    end;
  end;
  ActionCode:=0;
  TreeView1.Items.Clear;
  LoadDataForTreeView;
end;



function TForm1.CheckValid: Boolean;
begin
  result:=True;
end;

procedure TForm1.BtnCancelClick(Sender: TObject);
begin
  {动作编码为1,表示撤消添加操作}
  if(ActionCode=1)then
  begin
    ActiveControl:=TreeView1;
    TreeView1Change(TreeView1,LastSelNode);
  end
  {动作编码为2,表示撤消删除操作}
  else if(ActionCode=2)then
  begin
    ActiveControl:=TreeView1;
    TreeView1Change(TreeView1,LastSelNode);
  end
  {动作编码为3,表示撤消修改操作}
  else if(ActionCode=3)then
  begin
    ActiveControl:=TreeView1;
    TreeView1Change(TreeView1,LastSelNode);
  end;
  ActionCode:=0;
end;

procedure TForm1.BtnDeleteClick(Sender: TObject);
begin
  LastSelNode:=TreeView1.Selected;
  txtName.Text:='';
  dtpBirthday.DateTime:=now;
  txtQQ.Text:='';
  txtTel.Text:='';
  txtMobile.Text:='13*********';
  ActionCode:=2;//是删除动作
end;

procedure TForm1.BtnUpdateClick(Sender: TObject);
begin
  LastSelNode:=TreeView1.Selected;
  ActiveControl:=txtName;
  txtName.SelectAll;
  ActionCode:=3;//是修改动作  
end;

procedure TForm1.LoadGroupDataForListView(Id: Integer);
var
  NewItem:TListItem;
begin
  {清空TListView控件的内容}
  ListView1.Clear;
  {得到组号为Id的记录集}
  with ADOQuery1 do
  begin
    SQL.Clear;
    SQL.Add('SELECT RECORD_NAME,RECORD_BIRTHDAY,RECORD_TEL,RECORD_MOBILE,RECORD_OICQ');
    SQL.Add('FROM TXL_MAP,TXL_RECORD');
    SQL.Add('WHERE MAP_GROUP_ID='+IntToStr(Id));
    SQL.Add('AND MAP_RECORD_ID=RECORD_ID');
    Open;
    {将每条记录填入TListView控件中}
    while not Eof do
    begin
      NewItem:=ListView1.Items.Add;
      NewItem.Caption:=FieldByName('RECORD_NAME').AsString;
      NewItem.SubItems.Add(FieldByName('RECORD_BIRTHDAY').AsString);
      NewItem.SubItems.Add(FieldByName('RECORD_TEL').AsString);
      NewItem.SubItems.Add(FieldByName('RECORD_MOBILE').AsString);
      NewItem.SubItems.Add(FieldByName('RECORD_OICQ').AsString);
      next;
    end;
    Close;
  end;
end;

end.

⌨️ 快捷键说明

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