aggiungere un wxSiser
aggiunegre un wxPanel
Aggiungere il componente RichTextCtrl e ridimensionarlo.
Nell'editor di menu aggiungere i comandi del menu file e riordinarli, poi aggiungere il menu Modifica e inserire due voci:
File Modifica Apri grassetto Salva corsivo Esci
Usare i quattro pulsanti di direzione per modificare la posizione di una voce di menu
Nel pannello di gestione del progetto (Management) aprire la scheda "Resources". In questa scheda premere il quadratino con il segno "+" accanto alla voce "Tools". Premere il quadratino con il segno "+" accanto alla voce wxMenuBar. Ripetere questa operazione per ogni voce di menu.
Aggiungere un componente FileDialog. La sua icona appare accanto alle icone dell'editor di menu e dell'editor della barra di stato.
Nel file dell'applicazione viene aggiunta la seguente riga:
FileDialog1 = new wxFileDialog(this,
_("Select file"),
wxEmptyString,
wxEmptyString,
wxFileSelectorDefaultWildcardStr,
wxFD_DEFAULT_STYLE,
wxDefaultPosition,
wxDefaultSize,
_T("wxFileDialog")
);
Dalla quale si vede che viene creato il puntatore FileDialog1 ad una istanza di classe FileDialog. Il significato dei parametri richiesti è il seguente:
this il puntatore all'oggetto che richiama il File Dialog
wxT("Apri File") il testo che compare nella barra del titolo
Le due stringhe vuote rappresentano la directory di default e il file di default (facoltativi)
wxFileSelectorDefaultWildcardStr la stringa per filtrare i file, che ha uno speciale formato:
"Tutti i file|*.*|File di Testo|*.txt"
Nel pannello Proprietà/Eventi aprire la scheda Eventi. Accanto alla riga EVT_MENU, nella casella a discesa, scegliere -- Add New handler --. Assegnare il nome al gestore: "onApri".
Code Blocks prepara l'intestazione della funzione di gestione dell'evento, che bisogna completare.
void RichTextFrame::onApri(wxCommandEvent& event) { FileDialog1 = new wxFileDialog(this, wxT("Apri File"), wxT(""), wxT(""), wxT("*.txt|*.cpp"), wxOPEN); int risposta = FileDialog1->ShowModal(); if (risposta==wxID_OK) { this->RichTextCtrl1->LoadFile(FileDialog1->GetPath()); } }
Selezionare la voce di menu Salva (nella scheda Resources) e nel pannello di gestione degli eventi associare un nuovo gestore di evento: denominarlo onSalva.
void RichTextFrame::onSalva(wxCommandEvent& event) { FileDialog1 = new wxFileDialog(this, wxT("Salva File"), wxT(""), wxT(""), wxT("File di Testo (*.txt)|*.txt"), wxSAVE); int risposta = FileDialog1->ShowModal(); if (risposta==wxID_OK) this->RichTextCtrl1->SaveFile(FileDialog1->GetPath()); }
Applicare i comandi del menu "Modifica", consultando il riferimento ai membri della classe RichText
Suggerimento: i metodi per applicare il grassetto sono BeginBold() e EndBold()
Associare i gestori di evento alle due voci di menu. Il gestore dell'evento "onGrassetto" può applicarsi al testo selezionato, oppure ad un intervallo indicato durante la composizione del testo. In questo esempio si assume che si desidera scegliere, durante la composizione del testo, i punti in cui si desidera iniziare e terminare il testo in grassetto.
Scrivere il gestore dell'evento onGrassetto:
void RichTextFrame::onGrassetto(wxCommandEvent& event) { if (!grassetto) { RichTextCtrl1->BeginBold(); grassetto= true; } else { RichTextCtrl1->EndBold(); grassetto= false; } }
Per questo caso, occorre dichiarare una variabile della classe grassetto che commuta dallo stato "grassetto=true" allo stato "grassetto=false".
Aggiungere un componente ToolBar
Doppio clic sull'icona che è comparsa sulla riga accanto al pulsante "Menu Editor"
Nel riquadro di dialogo premere il pulsante New, modificare la label in "Copia"
Premere il pulsante "Bitmap"
Nella casella "Art ID", scegliere "wxART_COPY"
Premere Ok
premere il pulsante New, modificare la label in "Incolla"
Premere il pulsante "Bitmap"
Nella casella "Art ID", scegliere "wxART_PASTE"
Premere Ok, Ok.
Nel Pannello Resources selezionare (nel ramo Tools) l'elemento "Copia". Nel pannello di gestione degli eventi si possono definire le azioni sul clic del mouse o sul clic con il tasto destro (RCLICKED).>
Associare un nuovo gestore all'evento EVT_TOOL. Denominarlo "onCopia"
Selezionare l'icona "Incolla" e associare un gestore di evento. Denominarlo "onIncolla"
Completare i due gestori:
void RichTextFrame::onCopia(wxCommandEvent& event) { RichTextCtrl1->Copy(); } void RichTextFrame::onIncolla(wxCommandEvent& event) { RichTextCtrl1->Paste(); }