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

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

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

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航