用TTreeview实现的一个通讯录的组别设置,

原创 2004年09月09日 18:29:00

 
 回复人: Adayuer([±0℃]) ( ) 信誉:96  2002-04-01 09:40:17Z  得分:0
 
 
 
看看我的一段代码吧。
用TTreeview实现的一个通讯录的组别设置,
联系人用Tlistview。
/---------------------------------------------------------------------------
void __fastcall TTBF::N5Click(TObject *Sender)
{
  THitTests HT;
  TTreeNode *Node1;
  if (mouse_Sender&&mouse_Sender->ClassNameIs("TTreeView"))
  {
    TTreeView *pTV = (TTreeView *)mouse_Sender;
    HT = pTV->GetHitTestInfoAt(mouse_x,mouse_y);
    if (HT.Contains(htOnItem))
      Node1=pTV->GetNodeAt(mouse_x,mouse_y);
      if(Node1->Text=="全部")
      {
        MessageDlg("///"全部///"是系统组,不能删除!", mtWarning, TMsgDlgButtons() << mbYes, 0);
      }
      else
        pTV->Items->Delete(Node1);

  }
}
//---------------------------------------------------------------------------
void __fastcall TTBF::GroupTVMouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
    mouse_x=X;
    mouse_y=Y;
    mouse_Sender=Sender;
}
//---------------------------------------------------------------------------
void __fastcall TTBF::N3Click(TObject *Sender)
{
  THitTests HT;
  TTreeNode *Node1;
  if (mouse_Sender&&mouse_Sender->ClassNameIs("TTreeView"))
  {
    TTreeView *pTV = (TTreeView *)mouse_Sender;
    HT = pTV->GetHitTestInfoAt(mouse_x,mouse_y);
    if (HT.Contains(htOnItem))
    {
        Node1 = pTV->GetNodeAt(mouse_x,mouse_y);
        if((Node1->Level==0)&&(Node1->Text=="全部"))
        {
            MessageDlg("/"全部/"是系统组,不能新建子键!", mtWarning, TMsgDlgButtons() << mbYes, 0);
            return;
        }
        if(Node1->Level==1)
        {
            MessageDlg("只能建立两级组别!", mtWarning, TMsgDlgButtons() << mbYes, 0);
            return;
        }
        else
        {
            TTreeNode *fNode;
            String S="新组别";
            fNode=Node1->getFirstChild();
            if(fNode)
                while(!NoSameName(fNode,S)){;};
            pTV->Items->AddChild(Node1,S);
        }
    }
  }
}
//---------------------------------------------------------------------------
void __fastcall TTBF::N2Click(TObject *Sender)
{
  THitTests HT;
  TTreeNode *Node1;
  if (mouse_Sender&&mouse_Sender->ClassNameIs("TTreeView"))
  {
    TTreeView *pTV = (TTreeView *)mouse_Sender;
    HT = pTV->GetHitTestInfoAt(mouse_x,mouse_y);
    if (HT.Contains(htOnItem))
    {
        Node1 = pTV->GetNodeAt(mouse_x,mouse_y);
        String S="新组别";
        while(!NoSameName(Node1,S)){;};
        pTV->Items->Add(Node1,S);
    }
  }
}
//---------------------------------------------------------------------------

void __fastcall TTBF::N4Click(TObject *Sender)
{
  THitTests HT;
  TTreeNode *Node1;
  if (mouse_Sender&&mouse_Sender->ClassNameIs("TTreeView"))
  {
    TTreeView *pTV = (TTreeView *)mouse_Sender;
    HT = pTV->GetHitTestInfoAt(mouse_x,mouse_y);
    if (HT.Contains(htOnItem))
    {
        Node1=pTV->GetNodeAt(mouse_x,mouse_y);
        if((Node1->Level==0)&&(Node1->Text=="全部"))
        {
            MessageDlg("/"全部/"是系统组,不能更名!", mtWarning, TMsgDlgButtons() << mbYes, 0);
        }
        else
            Node1->EditText();
    }
  }

}
//---------------------------------------------------------------------------
void __fastcall TTBF::GroupTVClick(TObject *Sender)
{
/*    THitTests HT;
    TTreeNode *Node1;
    if (Sender->ClassNameIs("TTreeView"))
    {
      TTreeView *pTV = (TTreeView *)Sender;
      HT = pTV->GetHitTestInfoAt(mouse_x,mouse_y);
      if (HT.Contains(htOnItem))
      {
          Node1 = pTV->GetNodeAt(mouse_x,mouse_y);
          SB->SimpleText="AbsoluteIndex:"+IntToStr(Node1->AbsoluteIndex)+"/tIndex:"+IntToStr(Node1->Index)+"/tText["+Node1->Text+"]";
      }
    }
*/   
}
//---------------------------------------------------------------------------

void __fastcall TTBF::GroupTVChange(TObject *Sender, TTreeNode *Node)
{
//    SB->SimpleText="Count:"+IntToStr(Node->Count)+"  AbsoluteIndex:"+IntToStr(Node->AbsoluteIndex)+"  Index:"+IntToStr(Node->Index)+"  Text["+Node->Text+"]";
    TListItem *pItem;
    String tmp;
    TBLV->Items->Clear();
    if((Node->Text=="全部"&&Node->Level==0))
    {
        for (int i = 0; i < M->tblist->Count; i++)
        {
            pItem = TBLV->Items->Add();
            tmp=((TelItem*)(M->tblist->Items[i]))->name;
            pItem->Caption = tmp;
            pItem->SubItems->Add(String(((TelItem*)(M->tblist->Items[i]))->nick));
            pItem->SubItems->Add(String(((TelItem*)(M->tblist->Items[i]))->phone));
            pItem->SubItems->Add(String((((TelItem*)(M->tblist->Items[i]))->type==0)?"英文":"中文"));
            pItem->SubItems->Add(String(((TelItem*)(M->tblist->Items[i]))->memo));
        }
        return;
    }
    else if(Node->Level==0)
    {
        for (int i = 0; i < M->tblist->Count; i++)
        {
            if(Node->Text!=String(((TelItem*)(M->tblist->Items[i]))->group))
                continue;
            pItem = TBLV->Items->Add();
            tmp=((TelItem*)(M->tblist->Items[i]))->name;
            pItem->Caption = tmp;
            pItem->SubItems->Add(String(((TelItem*)(M->tblist->Items[i]))->nick));
            pItem->SubItems->Add(String(((TelItem*)(M->tblist->Items[i]))->phone));
            pItem->SubItems->Add(String((((TelItem*)(M->tblist->Items[i]))->type==0)?"英文":"中文"));
            pItem->SubItems->Add(String(((TelItem*)(M->tblist->Items[i]))->memo));
        }
        return;
    }
    else if(Node->Level==1)
    {
        TTreeNode *pNode=Node->Parent;
        for (int i = 0; i < M->tblist->Count; i++)
        {
            if((Node->Text!=String(((TelItem*)(M->tblist->Items[i]))->subgroup))||(pNode->Text!=String(((TelItem*)(M->tblist->Items[i]))->group)))
                continue;
            pItem = TBLV->Items->Add();
            tmp=((TelItem*)(M->tblist->Items[i]))->name;
            pItem->Caption = tmp;
            pItem->SubItems->Add(String(((TelItem*)(M->tblist->Items[i]))->nick));
            pItem->SubItems->Add(String(((TelItem*)(M->tblist->Items[i]))->phone));
            pItem->SubItems->Add(String((((TelItem*)(M->tblist->Items[i]))->type==0)?"英文":"中文"));
            pItem->SubItems->Add(String(((TelItem*)(M->tblist->Items[i]))->memo));
        }
        return;
    }
}
//---------------------------------------------------------------------------

void __fastcall TTBF::GroupTVEditing(TObject *Sender, TTreeNode *Node,
      bool &AllowEdit)
{
    if((Node->Level==0)&&(Node->Text=="全部"))
        AllowEdit=false;
    else
        oldtext=Node->Text;
}

 

利用线性表实现通讯录管理

//实现通讯录的建立、增加、删除、修改、查询等功能 // 能够实现简单的菜单交互,即可以根据用户输入的命令,选择不同的操作。 #include  #include  using namespa...
  • zf526499456
  • zf526499456
  • 2015-01-07 22:56:23
  • 866

用C++实现一个简单的通讯录

C++实现通讯录 vector 和 迭代器使用的一点注意事项
  • Master_xiaohe
  • Master_xiaohe
  • 2017-02-19 22:46:10
  • 1981

数组实现通讯录

#ifndef __CONTACT_H__ #define __CONTACT_H__ #define MAX_NAME 20 #define MAX_SEX 5 #define MAX_TELE...
  • wanglelelihuanhuan
  • wanglelelihuanhuan
  • 2015-05-30 21:39:12
  • 494

静态顺序表实现简单的通讯录

一、通讯录实现要求: 实现一个通讯录; 通讯录可以用来存储1000个人的信息,每个人的信息包括: 姓名、性别、年龄、电话、住址 提供方法: 1. 添加联系人信息 2. 删除指定联系人信...
  • XHfight
  • XHfight
  • 2016-06-02 14:01:18
  • 1147

用链表实现一个简单的通讯录管理系统

  • 2009年10月13日 20:24
  • 1.47MB
  • 下载

用C语言实现一个通讯录

实现一个通讯录; 通讯录可以用来存储1000个人的信息,每个人的信息包括: 姓名、性别、年龄、电话、住址 提供方法: 1.    添加联系人信息 2.    删除指定联系人信息 3. ...
  • persistence_s
  • persistence_s
  • 2016-12-01 23:23:40
  • 3727

用单链表实现通讯录

/***************************************************************************************************...
  • lbd321
  • lbd321
  • 2016-12-09 19:51:48
  • 1417

用结构体数组写的一个通讯录

#include #include #include struct student {  int num;  char name[30];  char addr[30];  char tel[30...
  • Mao1253
  • Mao1253
  • 2017-12-18 13:16:39
  • 170

用python的字典实现简单的通讯录

性能要求: 源代码如下: print("|---欢迎进入通讯录程序---|") print("|---1:查询联系人资料 ---|") print("|---2:插入新的联系人 ---|") pri...
  • myloveprogrmming
  • myloveprogrmming
  • 2017-08-01 22:32:17
  • 1016

单链表的应用———简单的通讯录

本人初学数据结构,代码还不够完善,还望各位大神,可以指点一二。#include //建立通讯录 #include #include typedef struct Node{ char n...
  • x_zhaohu
  • x_zhaohu
  • 2015-04-21 23:08:38
  • 3035
收藏助手
不良信息举报
您举报文章:用TTreeview实现的一个通讯录的组别设置,
举报原因:
原因补充:

(最多只允许输入30个字)