📄 unit1.cpp
字号:
CloseOleContainer();
}
//---------------------------------------------------------------------------
// Edit|Delete
void __fastcall TForm1::mitDeleteClick(TObject *Sender)
{
// Shortcut to this item is Ctrl+Del
// If you make it Del, you will be unable to use del key in editor
RichViewEdit1->DeleteSelection();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::mitSelectAllClick(TObject *Sender)
{
// warning: SelectAll moves caret to the end of the text
RichViewEdit1->SelectAll();
RichViewEdit1->SetFocus();
RichViewEdit1->Invalidate();
}
//---------------------------------------------------------------------------
// Another clipboard-related action
void __fastcall TForm1::RichViewEdit1Select(TObject *Sender)
{
mitCopy->Enabled = RichViewEdit1->SelectionExists();
mitCut->Enabled = mitCopy->Enabled;
mitDelete->Enabled = mitCopy->Enabled;
}
//---------------------------------------------------------------------------
// Edit| Insert Page Break
void __fastcall TForm1::mitInsertPageBreakClick(TObject *Sender)
{
RichViewEdit1->InsertPageBreak();
}
//---------------------------------------------------------------------------
// Edit| Remove Page Break
void __fastcall TForm1::mitRemovePageBreakClick(TObject *Sender)
{
RichViewEdit1->RemoveCurrentPageBreak();
}
//---------------------------------------------------------------------------
// Edit|Checkpoint...
void __fastcall TForm1::mitEditCheckpointClick(TObject *Sender)
{
int CpNo, Tag;
AnsiString Name;
bool RaiseEvent;
TCheckpointData CheckpointData = RichViewEdit1->GetCurrentCheckpoint();
if (CheckpointData)
{
RichViewEdit1->GetCheckpointInfo(CheckpointData,Tag,Name,RaiseEvent);
CpNo = RichViewEdit1->GetCheckpointNo(CheckpointData);
frmCP->lblStatus->Caption = "Editing checkpoint #"+IntToStr(CpNo);
frmCP->txtName->Text = Name;
frmCP->txtTag->Text = GetTagStr(Tag);
frmCP->btnOk->Caption = "OK";
frmCP->btnDelete->Enabled = true;
}
else
{
frmCP->lblStatus->Caption = "Checkpoint does not exist";
frmCP->txtName->Text = "";
frmCP->txtTag->Text = GetTagStr(0);
frmCP->btnOk->Caption = "Add";
frmCP->btnDelete->Enabled = false;
}
switch (frmCP->ShowModal())
{
case mrOk: // add new checkpoint or modify existed one
RichViewEdit1->SetCurrentCheckpointInfo(MakeTag(frmCP->txtTag->Text),
frmCP->txtName->Text,false);
break;
case mrYes: // delete checkpoint
RichViewEdit1->RemoveCurrentCheckpoint();
break;
}
}
//---------------------------------------------------------------------------
// Edit|Search...
void __fastcall TForm1::mitSearchClick(TObject *Sender)
{
FindDialog1->Execute();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FindDialog1Find(TObject *Sender)
{
TRVESearchOptions Options = GetRVESearchOptions(FindDialog1->Options);
if (!RichViewEdit1->SearchText(FindDialog1->FindText,
Options))
Application->MessageBox("Can't find", "Search complete", MB_OK | MB_ICONEXCLAMATION);
}
//---------------------------------------------------------------------------
// Edit|Select Current Word
void __fastcall TForm1::mitSelectCurrentWordClick(TObject *Sender)
{
RichViewEdit1->SelectCurrentWord();
// now you can do something with current word:
// translate or spell check, for example...
}
//---------------------------------------------------------------------------
#if __BORLANDC__ == 0x0540
// workaround for C++Builder 4 problem
namespace Rvuni
{
extern PACKAGE AnsiString __fastcall RVU_UnicodeToAnsi(int CodePage, const AnsiString
s);
}
#endif
// Edit|Current Item Properties...
void __fastcall TForm1::mitEditPropsClick(TObject *Sender)
{
AnsiString s;
int Tag, ImageIndex;
TCustomImageList * ImageList;
TRVVAlign VAlign;
TControl* ctrl;
TGraphic* gr;
TColor BreakColor;
TRVBreakStyle BreakStyle;
unsigned char BreakWidth;
frmProp->PageControl1->Visible = true;
frmProp->tsBullet->TabVisible = false;
frmProp->tsHotspot->TabVisible = false;
frmProp->tsPicture->TabVisible = false;
frmProp->tsText->TabVisible = false;
frmProp->tsComponent->TabVisible = false;
frmProp->tsBreak->TabVisible = false;
frmProp->txtName->Enabled = true;
switch (RichViewEdit1->CurItemStyle)
{
case rvsBullet:
{
RichViewEdit1->GetCurrentBulletInfo(s, ImageIndex, ImageList, Tag);
frmProp->tsBullet->TabVisible = true;
frmProp->rgBullet->ItemIndex = ImageIndex;
frmProp->txtName->Text = s;
frmProp->txtTag->Text = GetTagStr(Tag);
break;
}
case rvsHotspot:
{
// you can use GetCurrentBulletInfo or GetCurrentHotspotInfo
// to receive info about hotspot in caret position->
// in this demo we need not HotImageIndex, because here
// HotImageIndex = ImageIndex+2
// and so we can use GetCurrentBulletInfo
RichViewEdit1->GetCurrentBulletInfo(s, ImageIndex, ImageList, Tag);
frmProp->tsHotspot->TabVisible = true;
frmProp->rgHotspot->ItemIndex = ImageIndex-3;
frmProp->txtName->Text = s;
frmProp->txtTag->Text = GetTagStr(Tag);
break;
}
case rvsPicture:
case rvsHotPicture:
{
RichViewEdit1->GetCurrentPictureInfo(s, gr, VAlign, Tag);
frmProp->tsPicture->TabVisible = true;
frmProp->Image1->Picture->Graphic = gr;
frmProp->txtName->Text = s;
frmProp->txtTag->Text = GetTagStr(Tag);
frmProp->rgPicVAlign->ItemIndex = VAlign;
break;
}
case rvsComponent:
{
RichViewEdit1->GetCurrentControlInfo(s, ctrl, VAlign, Tag);
frmProp->tsComponent->TabVisible = true;
frmProp->txtWidth->Text = IntToStr(ctrl->Width);
frmProp->txtHeight->Text = IntToStr(ctrl->Height);
frmProp->txtName->Text = s;
frmProp->lblComponent->Caption = ctrl->ClassName();
frmProp->txtTag->Text = GetTagStr(Tag);
frmProp->rgCtrlVAlign->ItemIndex = Integer(VAlign);
break;
}
case rvsBreak:
{
RichViewEdit1->GetCurrentBreakInfo(BreakWidth, BreakStyle, BreakColor, Tag);
frmProp->tsBreak->TabVisible = true;
frmProp->txtBreakWidth->Text = IntToStr(BreakWidth);
switch (BreakColor)
{
case clNone:
frmProp->rgBreakColor->ItemIndex = 0;
break;
case clRed:
frmProp->rgBreakColor->ItemIndex = 1;
break;
case clGreen:
frmProp->rgBreakColor->ItemIndex = 2;
break;
case clBlue:
frmProp->rgBreakColor->ItemIndex = 3;
break;
}
frmProp->txtName->Text = "(not available for breaks)";
frmProp->txtName->Enabled = false;
frmProp->txtTag->Text = GetTagStr(Tag);
break;
}
case rvsTable:
{
frmProp->txtName->Text = RichViewEdit1->GetCurrentItemText();
frmProp->txtTag->Text = GetTagStr(RichViewEdit1->GetCurrentTag());
frmProp->PageControl1->Visible = false;
break;
}
default: // text
{
frmProp->tsText->TabVisible = true;
frmProp->txtName->Text = "(not available for text)";
frmProp->txtName->Enabled = false;
frmProp->lblText->Caption = RichViewEdit1->GetCurrentItemTextA();
frmProp->txtTag->Text = GetTagStr(RichViewEdit1->GetCurrentTag());
}
}
if (frmProp->ShowModal()==mrOk)
{
switch (RichViewEdit1->CurItemStyle)
{
case rvsBullet:
{
RichViewEdit1->SetCurrentBulletInfo(
frmProp->txtName->Text,
frmProp->rgBullet->ItemIndex,
NULL,
MakeTag(frmProp->txtTag->Text));
break;
}
case rvsHotspot:
{
RichViewEdit1->SetCurrentHotspotInfo(
frmProp->txtName->Text,
frmProp->rgHotspot->ItemIndex+3,
frmProp->rgHotspot->ItemIndex+3+2,
NULL,
MakeTag(frmProp->txtTag->Text));
break;
}
case rvsPicture:
case rvsHotPicture:
{
// first we need to create a copy of image ...
// RV_CreateGraphics is a global function pointer, defined in RVItem unit,
// it creates graphic object by its class
gr = RV_CreateGraphics(frmProp->Image1->Picture->Graphic->ClassType());
gr->Assign(frmProp->Image1->Picture->Graphic);
RichViewEdit1->SetCurrentPictureInfo(
frmProp->txtName->Text,
gr,
TRVVAlign(frmProp->rgPicVAlign->ItemIndex),
MakeTag(frmProp->txtTag->Text));
break;
}
case rvsComponent:
{
// we wish these setting to be undone as one action,
// so we use BeginUndoGroup, SetUndoGroupMode(true), settings, SetUndoGroupMode(false)
RichViewEdit1->BeginUndoGroup(rvutModifyItem);
// you can use BeginUndoCustomGroup instead of BeginUndoGroup
// example:
// RichViewEdit1->BeginUndoCustomGroup('modifying control');
// In this case undo type will be rvutCustom
// (look at TForm1->UpdateUndoMenu in this file)
RichViewEdit1->SetUndoGroupMode(true);
RichViewEdit1->SetCurrentControlInfo(
frmProp->txtName->Text,
TRVVAlign(frmProp->rgCtrlVAlign->ItemIndex),
MakeTag(frmProp->txtTag->Text));
RichViewEdit1->ResizeCurrentControl(
StrToIntDef(frmProp->txtWidth->Text, ctrl->Width),
StrToIntDef(frmProp->txtHeight->Text, ctrl->Height));
RichViewEdit1->SetUndoGroupMode(false);
break;
}
case rvsBreak:
{
switch (frmProp->rgBreakColor->ItemIndex)
{
case -1:
case 0:
BreakColor = clNone;
break;
case 1:
BreakColor = clRed;
break;
case 2:
BreakColor = clGreen;
break;
case 3:
BreakColor = clBlue;
break;
}
BreakWidth = (unsigned char)StrToIntDef(frmProp->txtBreakWidth->Text,1);
RichViewEdit1->SetCurrentBreakInfo(BreakWidth,BreakStyle,BreakColor,
MakeTag(frmProp->txtTag->Text));
break;
}
case rvsTable:
{
RichViewEdit1->BeginUndoGroup(rvutModifyItem);
RichViewEdit1->SetUndoGroupMode(true);
RichViewEdit1->SetCurrentItemText(frmProp->txtName->Text);
RichViewEdit1->SetCurrentTag(MakeTag(frmProp->txtTag->Text));
RichViewEdit1->SetUndoGroupMode(false);
break;
}
default:
{
RichViewEdit1->SetCurrentTag(MakeTag(frmProp->txtTag->Text));
}
}
}
}
//======================================================================
// Main menu : "Misc"
//======================================================================
// Misc | Go to checkpoint ...
void __fastcall TForm1::mitCheckpointListClick(TObject *Sender)
{
frmList->lst->Items->Clear();
TCheckpointData CheckpointData = RichViewEdit1->GetFirstCheckpoint();
while (CheckpointData)
{
int X,Y,Tag;
AnsiString Name, s;
bool RaiseEvent;
RichViewEdit1->GetCheckpointInfo(CheckpointData,Tag,Name,RaiseEvent);
RichViewEdit1->GetCheckpointXY(CheckpointData,X,Y);
s = "(X:"+IntToStr(X)+",Y:"+IntToStr(Y)+") Name:'"+Name+"' Tag:'"+GetTagStr(Tag)+"'";
frmList->lst->Items->Add(s);
CheckpointData = RichViewEdit1->GetNextCheckpoint(CheckpointData);
}
if (frmList->ShowModal()==mrOk)
RichViewEdit1->ScrollTo(RichViewEdit1->GetCheckpointY(frmList->lst->ItemIndex));
}
//---------------------------------------------------------------------------
// Misc | Background submenu popups
void __fastcall TForm1::mpdBackgroundClick(TObject *Sender)
{
// Displaying RichViewEdit1->BackgroundStyle as checkmark in submenu...
mitBackNoBitmap->Checked = RichViewEdit1->BackgroundStyle==bsNoBitmap;
mitBackStretched->Checked = RichViewEdit1->BackgroundStyle==bsStretched;
mitBackTiledandScrolled->Checked = RichViewEdit1->BackgroundStyle==bsTiledAndScrolled;
mitBackTiled->Checked = RichViewEdit1->BackgroundStyle==bsTiled;
mitBackCentered->Checked = RichViewEdit1->BackgroundStyle==bsCentered;
mitBackTopLeft->Checked = RichViewEdit1->BackgroundStyle==bsTopLeft;
mitBackTopRight->Checked = RichViewEdit1->BackgroundStyle==bsTopRight;
mitBackBottomLeft->Checked = RichViewEdit1->BackgroundStyle==bsBottomLeft;
mitBackBottomRight->Checked = RichViewEdit1->BackgroundStyle==bsBottomRight;
}
//---------------------------------------------------------------------------
// Misc | Background options
void __fastcall TForm1::mitBackClick(TObject *Sender)
{
RichViewEdit1->BackgroundStyle = (TBackgroundStyle)(((TMenuItem*)Sender)->Tag);
}
//---------------------------------------------------------------------------
// Misc | Read only
void __fastcall TForm1::mitReadOnlyClick(TObject *Sender)
{
RichViewEdit1->ReadOnly = ! RichViewEdit1->ReadOnly;
mitReadOnly->Checked = RichViewEdit1->ReadOnly;
}
//======================================================================
// On Popup
void __fastcall TForm1::PopupMenu1Popup(TObject *Sender)
{
mitEditProp1->Enabled = !RichViewEdit1->SelectionExists();
}
//---------------------------------------------------------------------------
// OnChange event handler.
void __fastcall TForm1::RichViewEdit1Change(TObject *Sender)
{
UpdateUndoMenu();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -