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

📄 mainunit.cpp

📁 一个小巧实用的电子书库程序
💻 CPP
📖 第 1 页 / 共 3 页
字号:
  }
  else
    FindDialog->Execute();
}
//---------------------------------------------------------------------------
//替换找到的文本
void __fastcall TMainForm::ReplaceMenuItemClick(TObject *Sender)
{
  ReplaceDialog->Execute();
}
//---------------------------------------------------------------------------
//删除汉字间的空格
void __fastcall TMainForm::DelSpaceMenuItemClick(TObject *Sender)
{
  int i,Size;
  char *OldBuf,*NewBuf,*TempOldBuf,*TempNewBuf;
  Size=RichEdit->SelLength+1;
  OldBuf=new char[Size];
  NewBuf=new char[Size];
  TempOldBuf=OldBuf;
  TempNewBuf=NewBuf;
  try
  {
    RichEdit->GetSelTextBuf(OldBuf,Size);
    for(i=0;i<Size;i++)
    {
      if((*TempOldBuf==' ')&&(*(TempOldBuf-1)<0))
      {
        TempOldBuf++;
      }
      else
        *(TempNewBuf++)=*(TempOldBuf++);
    }
    *TempNewBuf=NULL;
    RichEdit->SetSelTextBuf(NewBuf);
  }
  __finally
  {
    delete OldBuf;
    delete NewBuf;
  }
}
//---------------------------------------------------------------------------
//合并段落
void __fastcall TMainForm::CoalitionMenuItemClick(TObject *Sender)
{
  int i,Size;
  char *OldBuf,*NewBuf,*TempOldBuf,*TempNewBuf;
  Size=RichEdit->SelLength+1;
  OldBuf=new char[Size];
  NewBuf=new char[Size];
  TempOldBuf=OldBuf;
  TempNewBuf=NewBuf;
  try
  {
    RichEdit->GetSelTextBuf(OldBuf,Size);
    for(i=0;i<Size;i++)
    {
      if((*TempOldBuf==0X0A)||(*TempOldBuf==0X0D))
      {
        TempOldBuf++;
      }
      else
        *(TempNewBuf++)=*(TempOldBuf++);
    }
    *TempNewBuf=NULL;
    RichEdit->SetSelTextBuf(NewBuf);
  }
  __finally
  {
    delete OldBuf;
    delete NewBuf;
  }
}
//---------------------------------------------------------------------------
//分割段落
void __fastcall TMainForm::SplitMenuItemClick(TObject *Sender)
{
  int i,Size;
  bool Zi;
  char *OldBuf,*NewBuf,*TempOldBuf,*TempNewBuf;
  Size=RichEdit->SelLength+1;
  OldBuf=new char[Size];
  NewBuf=new char[Size+(Size/LineCount)*2+50];
  TempOldBuf=OldBuf;
  TempNewBuf=NewBuf;
  try
  {
    RichEdit->GetSelTextBuf(OldBuf,Size);
    i=0;
    Zi=true;
    while(*TempOldBuf)
    {
      if(*TempOldBuf<0)
        Zi=! Zi;
      else
        Zi=true;
      *(TempNewBuf++)=*(TempOldBuf++);
      i++;
      if((i>LineCount) && (Zi))
      {
          i=0;
          *(TempNewBuf++)=0x0D;
          *(TempNewBuf++)=0x0A;
      }
    }
    *TempNewBuf=NULL;
    RichEdit->SetSelTextBuf(NewBuf);
  }
  __finally
  {
    delete OldBuf;
    delete NewBuf;
  }
}
//---------------------------------------------------------------------------
//隐藏或显示工具栏
void __fastcall TMainForm::ToolsMenuItemClick(TObject *Sender)
{
  ToolBar->Visible=!(ToolBar->Visible);
  ToolsMenuItem->Checked=ToolBar->Visible;
}
//---------------------------------------------------------------------------
//隐藏或显示状态栏
void __fastcall TMainForm::StatusMenuItemClick(TObject *Sender)
{
  StatusBar->Visible=!(StatusBar->Visible);
  StatusMenuItem->Checked=StatusBar->Visible;
}
//---------------------------------------------------------------------------
//字体放大
void __fastcall TMainForm::BigFontMenuItemClick(TObject *Sender)
{
  RichEdit->Font->Size+=1;
}
//---------------------------------------------------------------------------
//字体缩小
void __fastcall TMainForm::SmallFontMenuItemClick(TObject *Sender)
{
  RichEdit->Font->Size-=1;
}
//---------------------------------------------------------------------------
//定制选项
void __fastcall TMainForm::OptionsMenuItemClick(TObject *Sender)
{
  OptionForm=new TOptionForm(Application);
  OptionForm->ToolCheckBox->Checked=ToolsMenuItem->Checked;
  OptionForm->StatusCheckBox->Checked=StatusMenuItem->Checked;
  OptionForm->LineCountEdit->Text=AnsiString(LineCount+3);
  OptionForm->TreeFontSizeUpDown->Position=TreeView->Font->Size;
  if(OptionForm->ShowModal()==mrOk)
  {
    ToolsMenuItem->Checked=OptionForm->ToolCheckBox->Checked;
    ToolBar->Visible=ToolsMenuItem->Checked;
    StatusMenuItem->Checked=OptionForm->StatusCheckBox->Checked;
    StatusBar->Visible=StatusMenuItem->Checked;
    LineCount=OptionForm->LineCountEdit->Text.ToInt()-3;
    TreeView->Font->Size=OptionForm->TreeFontSizeEdit->Text.ToInt();
  }
  delete OptionForm;
}
//---------------------------------------------------------------------------
//加新标题
void __fastcall TMainForm::AddNodeMenuItemClick(TObject *Sender)
{
  TTreeNode *TempNode;
  TempNode=TreeView->Items->Insert(TreeView->Selected,"新建标题");
  TempNode->ImageIndex=-1;
  TreeView->Selected=TempNode;
  StatusBar->Panels->Items[3]->Text=AnsiString("总记录数:")+TreeView->Items->Count;
  TempNode->EditText();
}
//---------------------------------------------------------------------------
//加新子标题
void __fastcall TMainForm::AddSubNodeMenuItemClick(TObject *Sender)
{
  TTreeNode *TempNode;
  TempNode=TreeView->Items->AddChild(TreeView->Selected,"新建子标题");
  TempNode->ImageIndex=-1;
  TreeView->Selected->Expand(true);
  TreeView->Selected=TempNode;
  StatusBar->Panels->Items[3]->Text=AnsiString("总记录数:")+TreeView->Items->Count;
  TempNode->EditText();
}
//---------------------------------------------------------------------------
//隐藏/显示标题栏
void __fastcall TMainForm::EditNodeMenuItemClick(TObject *Sender)
{
  TreeView->Selected->EditText();
}
//---------------------------------------------------------------------------
//删除标题
void __fastcall TMainForm::DelNodeMenuItemClick(TObject *Sender)
{
  if(TreeView->Selected->getFirstChild())
    if(Application->MessageBox("是否删除该标题下的所有标题?","电子书库",
                               MB_ICONWARNING+MB_OKCANCEL)==IDCANCEL)
      return;
  TreeView->Selected->Delete();
  IndexChanged=true;
  StatusBar->Panels->Items[3]->Text=AnsiString("总记录数:")+TreeView->Items->Count;
}
//---------------------------------------------------------------------------
//展开当前标题
void __fastcall TMainForm::ExtNodeMenuItemClick(TObject *Sender)
{
  TreeView->Selected->Expand(true);
}
//---------------------------------------------------------------------------
//展开所有标题
void __fastcall TMainForm::ExtAllNodeMenuItemClick(TObject *Sender)
{
  TreeView->FullExpand();
}
//---------------------------------------------------------------------------
//合并当前标题
void __fastcall TMainForm::CoalitionNodeMenuItemClick(TObject *Sender)
{
  TreeView->Selected->Collapse(true);
}
//---------------------------------------------------------------------------
//合并所有标题
void __fastcall TMainForm::CoalitionAllNodeMenuItemClick(TObject *Sender)
{
  TreeView->FullCollapse();
}
//---------------------------------------------------------------------------
//压缩数据库
void __fastcall TMainForm::CompressMenuItemClick(TObject *Sender)
{
  CompressDatabase();
}
//---------------------------------------------------------------------------
//数据库存盘
void __fastcall TMainForm::SaveMenuItemClick(TObject *Sender)
{
  if(RichEdit->Modified)
    SaveContentToFile();
  if(IndexChanged)
    SaveIndexToFile();
}
//---------------------------------------------------------------------------
//把整个数据库导出成HTML
void __fastcall TMainForm::HtmlMenuItemClick(TObject *Sender)
{
//留待下一版本再加此功能
}
//---------------------------------------------------------------------------
//在线帮助
void __fastcall TMainForm::ReadmeMenuItemClick(TObject *Sender)
{
  if(hhctrl)     //如果支持HTML帮助则调用HTML帮助
    HtmlHelp(0,GetFileName("chm"),0,0);
  else          //不支持HTML帮助则调用普通HELP帮助
    WinHelp(Application->Handle,GetFileName("hlp"),HELP_CONTEXT,10);
}
//---------------------------------------------------------------------------
//关于本软件的一些信息
void __fastcall TMainForm::AboutMenuItemClick(TObject *Sender)
{
  AboutBox=new TAboutBox(MainForm);
  AboutBox->ShowModal();   //显示版权信息窗口
  AboutBox->Free();
}
//---------------------------------------------------------------------------
//显示帮助文件中的索易中文软件联盟的一些信息
void __fastcall TMainForm::OrtherMenuItemClick(TObject *Sender)
{
  char Buf[256];
  if(hhctrl)
  {
    strcpy(Buf,GetFileName("chm"));
    strcat(Buf,"::book6.htm");
    HtmlHelp(0,Buf,0,0);
  }
  else
    WinHelp(Application->Handle,GetFileName("hlp"),HELP_CONTEXT,60);
}
//---------------------------------------------------------------------------
//开始拖动树形视图标题时
void __fastcall TMainForm::TreeViewStartDrag(TObject *Sender,
      TDragObject *&DragObject)
{
  TreeView->BeginDrag(true);  //允许拖动
}
//---------------------------------------------------------------------------
//结束拖动树形视图标题前
void __fastcall TMainForm::TreeViewEndDrag(TObject *Sender,
      TObject *Target, int X, int Y)
{
  POINT pxy;
  TTreeNode *SourceNode,*DestinNode;
  SourceNode=TreeView->Selected;  //得被拖动的标题
  GetCursorPos(&pxy);    //取MOUSE位置
  ::ScreenToClient(TreeView->Handle,&pxy);  //转换成TREEVIEW相对坐标
  DestinNode=TreeView->GetNodeAt(pxy.x,pxy.y);  //得坐标处标题
  if(DestinNode && DestinNode!=SourceNode)
    SourceNode->MoveTo(DestinNode,naInsert);   //移被拖动标题到相应位置
  TreeView->EndDrag(true);  //结束拖动
  IndexChanged=true;      //置索引改变为真
}
//---------------------------------------------------------------------------
//树形标题拖动时
void __fastcall TMainForm::TreeViewDragOver(TObject *Sender,
      TObject *Source, int X, int Y, TDragState State, bool &Accept)
{
  Accept=true;  //返回真值以允许拖动
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::TitleMenuItemClick(TObject *Sender)
{
  TitleMenuItem->Checked=!TitleMenuItem->Checked;
  LeftPanelToolButton->Down=TitleMenuItem->Checked;
  Splitter->Visible=TitleMenuItem->Checked;
  LeftPanel->Visible=TitleMenuItem->Checked;
}
//---------------------------------------------------------------------------
//只读功能
void __fastcall TMainForm::ReadOnlyMenuItemClick(TObject *Sender)
{
  ReadOnlyMenuItem->Checked=!ReadOnlyMenuItem->Checked;
  ReadOnlyToolButton->Down=ReadOnlyMenuItem->Checked;
  RichEdit->ReadOnly=ReadOnlyMenuItem->Checked;
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -