用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;
}

 

通讯录-静态实现

头文件:     “Contact.h” #include #include #include enum po { EXIT, ADD, DELE, SER, MODIFY, DISPL...
  • qq_33951180
  • qq_33951180
  • 2016年05月14日 16:31
  • 458

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

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

c++实现简单的通讯录

c++实现通讯录
  • qq_24282081
  • qq_24282081
  • 2017年05月22日 10:23
  • 699

用python字典写的一个简单的通讯录小系统

直接上代码: mydic={} while True: print("="*7,"通讯录管理系统","="*7) print("1.增加姓名和手机") print("2.删除...
  • diye666
  • diye666
  • 2017年12月19日 16:18
  • 139

基于 链表 实现通讯录的功能

简介最近, 我编写了一个程序,用于实现手机通讯录的功能。 该程序基于 单向循环链表 , 实现了 新建联系人、(按编号、姓名、号码)删除联系人、(按编号、姓名、号码)修改联系人、(按编号、姓名、号码)...
  • ZM970307
  • ZM970307
  • 2017年05月28日 23:05
  • 305

一个简单通讯录的c#设计尝试

(1)主界面设计 通讯录的功能主要分为添加、查找、删除与修改这四个功能,因为查找和添加是最常用的功能,所以我把这两个功能单独列出来放到主界面上,把修改和删除合并成为在功能管理通讯录里,另外加上退出通...
  • ckpckp
  • ckpckp
  • 2014年07月10日 12:41
  • 1775

简单通讯录(以数组的方式实现增删改查)

实现一个简单的通讯录 增删改查 简单一点可以采用数组的方式来存储元素 首先给出结构体的定义: typedef struct PeopleInfo { char name[MAX_...
  • xy913741894
  • xy913741894
  • 2016年09月26日 16:32
  • 434

OC大作业_通讯录的实现

OC上机考试试题 ————通讯录 要求描述:⽤OC语言完成简易通讯录(实现增删改查)功 能. (注:使⽤用MRC) 一、功能描述: main函数中通过使用Person类和AddressBoo...
  • Ios_secret_lover
  • Ios_secret_lover
  • 2015年11月09日 21:13
  • 714

用java编写的一个通讯录,有图形界面

一直在网上找这样一个Frame,但都是
  • benyuanone
  • benyuanone
  • 2014年09月10日 17:08
  • 3160

UI开发----简单通讯录的实现

// Created By 郭仔  2015年04月23日23:18:08 // =================================== 简单通讯录的实现: // =======...
  • guoxianzhuang
  • guoxianzhuang
  • 2015年04月23日 23:33
  • 7142
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用TTreeview实现的一个通讯录的组别设置,
举报原因:
原因补充:

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