У меня есть новая версия Borland C++ Builder, но я не хочу её устанавливать, будем изучать на относительно старом Borland C++ Builder. У меня есть и английская версия, но на данный момент я не смогу переустановить. Давно не кодил в Borland C++ Builder. Итак поехали!
1. Запустим Borland C++ Builder:
2. Добавим меню TMainMenu:
3. Нажмём на Menu...
4. Добавим такие меню:
5. Изменим заголовок Caption на Notepad
6. Установим все Anchors на true, т.е. akLeft=true, akRight=true, akTop=true, akBottom=true
Вот так выглядет теперь форма:
7. Добавим компоненты TOpenDialog и TSaveDialog в нашу форму:
8. Установим ScrollBars на ssBoth:
9. Уберём Dynamic RTL
10. Уберём Borland C++ Builder Example compontents, и уберём Vcl40;Vclx40;vcljpg40;dclocx40;
Вот сам код Unit1.cpp:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//Если нажали на File->New...
void __fastcall TForm1::New1Click(TObject *Sender)
{
txtNotepad->Text = ""; // Очищеает текст
}
//Если нажали на File->Open
void __fastcall TForm1::Open1Click(TObject *Sender)
{
OpenDialog1->Filter = "Text File (*.txt)|*.txt|All Files (*.*)|*.*"; // Устанавливает фильтры (расширения)
OpenDialog1->DefaultExt = "txt"; // Расширение по умолчанию
// Отображение диалог
if(OpenDialog1->Execute())
{
int f = FileOpen(OpenDialog1->FileName, fmOpenRead); // Открыть файл
int sz = FileSeek(f, 0, 2); // Перематывает в конец файла, и определяем размер файла
char *data = new char[sz+1]; // Новый массив, размера sz+1
FileSeek(f, 0, 0); // Перематывает в начало файла
FileRead(f, data, sz); // Считывает из файла, размера sz
txtNotepad->Text = data; // Вставляет текст в Memo
FileClose(f); // Закрываем файл
}
}
// Если нажали на File->Save
void __fastcall TForm1::Save1Click(TObject *Sender)
{
SaveDialog1->Filter = "Text File (*.txt)|*.txt|All Files (*.*)|*.*"; // Устанавливает фильтры
// Отображение диалогового окна сохранить файл
if(SaveDialog1->Execute())
{
int f = FileCreate(SaveDialog1->FileName); // Создаёт файл
FileWrite(f, txtNotepad->Text.c_str(), txtNotepad->GetTextLen()); // Пишит в файл из Memo txtNotepad
FileClose(f); // Закрывает файл
}
}
// Если нажали на File->Quit
void __fastcall TForm1::Quit1Click(TObject *Sender)
{
Form1->Close(); // Закрывает форму
}
// Если нажали на Help->About
void __fastcall TForm1::About1Click(TObject *Sender)
{
Application->MessageBox("Notepad v1.0", "About...", MB_OK | MB_ICONINFORMATION); // Отображает MessageBox
}
//---------------------------------------------------------------------------
Вот результат:
P.S.:Чтобы в современных Windows отображалось в стиле Windows XP, нужно создать файл manifest, и добавить в файл ресурсов.
Добавьте файл ресурсов:
Вот так должен выглядеть файл ресурсов:
#define APP_MANIFEST 1 #define RT_MANIFEST 24 APP_MANIFEST RT_MANIFEST "Project1.exe.manifest"
