⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainform.cpp

📁 C++Builder程序员编程手记《配书光盘》
💻 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 + -