//--------------------------------------------------------------------------- // Winkerho v1.0 (c) Tommi Lahtonen & Vesa Lappalainen 7.9.199 // muutokset vanhaan kerho-ohjelman DOS-versioon: // mjonotpp.h lisätty rivi: using namespace std; // mjonotpp.cpp lisätty rivi: #define NPOS -1 /* kerhowin.cpp */ /****************************************************************************/ /* ** TNaytto-luokan toteutus (korvaa vanhan naytto-luokan) ** ** Tekijät: Tommi Lahtonen ** Tehty: Huhtikuu 1997 ** ** Muutettu: 07.9.1997 ** Mitä muutettu: Pientä viimeistelyä ** void __fastcall FormShow(TObject *Sender); luetaan kerho levyltä tai luodaan uusi. Päivitetään kerhon jäsenet listaboksiin. void __fastcall AvustusButtonClick(TObject *Sender); Näyttää avustuksen ( ei tehty vielä) void __fastcall LopetusButtonClick(TObject *Sender); Lopettaa ohjelman ja haluttaessa tallettaa kerhon. void __fastcall LisaaButtonClick(TObject *Sender); Lisää kerhoon uuden jäsenen. void __fastcall EtsiButtonClick(TObject *Sender); Etsii jäsenen kerhosta ( ei tehty vielä ) void __fastcall TulosteetButtonClick(TObject *Sender); Tulosteet ( ei tehty vielä ) void __fastcall PaivitaButtonClick(TObject *Sender); Päivittää jäsenmaksuja ( ei tehty vielä ) void __fastcall FormClose(TObject *Sender, TCloseAction &Action); Sulkee ohjelman ja tarvittaessa tallettaa kerhon void __fastcall JasenBoxClick(TObject *Sender); Näyttää valitun jäsenen tiedot ja mahdollistaa niiden muuttamisen void __fastcall About1Click(TObject *Sender); Näyttää About-demon void lisaa_uusi_jasen(char valinta=' '); Lisää uuden jäsenen. __fastcall TNaytto(TComponent* Owner); Luo uuden kerhon int lue_tiedosto(const char *tied_nimi=NULL); Lukee kerhon levyltä tai luo uuden int kysy_talleta(); Kysyy talletetaanko kerho void PaivitaListbox(); Päivittää kerhon jäsenet listaboksiin int talleta(); Tallettaa kerhon */ #include #pragma hdrstop #include #include "kerhowin.h" #include "ohjetus.h" #include "kysydlg.h" #include "help.h" #include "editlue.h" #include "omat.h" #include "jasenf.h" #include "demo.h" //--------------------------------------------------------------------------- #pragma resource "*.dfm" TNaytto *Naytto; #define VERSIO "1998.01.18" static const int OLET_ALKU = 19; static const int VAKANEN = 33; static const char *TARKENNIN = ".dat"; static const char *VANHATARK = ".bak"; /* typedef struct { eToiminto komento; const char *jono; } tKomento; static tKomento komennot[] = { { TOIM_LOPETA , "q" }, { TOIM_EDELLINEN , "^" }, { TOIM_LOPUT_OLETUS, ",|." }, { TOIM_JATKA , NULL } }; static eToiminto mika_komento(const char *s) { for (int i=0; komennot[i].jono; i++) if ( joku_jono(s,komennot[i].jono,"|") == 0 ) return komennot[i].komento; return TOIM_JATKA; } */ //--------------------------------------------------------------------------- __fastcall TNaytto::TNaytto(TComponent* Owner) : TForm(Owner) { kerho = new cKerho; JasenForm = new TJasenForm(this, kerho); ohjelman_nimi = "kerho"; nykyjasen = -1; alusta_help(ohjelman_nimi.c_str()); edit_alusta("kerho.lyh"); } //--------------------------------------------------------------------------- void __fastcall TNaytto::FormShow(TObject *Sender) { if ( lue_tiedosto() != 0 ) Close(); PaivitaListbox(); } //--------------------------------------------------------------------------- //int ilmoitus(const string &s) {return ilmoitus(s.c_str());} //--------------------------------------------------------------------------- int TNaytto::lue_tiedosto(const char *tied_nimi) /* ** Luetaan kerho levylt„. ** Ensin kysyt„„n kerhon nimi. Jos kerhoa ei ole, utellaan ** lis„tietoja ja luodaan se. ----------------------------------------------------------------------------*/ { string tied,nimi; int maksimi; do { // Kysell„„n kunnes tiedosto aukeaa tai luodaan uusi if (!KysyTiedosto->Execute()) return ilmoitus("Tiedoston nimeä ei annettu"); // kysy("Anna kerhon nimi", tied); tied = KysyTiedosto->FileName.c_str(); if ( tied == "" ) return ilmoitus("Tiedoston nimeä ei annettu"); laita_tarkennin(tied,TARKENNIN); if ( onko_tiedostoa(tied) ) return ilmoitus(kerho->lue_tiedostosta(tied)); string apu = "Tiedostoa " + tied + " ei ole!" ; ilmoitus(apu.c_str()); } while ( kylla_kysymys("Luodaanko uusi tiedosto?") == 0 ); kysy("Anna kerhon koko nimi >", nimi); kysy("Anna kerhon maksimi koko >",maksimi); return ilmoitus(kerho->luo(tied,nimi,maksimi)); } //--------------------------------------------------------------------------- void __fastcall TNaytto::LopetusButtonClick(TObject *Sender) { Close();//lopetus(); } //--------------------------------------------------------------------------- void __fastcall TNaytto::LisaaButtonClick(TObject *Sender) { lisaa_uusi_jasen(); PaivitaListbox(); } //--------------------------------------------------------------------------- void __fastcall TNaytto::EtsiButtonClick(TObject *Sender) { ei_toimi(); } //--------------------------------------------------------------------------- void __fastcall TNaytto::TulosteetButtonClick(TObject *Sender) { ei_toimi(); } //--------------------------------------------------------------------------- void __fastcall TNaytto::KorjaaButtonClick(TObject *Sender) { ei_toimi(); } //--------------------------------------------------------------------------- void __fastcall TNaytto::PaivitaButtonClick(TObject *Sender) { ei_toimi(); } //--------------------------------------------------------------------------- int TNaytto::kysy_talleta() { if ( !kerho->Muutettu() ) return 0; if ( kylla_kysymys("Talletetaanko tiedot") ) return talleta(); return 0; } //--------------------------------------------------------------------------- int TNaytto::talleta() /* ** Jos kerhossa muutoksia, niin ** Nimet„„n vanha tiedosto .bak -nimelle ja talletetaan ** nykyinen tiedosto vanhan tilalle. ----------------------------------------------------------------------------*/ { // logo(); if ( !kerho->Muutettu() ) return 0; int vanhat_pilalla = kerho->TeeBak(VANHATARK); if ( ilmoitus(kerho->talleta()) ) return 1; string apu = "Tiedot talletettu tiedostoon " + kerho->Tiedoston_nimi() + "\n"; if ( !vanhat_pilalla ) { apu = apu + "\n" + "Vanhat tiedot tiedostossa " + kerho->Bak_nimi() + "\n"; } ilmoitus(apu); return 0; } //--------------------------------------------------------------------------- void __fastcall TNaytto::FormClose(TObject *Sender, TCloseAction &Action) { kysy_talleta(); edit_vapauta("kerho.lyh"); vapauta_help(); } //--------------------------------------------------------------------------- void TNaytto::PaivitaListbox() { JasenBox->Items->Clear(); for (int i=0; iJasenia(); i++) { const cJasen &jasen = kerho->anna_jasen(i); string apu = jasen.kentta_jonoksi(1); JasenBox->Items->Add(apu.c_str()); // if (JasenForm->kysy(jasen)!=mrOk) return; } JasenBox->ItemIndex = nykyjasen; } void TNaytto::lisaa_uusi_jasen(char valinta) /* ** Kysell„„n uusien j„senien tietoja ja lis„t„„n j„senet. ----------------------------------------------------------------------------*/ { cJasen jasen(kerho->anna_jasen(nykyjasen)); // Kerho hoitaa jos -1 TJasenForm *uusiform = new TJasenForm(this,kerho); if (!uusiform) return; jasen.tyhjenna_omat(); jasen.rekisteroi(); int ok = uusiform->muuta(jasen, kerho,"Lisää uusi jäsen"); delete uusiform; if ( ok != mrOk) return; if ( ilmoitus(kerho->lisaa(jasen)) ) return; Caption = "Rekisteri, jäseniä : " + IntToStr(kerho->Jasenia()); nykyjasen = kerho->Jasenia()-1; PaivitaListbox(); // JasenBox->ItemIndex = nykyjasen; JasenBoxClick(JasenBox); } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- void __fastcall TNaytto::JasenBoxClick(TObject *Sender) { int nr = JasenBox->ItemIndex; if ( nr == -1 ) return; const cJasen &jas = kerho->anna_jasen(nr); if ( JasenForm->nayta(nr,jas) ) nykyjasen = nr; JasenBox->ItemIndex = nykyjasen; SetFocus(); } //--------------------------------------------------------------------------- void __fastcall TNaytto::About1Click(TObject *Sender) { TDemotus *demo = new TDemotus(NULL); demo->ShowModal(); demo->Free(); } //--------------------------------------------------------------------------- void __fastcall TNaytto::AvustusButtonClick(TObject *Sender) { Ohjeet->Show(); } //---------------------------------------------------------------------------