{ FUpdating = false; } // ( ) FUpdating = false;
}
// TTextAttributes *_ fastcall TMainForm::CurrText(void) { return RichEditl->SelAttributes;
}
// int EnumFontsProc(TLogFontA &LogFont, TTextMetricA &, int,
Pointer Data) { ((TStrings *)Data)->Add((AnsiString)LogFont.IfFaceName);
return 1;
}
// void _fastcall TMainForm::GetFontNames (void) { HDC hDC = GetDC(O);
void * cTmp = (void *)FontName->Items;
EnumFonts(hDC, NULL, (FONTENUMPROC) EnumFontsProc, (long) cTmp);
ReleaseDC(0,hDC);
FontName->Sorted = true;
}
// void _fastcall TMainForm::SetFileName(const AnsiString
FileName) (LPSTR IpBuf = new char[MAX_pATH];
sprintf(IpBuf, "%s-%s", ExtractFileName(FileName).c_str(), Application->Title.c_str());
Caption = (AnsiString)IpBuf;
FFileName = FileName;
delete IpBuf;
}
// " ?" void _fastcall TMainForm::CheckFileSave(void) { if (RichEditl->Modified) {
switch(M&ssageBox(Handle, "Save Changes?", "Confimation",
MB_YESNOCANCEL I MB_ICONQUESTION)) { case ID_YES: FileSaveClick(this);
case ID_CANCEL: Abort();
};
) }
// void _fastcall TMainPorm::SetupRuler(void) { int iCtr = 1;
char sTmp[201];
while (iCtr < 200) (
sTmp[iCtr++] = 9; // sTmp[iCtr++] = 'I'; // } Ruler->Caption = (AnsiString)sTmp;
}
// Windows void _fastcall TMainForm::SetEditRect (void) (TRect Ret = Rect(GutterWid, 0,
RichEditl->ClientWidth-GutterWid, ClientHeight);
SendMessage(RichEditl->Handle, EM_SETRECT, 0, long(&Rct));
}
// void _fastcall TMainForm::FormCreate(TObject* /*Sender*/) { Application->OnHint = &ShowHint;
OpenDialog->InitialDir = ExtractFilePath(ParamStr(0));
SaveDialog->InitialDir = OpenDialog->InitialDir;
GetFontNames();
SetupRuler();
SelectionChange(this); //
}
// void_fastcall TMainForm::ShowHint(TObject* /*Sender*/) { StatusBar->SimpleText = Application->Hint;
}
// File I New void_fastcall TMainForm::FileNewClick(TObject* /*Sender*/) { CheckFileSavef); // ? SetFileName((AnsiString)"Untitled");
RichEditl->Lines->Clear();
RichEditl->Modified = false;
}
// File I Open void _fastcall TMainForm::FileOpenClick(TObject*) { CheckFileSave(); // ? if (OpenDialog->Execute()) {
RichEditl->Lines->LoadFromFile(OpenDialog->FileName);
|
|
SetFileName(OpenDialog->FileName);
RichEditl->SetFocus();
RichEditl->Modified = false;
RichEditl->ReadOnly =
OpenDialog->Options.Contains(ofReadOnly);
} }
// File I Save void?*_fastcall TMainForm::FileSaveClick(TObject* Sender) { if (!strcmp(FFileName.c_str(), "Untitled"))
FileSaveAsClick(Sender); // else
{ RichEditl->Lines->SaveToFile(FFileName); // RichEditl->Modified = false;
})
// FilelSaveAs void _fastcall TMainForm::FileSaveAsClick(TObject*) { if (SaveDialog->Execute()) {
RichEditl->Lines->SaveToFile(SaveDialog->FileName);
SetFileName(SaveDialog->FileName);
RichEditl->Modified = false;
} }
// File I Print void _fastcall TMainForm::FilePrintClick(TObject*) { if (PrintDialog->Execute()) RichEditl->Print(FFileName);
}
// File I Exit void _fastcall TMainForm::FileExitClick(TObject*) { Close();
}
// Edit I Undo void _fastcall TMainForm::EditUndoClick(TObject*) (if (RichEditl->HandleAllocated())
SendMessage(RichEditl->Handle, EM_UNDO, 0, 0);
}
// Edit I Cut void _fastcall TMainForm::EditCutClick(TObject*) { RichEditl->CutToClipboard();
}
// Edit I Copy void _fastcall TMainForm::EditCopyClick(TObject*) { RichEditl->CopyToClipboard();
}
// Edit I Paste void _fastcall TMainForm::EditPasteClick(TObject*) { RichEditl->PasteFromClipboard();
}
// Help I Contents void _fastcall TMainForm::HelpContentsClick(TObject*) { Application->HelpCommand(HELP_CONTENTS, 0);
}
// Help I Search...
void _fastcall TMainForm::HelpSearchClick(TObject*)
{ Application->HelpCommand(HELP_PARTIALKEY, (long) "");
)
// Help I to... void _fastcall TMainForm::HelpHowToClick(TObject*) { Application->HelpCommand(HELP_HELPONHELP, 0);
}
// Help I About
void_fastcall TMainForm::HelpAboutClick(TObject*)
{ Porm2 = new TPorm2(Application); //
Form2->ShowModal(); //
delete Porm2; // }
// Edit I font void _fastcall TMainPorm::SelectFont(TObject*) { FontDialogl->Font->Assign(RichEditl->SelAttributes);
if (FontDialogl->Execute())
CurrText()->Assign(FontDialogl->Font);
RichEditl->SetFocus();
}
// void _fastcall TMainForm::RulerResize(TObject*) { RulerLine->Width =
(int)Ruler->ClientWidth-(RulerLine->Left*2);
}
//
void _fastcall TMainForm::FormResize(TObject* Sender)
{ SetEditRect(); // Windows
SelectionChange(Sender); //
)
//
void _fastcall TMainForm::FormPaint(TObject* Sender) { SetEditRect(); // Windows
}
// " " void _fastcall TMainForm::BoldButtonClick(TObject*) { if (iFUpdating)
|
|
{ if (BoldButton->Down) // CurrText()->Style = CurrText()->Style fsBold;
else // CurrText()->Style = CurrText()->Style fsBold;
} }
// " " void _fastcall TMainForm::ItalicButtonClick(TObject*) { if (iFUpdating)
{ if (ItalicButton->Down) // CurrText()->Style = CurrText()->Style fsltalic;
else // CurrText()->Style = CurrText()->Style fsltalic;
} }
// " " void _fastcall TMainForm::UnderlineButtonClick(TObject*) { if (iFUpdating)
{ if (UnderlineButton->Down) //
CurrText()->Style = CurrText()->Style fsUnderline;
else // CurrText()->Style = CurrText()->Style fsUnderline;
) }
// void _fastcall TMainForm::FontSizeChange(TObject*) {
int fontsize = atoi(FontSize->Text.c_str());
if ((iFUpdating) && (fontsize)) { if (fontsize < 1)
{ ShowMessage("Number must be between 1 and 1638.");
FontSize->Text =1; } else if (fontsize > 1638)
{ ShowMessage("Number must be between 1 and 1638");
FontSize->Text = 1638; } CurrText()->Size = atoi(FontSize->Text.c_str());
} }
// void _fastcall TMainForm::AlignClick(TObject* Sender) { if (IFUpdating)
{ TControl *oAliBtn = (TControl*)(Sender);
RichEditl->Paragraph->Alignment = (TAlignment)oAliBtn->Tag;
} }
// void _fastcall TMainForm::FontNameChange(TObject*) { if (iFUpdating)
{ CurrText()->Name =
FontName->Items->Strings[FontName->ItemIndex];
} }
// " " void _fastcall TMainForm::BulletsButtonClick(TObject*) { if (iFUpdating)
RichEditl->Paragraph->Numbering =
(TNumberingStyle)BulletsButton->Down;
}
// void _fastcall TMainForm::FormCloseQuery(TObject*, bool & CanClose)
{ try
{ CheckFileSaveO; } // ? catch (...)
{ CanClose = false; } // ( ) }
// , void_fastcall TMainForm::RulerItemMouseDown(TObject* Sender,
TMouseButton Button, TShiftState Shift, int X, int Y) { TLabel * oTmpLabel = (TLabel *)Sender;
FDragOfs = oTmpLabel->Width / 2;
oTmpLabel->Left = oTmpLabel->Left+X-FDragOfs;
FDragging = true;
}
// void _fastcall TMainForm:':RulerItemMouseMove(TObject* Sender,
TShiftState Shift, int X, int /*Y*/) (if (FDragging)
{ TLabel * oTmpLabel = (TLabel *)Sender;
oTmpLabel->Left = oTmpLabel->Left+X-FDragOfs;
) }
// void_fastcall TMainForm::FirstIndMouseUp(TObject* Sender,
TMouseButton Button, TShiftState Shift, int X, int Y) { FDragging = false;
RichEditl->Paragraph->FirstIndent =
int((FirstInd->Left+FDragOfs-GutterWid) / RulerAdj);
LeftIndMouseUp(Sender, Button, Shift, X, Y);
}
// void _fastcall TMainForm::LeftIndMouseUp(TObject* Sender,
TMouseButton, TShiftState, int, int) { FDragging = false;
RichEditl->Paragraph->LeftIndent =
int ((LeftInd->Left+FDragOfs-GutterWid) / RulerAdj)-RichEditl->Paragraph->FirstIndent;
SelectionChange(Sender); //
}
//
void_fastcall TMainForm::RightIndMouseUp(TObject* Sender,
TMouseButton, TShiftState, int, int) { FDragging = false;
RichEditl->Paragraph->RightIndent =
|
|
int( (Ruler->ClientWidth-Rightlnd->Left+FDragOfs-2) / RulerAdj)-2*GutterWid;
SelectionChange(Sender); // }
// void _fastcall TMainForm::FormActivate(TObject* /*Sender*/) { Application->HelpFile = "RICHEDIT.HLP";
RichEditl->SetFocus();
4.1. Romain.cpp .
. 4.22 . , , FFileName. , :
=> , , F5 ( ). . . => Run [ Run ( F9), Run | Run to Cursor (
F4) .
=> ( ), , " ^ ".
; => Run | Step Over ( F8) -; .
=> FFileName -| Inspect ( Alt+F5) ti4' - "Untitled".
. 4.22. .
=> ( F9) File | Open .
=> . => -
. =>
Run | Program Reset.
4.6.8
System
12 .
TTimer
Windows API: SetTimer KillTimer WM_TIMER.
Interval OnTimer. Interval=1000 ( ). SetTimer .
.