Calendari & ...

Unit1.cpp


//----------------------------------------------------------------------
//   Project ................: pdfAlmanac.bpr
//   Version ................: 1.2.0
//   Author .................: G.Ciaccio
//   Email ..................: ciacciogi@infinito.it
//   Created ................: 22-11-2003
//   Development Tool .......: C++ Builder 6.0
//   Environment ............: Windows 98
//   Copyright ..............: 2002-2003
//----------------------------------------------------------------------
//   DISCLAIMER:
//   This software is provided 'as-is', without any express or
//   implied warranty.  In no event will the author be held liable
//   for any damages arising from the use of this software.
//----------------------------------------------------------------------
//   PURPOSE:
//   pdfAlmanac.exe produce different calendars in PDF format for any year
//   in the range 1583-2299
//----------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include "Unit2.h"
#include "Unit3.h"
#include "Unit4.h"
#include "Unit5.h"
#include "Unit6.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::New1Click(TObject *Sender)
{
//New
newyear();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Exit1Click(TObject *Sender)
{
//Exit
Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::About1Click(TObject *Sender)
{
//About
AboutBox->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ShowParams1Click(TObject *Sender)
{
//ShowParams
AnsiString astr;
if(Almanac::language==0)astr="Occorre prima definire l'anno";
else astr="Set year, before";
if(palmanac==0){ShowMessage(astr);return;}else palmanac->showparam();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
//OnCreate
if(Almanac::language==0){
Italian1->Checked=true;
setitalian();
}else{
English1->Checked=true;
setenglish();
}
}
//---------------------------------------------------------------------------
int TForm1::newyear(){
//NewYear
bool vbool;
int anno;
AnsiString astr,prompt,astrmsg;
if(Almanac::language==0){
prompt="Anno [1583-2299]:";
astrmsg="Immettere 1583<=anno<=2299";
}else{
prompt="Year [1583-2299]:";
astrmsg="Input 1583<=year<=2299";
}
do{
try{
vbool=InputQuery(Application->Title,prompt,astr);
if(vbool==false)return -1;else anno=StrToInt(astr);
}catch(Exception &E){
//catch(...){
ShowMessage(AnsiString(E.ClassName())+":\n"+E.Message);
}
if(anno<1583 || anno>2299)ShowMessage(astrmsg);}while(anno<1583 || anno>2299);

if(palmanac==0){
palmanac=new Almanac(anno);
}else{
palmanac->reset(anno);
}
if(Almanac::language==0){
Caption="pdfAlmanac  -  Anno "+IntToStr(anno);
}else{
Caption="pdfAlmanac  -  Year "+IntToStr(anno);
}
return anno;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::English1Click(TObject *Sender)
{
//English Help
English1->Checked=true;
Almanac::language=1;
setenglish();
if(palmanac!=0){
palmanac->setweekchar(palmanac->bstile,palmanac->firstday);
palmanac->setfixedholidays(palmanac->bstile);
if(palmanac->xdaynames==0)palmanac->loadnames(palmanac->bstile,palmanac->psqday); 
//acquisisce i nomi dal file di risorsa
else palmanac->setweekdaynames(palmanac->bstile);
Caption="pdfAlmanac  -  Year "+IntToStr(palmanac->anno);
}//if_palmanac
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Italian1Click(TObject *Sender)
{
//Italian Help
Italian1->Checked=true;
Almanac::language=0;
setitalian();
if(palmanac!=0){
palmanac->setweekchar(palmanac->bstile,palmanac->firstday);
palmanac->setfixedholidays(palmanac->bstile);
palmanac->setafterpsq(palmanac->psqday);
if(palmanac->xdaynames==0)palmanac->loadnames(palmanac->bstile,palmanac->psqday); 
//acquisisce i nomi dal file di risorsa
else palmanac->setweekdaynames(palmanac->bstile);
Caption="pdfAlmanac  -  Anno "+IntToStr(palmanac->anno);
}//if_palmanac
}
//---------------------------------------------------------------------------
void TForm1::setitalian(){
New1->Hint="Imposta/Cambia l'anno del calendario  [1583-2299]";
Exit1->Hint="Termina il programma";
Settings1->Hint="Imposta le opzioni del programma";
MonoPdf1->Hint="Crea il calendario PDF per l'anno selezionato";
MultiPdf1->Hint="Crea i calendari PDF per un intervallo di anni";
Help2->Hint="Mostra informazioni di aiuto";
ShowParams1->Hint="Visualizza i parametri di calcolo relativi all'anno di input";
EasterDays2->Hint="Visualizza le date pasquali  1583-2299";
English1->Hint="Imposta la lingua inglese";
Italian1->Hint="Imposta la lingua italiana";
About1->Hint="Visualizza le informazioni sul programma";
}
//---------------------------------------------------------------------------
void TForm1::setenglish(){
New1->Hint="Set/Change calendar year  [1583-2299]";
Exit1->Hint="End program";
Settings1->Hint="Set program options";
MonoPdf1->Hint="Make one only calendar";
MultiPdf1->Hint="Make all calendars between two years";
Help2->Hint="Show help information";
ShowParams1->Hint="Show calculation parameters";
EasterDays2->Hint="Show easter dates  1583-2299";
English1->Hint="Set english language";
Italian1->Hint="Set italian language";
About1->Hint="Show program information";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::MultiPdf1Click(TObject *Sender)
{
//MultiPDF
bool vbool;
int valrit,selectedfont,j,anno1,anno2;
int ko;
AnsiString astranno1,astranno2,astrdir;
AnsiString astr;
AnsiString prompt1,prompt2,prompt3,errormsg1,errormsg2;
TForm3 *pform;
if(Almanac::language==0){
prompt1="Anno iniziale :";
prompt2="Anno finale :";
prompt3="Cartella di destinazione dei file generati :";
errormsg1="La cartella non esiste";
errormsg2="Parametri di input errati";
}else{
prompt1="Starting year :";
prompt2="Final year :";
prompt3="Destination directory :";
errormsg1="Inesistent directory";
errormsg2="Error in input parameters";
}
pform=new TForm3(Application);
pform->Caption=Application->Title;
pform->LabeledEdit1->EditLabel->Caption=prompt1;
pform->LabeledEdit2->EditLabel->Caption=prompt2;
pform->LabeledEdit3->EditLabel->Caption=prompt3;
pform->LabeledEdit1->Text="2002";
pform->LabeledEdit2->Text="2002";
pform->LabeledEdit3->Text="C:\\pdf";
pform->RadioGroup1->ItemIndex=0;

valrit=pform->ShowModal();
if(valrit==mrCancel)return;
else if(valrit==mrOk){
astranno1=pform->LabeledEdit1->Text;
astranno2=pform->LabeledEdit2->Text;
astrdir=pform->LabeledEdit3->Text;
selectedfont=pform->RadioGroup1->ItemIndex;
anno1=StrToInt(astranno1);
anno2=StrToInt(astranno2);
vbool=DirectoryExists(astrdir);
ko=0;
if(anno1>anno2)ko=1;
else if (anno1<1583)ko=1;
else if (anno2>2299)ko=1;
else {}
if(ko!=0){ShowMessage(errormsg2);return;}
if(vbool==0){ShowMessage(errormsg1);return;}
for(j=anno1;j<=anno2;j=j+1){
if(palmanac==0){palmanac=new Almanac(j);}else {palmanac->reset(j);}
if(Almanac::language==0){Caption="pdfAlmanac  -  Anno "+IntToStr(j);
}else{Caption="pdfAlmanac  -  Year "+IntToStr(j);}

if(Almanac::xcalendartype==0){palmanac->gopdfalmanac(astrdir);}
else{palmanac->goboxpdfalmanac(astrdir);}
}//for_j
}else ShowMessage("Caso non previsto");
if(pform!=0){delete pform;pform=0;}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
//OnClose
if(palmanac!=0)delete palmanac;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Settings1Click(TObject *Sender)
{
//Settings ...
int valrit;
Form4->RadioGroup1->ItemIndex=Almanac::xfont;
Form4->RadioGroup2->ItemIndex=Almanac::xcalendartype;
Form4->RadioGroup3->ItemIndex=Almanac::xdaynames;
Form4->RadioGroup4->ItemIndex=Almanac::xmarkedfestivity;
Form4->RadioGroup5->ItemIndex=Almanac::xbannercolor;
Form4->RadioGroup6->ItemIndex=Almanac::xlanguage;
if(Almanac::xbannercolor==0){Form4->Button3->Enabled=true;Form4->Button4->Enabled=true;}
else {Form4->Button3->Enabled=false;Form4->Button4->Enabled=false;}
if(Almanac::bold==0)Form4->CheckBox1->Checked=false;
else Form4->CheckBox1->Checked=true;
if(Almanac::autostart==0)Form4->CheckBox2->Checked=false;
else Form4->CheckBox2->Checked=true;
valrit=Form4->ShowModal();
switch(valrit){
case mrOk:
//ShowMessage("Cliccato OK");
Almanac::xfont=Form4->RadioGroup1->ItemIndex;
Almanac::xcalendartype=Form4->RadioGroup2->ItemIndex;
Almanac::xdaynames=Form4->RadioGroup3->ItemIndex;
Almanac::xmarkedfestivity=Form4->RadioGroup4->ItemIndex;
Almanac::xbannercolor=Form4->RadioGroup5->ItemIndex;
Almanac::xlanguage=Form4->RadioGroup6->ItemIndex;
if(Form4->CheckBox1->Checked==true)Almanac::bold=1;else Almanac::bold=0;
if(Form4->CheckBox2->Checked==true)Almanac::autostart=1;else Almanac::autostart=0;
break;
case mrCancel:
//ShowMessage("Cliccato Cancel");
break;
default:
ShowMessage("Caso non previsto");
break;
}//switch_valrit
}
//---------------------------------------------------------------------------
void __fastcall TForm1::EasterDays2Click(TObject *Sender)
{
//Show easter dates (1583-2299)
int j;
int psq;
int valrit;
AnsiString astrmese;
AnsiString astrnum;
AnsiString astrlbox;
AnsiString easter,march,april;
if(Almanac::language==0){
easter="Pasqua ";
march="Marzo";
april="Aprile";
}else{
easter="Easter ";
march="March";
april="April";
}
Form5->Caption=Application->Title;
Form5->ListBox1->Items->Clear();
for(j=1583;j<2300;j=j+1){
psq=Almanac::gauss(j);
if(psq<=31){astrmese=march;}else{psq=psq-31;astrmese=april;}
if(psq<10){astrnum="  "+IntToStr(psq);}else{astrnum=IntToStr(psq);}
astrlbox=easter+IntToStr(j)+"   "+astrnum+" "+astrmese;
Form5->ListBox1->Items->Add(astrlbox);
}//for_j
valrit=Form5->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::MonoPdf1Click(TObject *Sender)
{
//MonoPdf
int valrit;
if(palmanac==0){valrit=newyear();if(valrit<0)return;}
if(Almanac::xcalendartype==0){
palmanac->gopdfalmanac();
}else{palmanac->goboxpdfalmanac();}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Help2Click(TObject *Sender)
{
//Help
if(Almanac::language==0){
Form6->Memo1->Text="Per creare un proprio calendario personalizzato occorre \\ 
modificare il file di risorse Names.rc ed eventualmente le funzioni 'loadnames' e \\
'setfixedholidays' della classe Almanac";
}else{
Form6->Memo1->Text="In order to create a personal calendar you must modify \\
properly resource file Names.rc and Almanac class functions 'loadnames' and \\
'setfixedholidays'";
}
Form6->Caption=Application->Title;
Form6->ShowModal();
}
//---------------------------------------------------------------------------



Per quanto si sia fatto il possibile non si puo' garantire che il prodotto (intendendo per tale qualunque file incluso nel pacchetto di installazione e non soltanto il file eseguibile) sia esente da errori e quindi si demanda agli utenti il compito di trovare conferma per altra via sia dei risultati ottenuti con l'uso del programma che di qualunque indicazione rilevabile dai file annessi al prodotto rigettando questo e qualunque altro tipo di responsabilita' per qualsiasi tipo di danno correlabile con l'uso del prodotto. Chi non accetta la sopracitata clausola di esclusione di responsabilita' non deve usare il prodotto.