テキストエディタ

概要:テキストエディタを作成し、ファイルの読み込み・保存を行う。

<作業>


・フォーム上にMemo,SaveDialog,OpenDialog,BitButton,Buttonを2個を置く。

・Button1をダブルクリック、イベントハンドラを記述
・Button2をダブルクリック、イベントハンドラを記述。
・各コンポーネントのプロパティを設定。
SaveDialog,OpenDialogについては、扱うファイルを".txt"に絞ったため、特殊な設定(Filter)が必要になる。
詳細は下記のソースおよびイベントハンドラを。
ソース


<イベントハンドラ>

//---------------------------------------------------------------------------
#include 
#pragma hdrstop

#include "Udialog.h"
#include 
//---------------------------------------------------------------------------
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
     TFileName NameOfFile;

     if(OpenDialog1->Execute())
     {
	NameOfFile = OpenDialog1->FileName;
        Memo1->Lines->LoadFromFile(NameOfFile);
     }
/*
 OpenDialog1のFilterプロパティーを設定
 テキストファイルのみを読み込むよう設定

 フィルタエディタを開くには
	1.フォーム上に OpenDialog コンポーネントまたは SaveDialog コンポーネントを配置します。
	2.そのコンポーネントを選択した状態で以下の操作のどちらかを実行します。

 Filter プロパティの値列で省略記号ボタンをクリックする
 Filter プロパティの値列をダブルクリックする

[フィルタ名]列

[ファイルの種類(T)]コンボボックスに表示したいフィルタの名前を入力します。

[フィルタ]列

フィルタを定義するワイルドカードと拡張子を入力します。たとえば *.TXT と入力すると,.TXT の拡張子を持つファイルだけが表示されます。
フィルタに複数のファイル拡張子を適用するには,それらの拡張子をセミコロン(;)で区切ります。
*/
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
     char szFileName[MAX+4];
     int iFileHandle;

     /* デフォルトの拡張子を".txt"に設定 */
     SaveDialog1->DefaultExt = "txt";

     if (SaveDialog1->Execute())
     {
        /* 同名のファイルが既存すればバックアップを取って上書き */
     	if (FileExists(SaveDialog1->FileName))
     	{
           fnsplit(SaveDialog1->FileName.c_str(), 0, 0, szFileName, 0);
	   strcat(szFileName, ".BAK");
	   RenameFile(SaveDialog1->FileName, szFileName);
	}



	iFileHandle = FileCreate(SaveDialog1->FileName);

	// 書き込む。MemoのTextプロパティーで内容、サイズを取得できる。
        FileWrite(iFileHandle,Memo1->Text.c_str(),Memo1->Text.Length());
        FileClose(iFileHandle);

        /*
        書き込み形式
           FileWrite(ファイル、内容、大きさ);

        */

     }

}
//---------------------------------------------------------------------------



C++Builder入門トップ