renzhacheng的博客园

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

期末考试是用C++ builder开发个这个东西,多少看起来有点幼稚。不过BCB开发起来比较简单。这里只提供一些简单的代码用以交流。

先声明几个全局变量:

char *UserFileName="无标题";   //程序标题
BOOL If_saved=FALSE;    //是否保存了?
char title_buf[256];    //标题缓存

 

退出按钮这样设计:

void __fastcall TMainForm::N10Click(TObject *Sender)
{
        
if(If_saved == FALSE)
        {
                
if(Application->MessageBox("文件未保存,是否要保存?","记事本",MB_OKCANCEL)==ID_OK)
                {
                        N4Click();
                }
        }
        Application
->Terminate();
}

保存按钮是这样设计的:

void __fastcall TMainForm::N4Click(TObject *Sender)
{
        
if(If_saved==FALSE)
        {
                
if(!SaveDialog1->Execute())
                {
                        
return;
                }
                UserFileName 
= SaveDialog1->FileName.c_str();
                Memo1
->Lines->SaveToFile(UserFileName);
                If_saved
=TRUE;
                sprintf(title_buf, 
"%s - 记事本", UserFileName);
                Caption
=title_buf;
        }
else{
                Memo1
->Lines->SaveToFile(UserFileName);
        }
}

打开按钮的设计:

void __fastcall TMainForm::N3Click(TObject *Sender)
{
        
if(If_saved == TRUE)
        {       
if(!OpenDialog1->Execute())
                {
                        
return;
                }
                UserFileName 
= OpenDialog1->FileName.c_str();
                
this->Memo1->Lines->LoadFromFile(UserFileName);
                If_saved
=TRUE;
                sprintf(title_buf, 
"%s - 记事本", UserFileName);
                Caption
=title_buf;
        }
else{
                
if(Application->MessageBox("文件未保存,是否要保存?","记事本",MB_OKCANCEL)==ID_OK)
                {
                        N4Click(NULL);
                        If_saved 
= TRUE;
                        N3Click(NULL);
                }
        }
}

新建按钮的设计:

void __fastcall TMainForm::N2Click(TObject *Sender)
{
        
if(If_saved == FALSE)
        {
                
if(Application->MessageBox("文件未保存,是否要保存?","记事本",MB_OKCANCEL)==ID_OK)
                {
                        N4Click();
                }
        }
        
this->Memo1->Lines->Clear();
}

文本框memo改动事件是这样设计的:

void __fastcall TMainForm::Memo1Change(TObject *Sender)
{
        If_saved 
= FALSE;
}

关闭时记得要提示是否保存:

void __fastcall TMainForm::FormClose(TObject *Sender, TCloseAction &Action)
{
        
if(If_saved == FALSE)
        {
                
if(Application->MessageBox("文件未保存,是否要保存?","记事本",MB_OKCANCEL)==ID_OK)
                {
                        N4Click(NULL);
                }
        }
}

编辑菜单下的几个按钮,相信大家看看名字就知道是做什么的了:

//---------------------------------------------------------------------------

void __fastcall TMainForm::N12Click(TObject *Sender)
{
        
this->Memo1->Undo();
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::N14Click(TObject *Sender)
{
        
this->Memo1->CopyToClipboard();        
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::N15Click(TObject *Sender)
{
        
this->Memo1->CutToClipboard();        
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::N16Click(TObject *Sender)
{
        
this->Memo1->PasteFromClipboard();        
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::N17Click(TObject *Sender)
{
        
this->Memo1->ClearSelection();        
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::N24Click(TObject *Sender)
{
        
this->Memo1->SelectAll();        
}
//---------------------------------------------------------------------------

插入时间,可以这样设计:

void __fastcall TMainForm::N25Click(TObject *Sender)
{
        TDateTime 
* Current_DateTime =new TDateTime;  //使用的TDateTime
        * Current_DateTime=Current_DateTime->CurrentDateTime();   //获取当前事件
        Memo1->SetSelTextBuf(Current_DateTime->DateTimeString().c_str());
}

是否自动换行呢?

void __fastcall TMainForm::N27Click(TObject *Sender)
{
        
if(N27->Checked == FALSE)
        {
                Memo1
->ScrollBars=ssVertical;
                N27
->Checked = TRUE;
        }
else{
                Memo1
->ScrollBars=ssBoth;
                N27
->Checked = FALSE;
        }
}

 

当然还有设置字体:

void __fastcall TMainForm::N28Click(TObject *Sender)
{
        
if(FontDialog1->Execute())
        {
                
this->Memo1->Font = this->FontDialog1->Font;
        }
}

创建窗体时候的一些小动作:

void __fastcall TMainForm::FormCreate(TObject *Sender)
{
        N27
->Checked = TRUE;
        N30
->Checked = FALSE;
}

 

其实记事本是个小软件,设计起来十分简单,哦,对了,还有记得设置memo的对齐方式,否则你在最大化的时候,是不是觉得特别别扭呢?

顺便做个广告,我做的一个Google code开源项目

posted on 2009-06-20 20:28  renzhacheng  阅读(576)  评论(0编辑  收藏  举报