Заставка

Программирование на старых и современных языках, а так-же дизайн

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



Блокнот на Borland C++ Builder

Сообщений 1 страница 2 из 2

1

У меня есть новая версия Borland C++ Builder, но я не хочу её устанавливать, будем изучать на относительно старом Borland C++ Builder. У меня есть и английская версия, но на данный момент я не смогу переустановить. Давно не кодил в Borland C++ Builder. Итак поехали!
1. Запустим Borland C++ Builder:
https://i.ibb.co/ysKGD67/BCPP-NOTEPAD-1-12-32-06-07-2021-min.jpg

2. Добавим меню TMainMenu:
https://i.ibb.co/QpMLJhr/BCPP-NOTEPAD-3-12-34-06-07-2021-min.jpg

3. Нажмём на Menu...
https://i.ibb.co/sJ7RBQs/BCPP-NOTEPAD-4-12-34-06-07-2021-min.jpg

4. Добавим такие меню:
https://i.ibb.co/2hGTHm7/BCPP-NOTEPAD-5-12-38-06-07-2021-min.jpg

5. Изменим заголовок Caption на Notepad
https://i.ibb.co/3CYqgt0/BCPP-NOTEPAD-6-12-39-06-07-2021-min.jpg

6. Установим все Anchors на true, т.е. akLeft=true, akRight=true, akTop=true, akBottom=true
https://i.ibb.co/7ycfZ81/BCPP-NOTEPAD-7-12-41-06-07-2021-min.jpg

Вот так выглядет теперь форма:
https://i.ibb.co/DptDhbM/BCPP-NOTEPAD-8-12-42-06-07-2021-min.jpg

7. Добавим компоненты TOpenDialog и TSaveDialog в нашу форму:
https://i.ibb.co/k0fJvTJ/BCPP-NOTEPAD-9-12-45-06-07-2021-min.jpg

8. Установим ScrollBars на ssBoth:
https://i.ibb.co/gMFvXNG/BCPP-NOTEPAD-10-13-20-06-07-2021-min.jpg

9. Уберём Dynamic RTL
https://i.ibb.co/DbPLqPH/BCPP-NOTEPAD-11-13-21-06-07-2021-min.jpg

10. Уберём Borland C++ Builder Example compontents, и уберём Vcl40;Vclx40;vcljpg40;dclocx40;
https://i.ibb.co/vXMHFwF/BCPP-NOTEPAD-12-13-22-06-07-2021-min.jpg

Вот сам код 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
}
//---------------------------------------------------------------------------

Вот результат:
https://i.ibb.co/fQx9Y1n/BCPP-NOTEPAD-13-13-30-06-07-2021-min.jpg

P.S.:Чтобы в современных Windows отображалось в стиле Windows XP, нужно создать файл manifest, и добавить в файл ресурсов.
Добавьте файл ресурсов:
https://i.ibb.co/JRn8G73/BCPP-NOTEPAD-14-13-12-06-07-2021-min.jpg

Вот так должен выглядеть файл ресурсов:

Код:
#define APP_MANIFEST 1
#define RT_MANIFEST 24

APP_MANIFEST RT_MANIFEST "Project1.exe.manifest"

0

2

Update. Важно отключить в Form1 AutoScroll, т.е. AutoScroll=false, иначе будут видны прокрутки не только в поле, но и в форме:
См.
https://i.ibb.co/WVVQsjK/BCPP-NO-AUTOSCROLL-20-17-06-07-2021-min.jpg

0