// Lösungen zu "Richard Kaiser: C++ mit dem Borland C++Builder 2007", ISBN: 978-3-540-69575-2
// Copyright Richard Kaiser, 2007. http://www.rkaiser.de. All rights reserved.
// Diese Quelltexte dürfen in eigenen Programmen verwendet werden, wenn sie einen Hinweis auf die Quelle (die ersten beiden Zeilen) enthalten. In keinem Fall wird eine Haftung für direkte, indirekte, zufällige oder Folgeschäden übernommen, die sich aus der Nutzung ergeben.
// It is permitted to use this source text in programs of your own, provided that it contains a reference to the source (the first two lines above). All liabilities for use of the code are disclaimed.

// --------------- Aufgabe 1 -------------------------------

void __fastcall TForm1::ButtonCopyClick(TObject *Sender)
{
SendMessage(Memo1->Handle, WM_COPY, 0, 0);
// So ist auch CopyToClipboard in TCustomEdit definiert.
// Dasselbe Ergebnis erzielt man mit
//   Memo1->Perform(WM_COPY,0,0);
}

void __fastcall TForm1::ButtonCutClick(TObject *Sender)
{
SendMessage(Memo1->Handle, WM_CUT, 0, 0);
} // Wie CutToClipboard in TCustomEdit



void __fastcall TForm1::ButtonPasteClick(TObject *Sender)
{
SendMessage(Memo1->Handle, WM_PASTE, 0, 0);
} // Wie PasteFromClipboard in TCustomEdit



// --------------- Aufgabe 2 -------------------------------

void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
if (Key == 13)
  Form1->Perform(WM_NEXTDLGCTL,0,0);
}

void __fastcall TForm1::FormKeyPress(TObject *Sender, char &Key)
{ // falls KeyPreview auf true gesetzt ist
if (Key == 13)
  Form1->Perform(WM_NEXTDLGCTL,0,0);
// dasselbe Ergebnis erzielt man mit
//  SendMessage(Form1->Handle,WM_NEXTDLGCTL,0,0); }
}


// --------------- Aufgabe 3 -------------------------------

/*
 Definiert man in MsgU.h das zweite Makro

   #define DISABLE_WMCLOSE 0
   #define DISABLE_WMCLOSE 1

 kann man das Fenster mit Alt-F4 nicht mehr schliessen.

 In der Klasse TForm1 in MsgU.h nicht vergessen:
   void __fastcall WndProc(TMessage &Message)
*/

#if DISABLE_WMCLOSE
void __fastcall TForm1::WndProc(TMessage &Message)
{
if (WM_CLOSE == Message.Msg);
else TForm::WndProc(Message);
}
#endif

// Das Programm kann mit einem Aufruf von TForm::Close(),
// Run|Program Reset in der IDE und dem task manager beendet werden.


