VCL TMemo example テキストエディタ サンプルプログラム


2017.6.11更新

これのFireMonkey(FMX)版
無料のC++ Builder 10.1 Berlin Starter Edition で動作確認しました。
VCLのソースです。
TMemoを使ったテキストエディタのサンプルです。
ソースはUTF-8で保存しました。
コメント部分にタイ文字が何文字かありますが無視してください。
TOpenTextFileDialog、TSaveTextFileDialog、TFontDialogを使っていますがFireMonkey(FMX)にはこれらのコンポーネントがありません。
巨大ファイルの読み込みには向いていません。
UTF-8での保存はBOM付きになると思います。
UTF-8のBOM付きテキストは未対応のテキストエディタではファイル先頭に不要な文字化け文字が数文字表示される場合があります。
GNU/Linux + wine 2.0.1でも動きました。
VCL TMemo テキストエディタ サンプルプログラム
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //ตัวอย่าง VCL TMemo //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::MenuItemExitClick(TObject *Sender) { Close(); //Program End } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { Memo1->Text = u""; //Text clear } //--------------------------------------------------------------------------- void __fastcall TForm1::MenuItemOpenFileClick(TObject *Sender) { TStrings* encodings = new TStringList(); encodings->AddObject("ASCII", TEncoding::ASCII); encodings->AddObject("UNICODE", TEncoding::Unicode); encodings->AddObject("UTF8", TEncoding::UTF8); OpenTextFileDialog1->Encodings->Assign(encodings); OpenTextFileDialog1->Title = u"Open Text file"; OpenTextFileDialog1->Filter = "Text files (*.txt)|*.TXT|C++ files (*.cpp;*.h;*.cc;*.c)|*.cpp;*.h;*.cc;*.c|Any file (*.*)|*.*"; if(OpenTextFileDialog1->Execute()){ int encIndex = OpenTextFileDialog1->EncodingIndex; TEncoding* enc = dynamic_cast (OpenTextFileDialog1->Encodings->Objects[encIndex]); Memo1->Lines->LoadFromFile(OpenTextFileDialog1->FileName,enc); } delete encodings; } //--------------------------------------------------------------------------- void __fastcall TForm1::MenuItemSaveFileClick(TObject *Sender) { TStrings* encodings = new TStringList(); encodings->AddObject("ASCII", TEncoding::ASCII); encodings->AddObject("UNICODE", TEncoding::Unicode); encodings->AddObject("UTF8", TEncoding::UTF8); SaveTextFileDialog1->Encodings->Assign(encodings); SaveTextFileDialog1->Title = u"Save Text file"; SaveTextFileDialog1->DefaultExt = u"txt";//デフォルト拡張子 SaveTextFileDialog1->Filter = "Text files (*.txt)|*.TXT|C++ files (*.cpp;*.h;*.cc;*.c)|*.cpp;*.h;*.cc;*.c|Any file (*.*)|*.*"; if(SaveTextFileDialog1->Execute()){ int encIndex = SaveTextFileDialog1->EncodingIndex; TEncoding* enc = dynamic_cast (SaveTextFileDialog1->Encodings->Objects[encIndex]); Memo1->Lines->SaveToFile(SaveTextFileDialog1->FileName,enc); } delete encodings; } //--------------------------------------------------------------------------- void __fastcall TForm1::MenuItemuFontClick(TObject *Sender) { if(FontDialog1->Execute()){ Memo1->Font = FontDialog1->Font; } } //--------------------------------------------------------------------------- void __fastcall TForm1::MenuItemUndoClick(TObject *Sender) { Memo1->Undo(); } //--------------------------------------------------------------------------- void __fastcall TForm1::MenuItemAboutClick(TObject *Sender) { Application->MessageBox(L"C++ Builder 10.1 Berlin example.\nVCL TMemo" L" Text editor program\nhttp://www.nabeta.tk", L"About", MB_ICONINFORMATION | MB_OK); } //---------------------------------------------------------------------------

ソースファイルも用意しています。
プロジェクトファイル、ヘッダファイル、画面設計ファイルを含むコンパイルするための全てのファイルがあります。
実行ファイル(Win32\Debug の中)も入れています。
VCL版のこのソース、実行ファイル

C++ Builder 10.1 Berlin Starter Edition サンプルブログラム example

C言語の話


あーすブラウザ
オンライン鍋田辞書
鍋田辞書トップ