📄 mainunit.cpp
字号:
while((GetTickCount()-ITime) < 2000);
AboutBox->Hide();
AboutBox->Free();
}
//---------------------------------------------------------------------------
//窗体关闭之前
void __fastcall TMainForm::FormClose(TObject *Sender, TCloseAction &Action)
{
FreeLibrary(hhctrl);
if(IndexChanged || RichEdit->Modified)
{
switch(Application->MessageBox("数据库已改动,是否保存?","电子书库",
MB_YESNOCANCEL))
{
case IDCANCEL:
Action=caNone;
break;
case IDNO:
IndexChanged=false;
RichEdit->Modified=false;
}
}
if(RichEdit->Modified)
SaveContentToFile(); //保存RichEdit中的内容
if(IndexChanged)
SaveIndexToFile(); //更新索引
SaveStatusToReg(); //保存应用程序的状态
fclose(DatFp); //关闭数据文件
}
//---------------------------------------------------------------------------
//树形视图有输入焦点的节点改变后
void __fastcall TMainForm::TreeViewChange(TObject *Sender, TTreeNode *Node)
{
TitleFLabel->Caption=Node->Text;
TitleNLabel->Caption=Node->Text; //标题置中
if(RichEdit->Modified) //文本改动标志为真
SaveContentToFile();
ActiveNode=Node;
RichEdit->OnChange=NULL;
LoadContentFromFile();
}
//---------------------------------------------------------------------------
//节点被编辑以后
void __fastcall TMainForm::TreeViewEdited(TObject *Sender, TTreeNode *Node,
AnsiString &S)
{
if((!S.Length())&&(!RichEdit->GetTextLen())&&(!Node->getFirstChild()))
{
PostMessage(TreeView->Handle,TVM_DELETEITEM,0,(long)Node->ItemId);
StatusBar->Panels->Items[3]->Text=AnsiString("总记录数:")+TreeView->Items->Count;
}
else
{
IndexChanged=true;
}
}
//---------------------------------------------------------------------------
//文本编辑区选择的改变
void __fastcall TMainForm::RichEditSelectionChange(TObject *Sender)
{
if(RichEdit->SelLength) //当被选择的文本长度不为0时
{
CutToolButton->Enabled=true;
CopyToolButton->Enabled=true;
}
else
{
CutToolButton->Enabled=false;
CopyToolButton->Enabled=false;
}
}
//---------------------------------------------------------------------------
//进入文本编辑区时
void __fastcall TMainForm::RichEditEnter(TObject *Sender)
{
GetLineRow();
}
//---------------------------------------------------------------------------
//光标位置改变时
void __fastcall TMainForm::RichEditKeyUp(TObject *Sender, WORD &Key,
TShiftState Shift)
{
GetLineRow();
}
//---------------------------------------------------------------------------
//查找函数
void __fastcall TMainForm::FindDialogFind(TObject *Sender)
{
int FoundAt, StartPos, ToEnd;
TSearchTypes SearchFlag;
if(FindDialog->Options.Contains(frMatchCase))SearchFlag<<stMatchCase;
if(FindDialog->Options.Contains(frWholeWord))SearchFlag<<stWholeWord;
StartPos = RichEdit->SelStart + RichEdit->SelLength;
ToEnd = RichEdit->Text.Length() - StartPos;
FoundAt=RichEdit->FindText(FindDialog->FindText,StartPos,ToEnd,
SearchFlag);
if (FoundAt != -1)
{
RichEdit->SetFocus();
RichEdit->SelStart = FoundAt;
RichEdit->SelLength = FindDialog->FindText.Length();
}
else
{
RichEdit->SelLength=0;
RichEdit->SelStart=StartPos;
Application->MessageBox(("找不到 "+AnsiString(FindDialog->FindText)).c_str(),
"查找失败",0);
}
}
//---------------------------------------------------------------------------
//替换功能
void __fastcall TMainForm::ReplaceDialogReplace(TObject *Sender)
{
int FoundAt, StartPos, ToEnd;
TSearchTypes SearchFlag;
if(ReplaceDialog->Options.Contains(frMatchCase))SearchFlag<<stMatchCase;
if(ReplaceDialog->Options.Contains(frWholeWord))SearchFlag<<stWholeWord;
StartPos = RichEdit->SelStart;
ToEnd = RichEdit->Text.Length() - StartPos;
if(ReplaceDialog->Options.Contains(frReplace))
{
FoundAt=RichEdit->FindText(ReplaceDialog->FindText,StartPos,ToEnd,
SearchFlag);
if (FoundAt != -1)
{
RichEdit->SetFocus();
RichEdit->SelStart = FoundAt;
RichEdit->SelLength = ReplaceDialog->FindText.Length();
RichEdit->SelText = ReplaceDialog->ReplaceText;
RichEdit->SelStart = FoundAt;
RichEdit->SelLength = ReplaceDialog->ReplaceText.Length();
}
else
{
RichEdit->SelLength=0;
RichEdit->SelStart=StartPos;
Application->MessageBox(("找不到 "+AnsiString(FindDialog->FindText)).c_str(),
"查找失败",0);
}
}
else if(ReplaceDialog->Options.Contains(frReplaceAll))
{
StartPos=0;
FoundAt=0;
while(FoundAt != -1)
{
FoundAt=RichEdit->FindText(ReplaceDialog->FindText,StartPos,ToEnd,
SearchFlag);
if(FoundAt != -1)
{
RichEdit->SetFocus();
RichEdit->SelStart = FoundAt;
RichEdit->SelLength=ReplaceDialog->FindText.Length();
RichEdit->SelText=ReplaceDialog->ReplaceText;
}
else
Application->MessageBox("已经成功完成全文件的替换工作","替换完毕",0);
}
}
}
//---------------------------------------------------------------------------
//左右面积大小改变后
void __fastcall TMainForm::PanelResize(TObject *Sender)
{
KivenFLabel->Width=Panel3->Width-3;
KivenNLabel->Width=Panel3->Width-3;
TitleFLabel->Width=Panel4->Width-3;
TitleNLabel->Width=Panel4->Width-3;
}
//---------------------------------------------------------------------------
//文件菜单弹出时的动作
void __fastcall TMainForm::FileMenuItemClick(TObject *Sender)
{
if(RichEdit->GetTextLen())
{
ExportMenuItem->Enabled=true;
PrintMenuItem->Enabled=true;
}
else
{
ExportMenuItem->Enabled=false;
PrintMenuItem->Enabled=false;
}
}
//---------------------------------------------------------------------------
//编辑菜单弹出时的动作
void __fastcall TMainForm::EditMenuItemClick(TObject *Sender)
{
bool Sel=CutToolButton->Enabled;
CutMenuItem->Enabled=Sel;
CopyMenuItem->Enabled=Sel;
DelMenuItem->Enabled=Sel;
DelSpaceMenuItem->Enabled=Sel;
CoalitionMenuItem->Enabled=Sel;
if((RichEdit->SelLength==RichEdit->GetTextLen()+2)||(!RichEdit->GetTextLen()))
SelAllMenuItem->Enabled=false;
else
SelAllMenuItem->Enabled=true;
}
//---------------------------------------------------------------------------
//RichEdit的弹出菜单弹出时
void __fastcall TMainForm::RichEditPopupMenuPopup(TObject *Sender)
{
bool Sel=CutToolButton->Enabled;
CutPopMenuItem->Enabled=Sel;
CopyPopMenuItem->Enabled=Sel;
DelPopMenuItem->Enabled=Sel;
DelSpacePopMenuItem->Enabled=Sel;
CoalitionPopMenuItem->Enabled=Sel;
if((RichEdit->SelLength==RichEdit->GetTextLen()+2)||(!RichEdit->GetTextLen()))
SelAllPopMenuItem->Enabled=false;
else
SelAllPopMenuItem->Enabled=true;
}
//---------------------------------------------------------------------------
//从文件中添加到数据库
void __fastcall TMainForm::AppendMenuItemClick(TObject *Sender)
{
FILE *pFp;
char *pBuf;
int pSize;
if(OpenDialog->Execute())
{
pFp=fopen(OpenDialog->FileName.c_str(),"rb"); //打开选取的文件
fseek(pFp,0,2);
pSize=ftell(pFp); //得到文件长度
fseek(pFp,0,0); //置位文件指针回文件头
pBuf=new char[pSize];
fread(pBuf,sizeof(char),pSize,pFp); //读入文件内容
fclose(pFp);
RichEdit->SelText=pBuf;
delete pBuf;
}
}
//---------------------------------------------------------------------------
//读入所选文件内容到RichEdit
void __fastcall TMainForm::ImportMenuItemClick(TObject *Sender)
{
TTreeNode *TempNode;
char TitleName[256];
int i;
if(OpenDialog->Execute())
{
for(i=0;i<OpenDialog->Files->Count;i++) //循环读入多重选择文件
{
TempNode=TreeView->Items->Insert(TreeView->Selected,
GetNameFromFileName(TitleName,OpenDialog->Files->Strings[i].c_str()));
TempNode->ImageIndex=-1;
TreeView->Selected=TempNode;
RichEdit->Lines->LoadFromFile(OpenDialog->Files->Strings[i]);
}
StatusBar->Panels->Items[3]->Text=AnsiString("总记录数:")+TreeView->Items->Count;
}
}
//---------------------------------------------------------------------------
//将文本内容另存为文件
void __fastcall TMainForm::ExportMenuItemClick(TObject *Sender)
{
if(RichEdit->GetTextLen())
{
if(SaveDialog->Execute())
RichEdit->Lines->SaveToFile(SaveDialog->FileName);
}
}
//---------------------------------------------------------------------------
//打印文本内容
void __fastcall TMainForm::PrintMenuItemClick(TObject *Sender)
{
if(RichEdit->GetTextLen())
RichEdit->Print(TitleFLabel->Caption);
}
//---------------------------------------------------------------------------
//关闭应用程序
void __fastcall TMainForm::ExitMenuItemClick(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
//将所选文本剪切
void __fastcall TMainForm::CutMenuItemClick(TObject *Sender)
{
RichEdit->CutToClipboard();
}
//---------------------------------------------------------------------------
//将所选文本拷贝
void __fastcall TMainForm::CopyMenuItemClick(TObject *Sender)
{
RichEdit->CopyToClipboard();
}
//---------------------------------------------------------------------------
//将所选文本粘贴
void __fastcall TMainForm::PasteMenuItemClick(TObject *Sender)
{
RichEdit->PasteFromClipboard();
}
//---------------------------------------------------------------------------
//将所选文本清除
void __fastcall TMainForm::DelMenuItemClick(TObject *Sender)
{
RichEdit->ClearSelection();
}
//---------------------------------------------------------------------------
//选择所有文本
void __fastcall TMainForm::SelAllMenuItemClick(TObject *Sender)
{
RichEdit->SelectAll();
}
//---------------------------------------------------------------------------
//查找文本
void __fastcall TMainForm::FindMenuItemClick(TObject *Sender)
{
ReplaceDialog->ReplaceText="";
FindDialog->Execute();
}
//---------------------------------------------------------------------------
//查找下一匹配文本
void __fastcall TMainForm::FindNextMenuItemClick(TObject *Sender)
{
if(ReplaceDialog->ReplaceText.Length())
{
ReplaceDialog->Options<<frReplace;
ReplaceDialogReplace(Sender);
}
else if(FindDialog->FindText.Length())
{
FindDialogFind(Sender);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -