Construção do Editor de Textos

Décima primeira parte



O C++Builder possui componentes Buttons que podem carregar imagens. Trata-se dos SpeedButtons e BitBtns. Para colocar imagens nesses botões, basta editar sua propriedade Glyph no Object Inspector. As imagens a seguir, tiradas dos próprios exemplos do C++Builder, sendo que algumas delas podem ser editadas para ser carregadas no botão adequado do nosso editor de textos.







Caso você ainda não tenha providenciado, vamos agora estudar como podemos colocar um botão (ou menu) Salvar em nosso Editor. Antes, porém, certifique-se de ter providenciado a alteração solicitada no final da seção: Construção do Editor de Textos - Nona parte.


Dificuldade: Quando o botão for pressionado (ou o menu respectivo receber o evento correspondente), o programa deverá fazer uma verificação para saber se o arquivo já se encontra gravado em disco; em caso afirmativo, deverá conhecer o caminho completo para salvar o arquivo; em caso negativo, deverá chamar a caixa de diálogos Salvar Como. Comecemos trabalhando com os menus. Vá para o Editor de Códigos e lhe dê um clique com o botão direito do mouse. No menu pop-up que se abrir, escolha a opção: Open Source/Header File, ou simplesmente pressione as teclas Ctrl + F6 simultaneamente. Abrir-se-á o arquivo de cabeçalho Unit1.h. Na parte de baixo do arquivo, Depois da linha que inicia as declarações privadas da classe, declare duas AnsiString que servirão para guardar os caminhos dos arquivos que forem abertos ou salvos, respectivamente. Eis as declarações.


private:        // User declarations
        AnsiString Caminho_Abrir;
        AnsiString Caminho_Salvar;
public:         // User declarations

Nota: Futuramente entenderemos melhor a finalidade deste arquivo.


Agora vamos implementar algumas modificações nos códigos dos eventos Abrir e Salvar Como do nosso Editor de Textos:


void __fastcall TForm1::Abrir1Click(TObject *Sender)
{
        if (OpenDialog1 -> Execute())
        {
                RichEdit1 -> Lines -> LoadFromFile(OpenDialog1 -> FileName);

                //Caminho_Abrir atribuída com caminho do último arquivo aberto
                Caminho_Abrir = OpenDialog1->FileName;
                //atribui Caminho_Abrir para Caminho_Salvar (para ficarem iguais) 
                Caminho_Salvar = Caminho_Abrir;
        }
        else
                MessageBeep(0);
}
//---------------------------------------------------------------------------

void __fastcall Tform1::Salvar1Click/*atual Salvar Como*/(TObject *Sender)
{
   if (SaveDialog1 -> Execute())
   {
        RichEdit1 -> Lines -> SaveToFile(SaveDialog1 -> FileName);

        // Caminho_Salvar atribuída com caminho do último arquivo salvo
        Caminho_Salvar = SaveDialog1->FileName;
        // atribui Caminho_Salvar para Caminho_Abrir (para ficarem iguais) 
        Caminho_Abrir = Caminho_Salvar;
   }
   else
        MessageBeep(0);
}
//---------------------------------------------------------------------------

Agora basta digitarmos o código para o menu salvar:

void __fastcall TForm1::Salvar2Click/*Salvar*/(TObject *Sender)
{
     // se o arquivo aberto já foi salvo ... 
     if((Caminho_Abrir == Caminho_Salvar) && (Caminho_Salvar != ""))
     // o arquivo será salvo sem chamar a caixa Salvar Como 
             RichEdit1->Lines->SaveToFile(Caminho_Abrir);
     else // senão
             // a caixa de diálogos Salvar Como será Chamada  
             Salvar1Click(Sender);
}

Vamos agora suspender, por algum tempo, a construção do Editor de Textos, a fim de abordarmos alguns pontos muito importantes. Brevemente retornaremos às lições.



anterior

índice

próxima


HOME || MAPA DO SITE || CURSOS || TUTORIAIS || LINKS || FORUM || CONTATO