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

 
 回复人: 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;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值