У меня есть новая версия 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"