// 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.

#ifndef KBFORMS_H__
#define KBFORMS_H__


// Einfach: Alle Definitionen in einer h-Datei, keine cpp-Datei. 
// Zur Aufteilung der Definitionen und Deklarationen in eine cpp-Datei 
// und eine h-Datei: Siehe Abschnitt 3.23 und 3.23.5.


// Für diese Funktion muß das Formular
// im Objektinspektor den Namen "TKBForm1" bekommen:
//

#include "KBDecl.h"

void KBToForm(Kontobewegung K,TKBForm1* Form1)
{ // überträgt die Daten von K in das Formular Form1
Form1->EKontoNr->Text=IntToStr(K.KontoNr);
Form1->EName->Text=K.NameInhaber;
// Entweder
Form1->EDatum->Text=IntToStr(K.Datum.Tag)+"."+
                    IntToStr(K.Datum.Monat)+"."+
                    IntToStr(K.Datum.Jahr);
// oder
unsigned short year= K.Datum.Jahr;
unsigned short month=K.Datum.Monat;
unsigned short day=  K.Datum.Tag;
TDateTime d=TDateTime(year, month, day);
// Form1->EDatum->Text=d.DateString();

Form1->EBewart->Text=K.BewArt;
Form1->EBetrag->Text=FloatToStr(K.Betrag);
}

Kontobewegung FormToKB(TKBForm1* Form1)
{ // überträgt die Daten des Formulars Form1 in den Funktionswert
Kontobewegung K;
K.KontoNr = StrToInt(Form1->EKontoNr->Text);

// Vorsicht: Dieses strcpy ist nicht gut, da
//           hier die Gefahr von buffer overruns besteht
strcpy(K.NameInhaber,Form1->EName->Text.c_str());

// Entweder wie in Aufgabe 3.13, 1.
  AnsiString Datum = Form1->EDatum->Text;
  AnsiString tstr  = Datum.SubString(1,Datum.Pos('.')-1);
  K.Datum.Tag = StrToInt(tstr);
  Datum.Delete(1,Datum.Pos('.'));
  int p = Datum.Pos('.');
  AnsiString mstr  = Datum.SubString(1,p-1);
  K.Datum.Monat = StrToInt(mstr);
  AnsiString jstr  = Datum.SubString(p+1,Datum.Length()-p+1);
  K.Datum.Jahr = StrToInt(jstr);
// oder
  TDateTime d=StrToDate(Form1->EDatum->Text);
  unsigned short year, month, day;
  d.DecodeDate(&year, &month, &day);
  K.Datum.Tag=day;
  K.Datum.Monat=month;
  K.Datum.Jahr=year;
// Ende oder

Form1->EBewart->Text.Trim();
if (Form1->EBewart->Text.Length() >= 1)
    K.BewArt =Form1->EBewart->Text[1];

K.Betrag = StrToCurr(Form1->EBetrag->Text);
return K;
}

void ClearKBForm(TKBForm1* Form1)
{
Form1->EKontoNr->Text=""; 
Form1->EName->Text="";
TDateTime d=d.CurrentDate();
Form1->EDatum->Text=d.DateString();
Form1->EBewart->Text="-";
Form1->EBetrag->Text=FloatToStr(123.45);
}

#endif // KBFORMS_H__
