首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> VC 教學

用 C++Builder 開發文字編輯器:從零打造類記事本應用

     編輯:VC 教學

前言

C++Builder (CB) 繼承 Delphi 的 RAD 架構,以 C++ 語言產出高效原生碼。本教學將帶領讀者逐步建立一個功能類似 Windows 記事本的文字編輯器,涵蓋檔案開啟/儲存、修改狀態追蹤、UI 狀態同步等核心功能。

專案架構與元件配置

表單元件

元件類別Name關鍵屬性
TMemoedit核心編輯區
TButtonbopenCaption="Open"
TButtonbsaveCaption="Save"
TButtonbexitCaption="Exit"
TOpenDialogopendialog
TSaveDialogsavedialog

介面佈局建議

  • 頂部:三個按鈕水平排列
  • 中央:TMemo 佔滿剩餘空間 (Align = alClient)
  • 對話方塊元件不可視,放置表單任意處

核心程式碼實作

1. 表單建立初始化

void __fastcall TForm1::FormCreate(TObject* Sender) {
    bsave->Enabled = false;       // 尚未修改,儲存鈕停用
    edit->Lines->Clear();         // 清空內容
    edit->Enabled = false;        // 未開檔前停用編輯區
}

2. 開啟檔案

void __fastcall TForm1::bopenClick(TObject* Sender) {
    // 1. 若目前內容已修改未存,詢問使用者
    if (edit->Modified) {
        int yn = Application->MessageBox(
            "檔案已修改,是否先儲存?", "開啟檔案",
            MB_YESNO | MB_ICONQUESTION);
        if (yn == IDYES)
            edit->Lines->SaveToFile(savedialog->FileName);
    }

    // 2. 開啟檔案對話框
    edit->Enabled = true;
    if (opendialog->Execute()) {
        edit->Lines->LoadFromFile(opendialog->FileName);
        edit->Modified = false;   // 重置修改旗標
        bsave->Enabled = false;
        // 可選:同步儲存對話框預設檔名
        savedialog->FileName = opendialog->FileName;
    }
}

3. 儲存檔案

void __fastcall TForm1::bsaveClick(TObject* Sender) {
    if (savedialog->Execute()) {
        edit->Lines->SaveToFile(savedialog->FileName);
        edit->Modified = false;
        bsave->Enabled = false;
    }
}

4. 追蹤內容變更

void __fastcall TForm1::editChange(TObject* Sender) {
    bsave->Enabled = true; // 內容一變更即啟用儲存鈕
}

5. 結束應用程式

void __fastcall TForm1::bexitClick(TObject* Sender) {
    Close(); // 觸發 FormClose -> FormDestroy
}

進階功能擴充建議

功能實作方向
另存新檔新增按鈕,強制顯示 SaveDialog
關閉時提示儲存處理 FormCloseQuery,檢查 edit->Modified
編碼支援 (UTF-8/Big5)使用 TEncoding,LoadFromFile/FileName, TEncoding::UTF8
尋找/取代TFindDialog/TReplaceDialog + Memo->FindText
列號/行號顯示搭配 TPaintBox 自繪或第三方元件
語法醒目整合 TSynEdit 開源元件
拖放開啟檔案處理 WM_DROPFILES,DragAcceptFiles

關鍵技術點總結

  • TMemo.Lines 封裝 TStrings,提供 LoadFromFile/SaveToFile 高層介面
  • Modified 屬性自動追蹤使用者編輯行為
  • 對話方塊 Execute() 為模態,回傳 true 表示使用者按確定
  • UI 狀態(按鈕啟用/停用)隨資料狀態同步更新

結語

這個迷你編輯器展示了 C++Builder 快速開發的核心優勢:視覺化設計 + 少量程式碼 = 完整功能。以此為基礎,逐步加入編碼、搜尋、語法醒目、多文件分頁等功能,即可發展為專業級文字編輯器。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved