📄 mainform.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "MainForm.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int NewNodeIndex=1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BackButtonClick(TObject *Sender)
{
if(TreeView1->Selected->Parent!=NULL)
{
int i=TreeView1->Selected->Index;
if(i>0)
if(!TreeView1->Selected->Parent->Item[i-1]->Expanded)
TreeView1->Selected=TreeView1->Selected->Parent->Item[i-1];
else
{
int ChildrenCount=TreeView1->Selected->Parent->Item[i-1]->Count;
if(!TreeView1->Selected->Parent->Item[i-1]->Item[ChildrenCount-1]->Expanded)
TreeView1->Selected=TreeView1->Selected->Parent->Item[i-1]->Item[ChildrenCount-1];
else if(TestExpandStatus(TreeView1->Selected->Parent->Item[i-1]->Item[ChildrenCount-1]))
return;
}
else
TreeView1->Selected=TreeView1->Selected->Parent;
}
}
//---------------------------------------------------------------------------
bool TForm1::TestExpandStatus(TTreeNode * PreNode)
{
if(PreNode->Expanded)
for(int i=PreNode->Count;i>0;i--)
{
if(TestExpandStatus(PreNode->Item[i-1]))
{
TreeView1->Selected=TreeView1->Selected->Parent->Item[i];
return true;
}
else
return false;
}
else
TreeView1->Selected=PreNode->Parent->Item[PreNode->Index-1];
return false;
}
void __fastcall TForm1::ForwordButtonClick(TObject *Sender)
{
if(!TestEnd(TreeView1->Selected))
if(TreeView1->Selected->Expanded)
TreeView1->Selected=TreeView1->Selected->Item[0];
else
{
if(TreeView1->Selected!=TreeView1->Items->Item[0])
{
int CurrentIndex=TreeView1->Selected->Index;
if(CurrentIndex<TreeView1->Selected->Parent->Count-1)
TreeView1->Selected=TreeView1->Selected->Parent->Item[CurrentIndex+1];
else
TestParantCount(TreeView1->Selected->Parent);
}
}
else
TreeView1->Selected=TreeView1->Items->Item[0];
}
//---------------------------------------------------------------------------
void TForm1::TestParantCount(TTreeNode * ParantNode)
{
if(ParantNode->Parent->Count>1)
{
int CurrentParantIndex=ParantNode->Index;
if(CurrentParantIndex<ParantNode->Parent->Count-1)
TreeView1->Selected=ParantNode->Parent->Item[CurrentParantIndex+1];
else if(ParantNode->Parent!=TreeView1->TopItem)
TestParantCount(ParantNode->Parent);
}
else if(ParantNode->Parent!=TreeView1->TopItem)
TestParantCount(ParantNode->Parent);
}
bool TForm1::TestEnd(TTreeNode * CurrentNode)
{
if(CurrentNode!=TreeView1->TopItem)
{
if(CurrentNode->Index==CurrentNode->Parent->Count-1)
if(CurrentNode->GetNext()==NULL)
return true;
else if(CurrentNode->Expanded==false&&CurrentNode->Parent==TreeView1->TopItem)
return true;
else if(ParentIsEnd(CurrentNode))
return true;
else
return false;
else
return false;
}
return false;
}
void __fastcall TForm1::UpButtonClick(TObject *Sender)
{
if(TreeView1->Selected!=TreeView1->TopItem)
{
TreeView1->Selected->Parent->Collapse(false);
// TreeView1->Selected=TreeView1->Selected->Parent;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::CollapseButtonClick(TObject *Sender)
{
TreeView1->FullCollapse();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ExpandButtonClick(TObject *Sender)
{
TreeView1->FullExpand();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::DeleteButtonClick(TObject *Sender)
{
TreeView1->Selected->Delete();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::InsertButtonClick(TObject *Sender)
{
// TreeView1->Items->Insert(TreeView1->Selected,"新节点"+IntToStr(NewNodeIndex)); 简单插入功能
TreeView1->Items->AddChildFirst(TreeView1->Selected,"新节点"+IntToStr(NewNodeIndex));
TreeView1->Selected->Expand(false);
TreeView1->Selected=TreeView1->Selected->Item[0];
TreeView1->Selected->EditText();
NewNodeIndex++;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TreeView1Change(TObject *Sender, TTreeNode *Node)
{
TListItem *PLItem;
ListView1->Items->Clear();
if(ListView1->ViewStyle!=vsReport)
for(int i=0;i<TreeView1->Selected->Count;i++)
{
PLItem=ListView1->Items->Add();
PLItem->Caption=TreeView1->Selected->Item[i]->Text;
PLItem->ImageIndex=0;
}
else
for(int i=0;i<TreeView1->Selected->Count;i++)
{
PLItem=ListView1->Items->Add();
PLItem->Caption=TreeView1->Selected->Item[i]->Text;
PLItem->ImageIndex=0;
if(TreeView1->Selected!=TreeView1->TopItem)
PLItem->SubItems->Add(TreeView1->Selected->Parent->Text);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ViewStyleExecute(TObject *Sender)
{
switch(dynamic_cast<TMenuItem *>(Sender)->Tag)
{
case 0:
ListView1->ViewStyle=vsIcon;
break;
case 1:
ListView1->ViewStyle=vsSmallIcon;
break;
case 2:
ListView1->ViewStyle=vsList;
break;
case 3:
ListView1->ViewStyle=vsReport;
break;
default:
break;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ViewButtonClick(TObject *Sender)
{
switch(ListView1->ViewStyle)
{
case vsReport:
ViewStyleExecute(Form1->BigIconCmd);
break;
case vsIcon:
ViewStyleExecute(Form1->SmallIconCmd);
break;
case vsSmallIcon:
ViewStyleExecute(Form1->ListCmd);
break;
case vsList:
ViewStyleExecute(Form1->DailCmd);
break;
default:
break;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
ListView1->ViewStyle=vsIcon;
}
//---------------------------------------------------------------------------
bool TForm1::ParentIsEnd(TTreeNode * CurrentNode)
{
TTreeNode *TempNode;
TempNode=CurrentNode;
if(CurrentNode->Level>1&&CurrentNode->Expanded==false)
while(CurrentNode->Level>=1)
{
if(CurrentNode->Parent==TreeView1->TopItem&&CurrentNode->Index==CurrentNode->Parent->Count-1)
while(TempNode->Level>1)
{
if(TempNode->Parent==CurrentNode&&TempNode->Index==CurrentNode->Count-1)
return true;
TempNode=TempNode->Parent;
}
CurrentNode=CurrentNode->Parent;
}
return false;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -