home *** CD-ROM | disk | FTP | other *** search
- unit Main;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- vivrep20, Menus, Grids, DBGrids, StdCtrls, Buttons, ExtCtrls, Db, Math,
- DBTables, ImgList, ActnList, ComCtrls, ToolWin, ExtDlgs, Mask
- {$IFDEF VER140}
- , Variants
- {$ENDIF}
- ;
-
- type
- TMainForm = class(TForm)
- MainMenu: TMainMenu;
- FilePrintItem: TMenuItem;
- FilePrintSetupItem: TMenuItem;
- FileExitItem: TMenuItem;
- HelpAboutItem: TMenuItem;
- Preview: TMenuItem;
- N1: TMenuItem;
- LoadPicture1: TMenuItem;
- N251: TMenuItem;
- N501: TMenuItem;
- N1001: TMenuItem;
- N2001: TMenuItem;
- N4001: TMenuItem;
- ZoomMenu: TMenuItem;
- N252: TMenuItem;
- N502: TMenuItem;
- N1002: TMenuItem;
- N2002: TMenuItem;
- N4002: TMenuItem;
- ImageList: TImageList;
- ActionList: TActionList;
- ExitAction: TAction;
- PrintSetupAction: TAction;
- PrintAction: TAction;
- PrintPreviewAction: TAction;
- AboutAction: TAction;
- LoadAction: TAction;
- Zoom25Action: TAction;
- Zoom50Action: TAction;
- Zoom100Action: TAction;
- Zoom200Action: TAction;
- Zoom400Action: TAction;
- ToolBar1: TToolBar;
- ToolButton1: TToolButton;
- ToolButton2: TToolButton;
- ToolButton3: TToolButton;
- ToolButton4: TToolButton;
- ToolButton5: TToolButton;
- ToolButton6: TToolButton;
- ToolButton7: TToolButton;
- ToolButton8: TToolButton;
- ToolButton9: TToolButton;
- ToolButton10: TToolButton;
- ToolButton11: TToolButton;
- Panel1: TPanel;
- Label1: TLabel;
- Label2: TLabel;
- YearEdit: TMaskEdit;
- TextEdit: TMemo;
- PopupMenu1: TPopupMenu;
- LoadDialog: TOpenPictureDialog;
- SpeedButton1: TSpeedButton;
- DBGrid1: TDBGrid;
- HolidaysTable: TTable;
- HolidaysSource: TDataSource;
- HolidaysTableDate: TDateField;
- Report: TVividReport;
- VRPage1: TVRPage;
- VRBand1: TVRBand;
- PictureLabel: TVRLabel;
- YearLabel: TVRLabel;
- TextLabel: TVRLabel;
- ShadowLabel: TVRLabel;
- VRBand4: TVRBand;
- VRBand2: TVRBand;
- VRBand3: TVRBand;
- VRBand5: TVRBand;
- MonthsGrid: TVRGrid;
- PrintProgress: TVRPrintProgress;
- PrintPreview: TVRPreview;
-
-
- procedure ExitActionExecute(Sender: TObject);
- procedure AboutActionExecute(Sender: TObject);
- procedure PrintSetupActionExecute(Sender: TObject);
- procedure PrintActionExecute(Sender: TObject);
- procedure PrintPreviewActionExecute(Sender: TObject);
- procedure LoadActionExecute(Sender: TObject);
- procedure Zoom25ActionExecute(Sender: TObject);
- procedure Zoom50ActionExecute(Sender: TObject);
- procedure Zoom100ActionExecute(Sender: TObject);
- procedure Zoom200ActionExecute(Sender: TObject);
- procedure Zoom400ActionExecute(Sender: TObject);
-
- procedure YearEditExit(Sender: TObject);
- procedure YearEditKeyPress(Sender: TObject; var Key: Char);
- procedure YearLabelCalcValue(Sender: TObject);
- procedure TextEditChange(Sender: TObject);
- procedure ShadowLabelCalcValue(Sender: TObject);
- procedure HolidaysTableDateGetText(Sender: TField; var Text: String; DisplayText: Boolean);
- procedure HolidaysTableDateSetText(Sender: TField; const Text: String);
- procedure HolidaysTableAfterPost(DataSet: TDataSet);
-
- procedure MonthsGridCells0CalcValue(Sender: TObject);
- procedure MonthsGridColumns0EndPrint(Sender: TObject; var ARepeat: TAfterAction);
- procedure MonthsGridRows0EndPrint(Sender: TObject; var ARepeat: TAfterAction);
- procedure MonthsGridCells1CalcValue(Sender: TObject);
- procedure MonthsGridColumns0SubItems0EndPrint(Sender: TObject; var ARepeat: TAfterAction);
- procedure MonthsGridRows0SubItems2EndPrint(Sender: TObject; var ARepeat: TAfterAction);
- procedure MonthsGridCells2CalcValue(Sender: TObject);
- procedure MonthsGridColumns0SubItems1BeginPrint(Sender: TObject; var APrint: TBeforeAction);
- private
- { Private declarations }
- public
- { Public declarations }
- Year: Integer;
- MonthsCol: Integer;
- Row: Integer;
- WeekDay: Integer;
- Week: Integer;
-
- constructor Create (AOwner: TComponent); override;
- end;
-
- var
- MainForm: TMainForm;
-
- const
- MONTHS: Integer = 4;
- ROWS: Integer = 3;
-
- implementation
-
- uses About;
-
- {$R *.DFM}
-
- constructor TMainForm.Create (AOwner: TComponent);
- begin
- inherited Create (AOwner);
-
- HolidaysTable.Active:= true;
- Year := StrToInt (YearEdit.Text);
- end;
-
- procedure TMainForm.ExitActionExecute(Sender: TObject);
- begin
- Close;
- end;
-
- procedure TMainForm.AboutActionExecute(Sender: TObject);
- begin
- AboutBox.ShowModal;
- end;
-
- procedure TMainForm.PrintSetupActionExecute(Sender: TObject);
- begin
- Report.PrinterSetup;
- end;
-
- procedure TMainForm.PrintActionExecute(Sender: TObject);
- begin
- if Report.PrintSetup then Report.Print;
- end;
-
- procedure TMainForm.PrintPreviewActionExecute(Sender: TObject);
- begin
- Report.PrintPreview (PrintPreview);
- end;
-
- procedure TMainForm.LoadActionExecute(Sender: TObject);
- begin
- if LoadDialog.Execute then
- (PictureLabel.Data as TAbsPicture).Picture.LoadFromFile (LoadDialog.FileName);
- end;
-
- procedure TMainForm.Zoom25ActionExecute(Sender: TObject);
- begin
- VRPage1.Zoom := 25;
- end;
-
- procedure TMainForm.Zoom50ActionExecute(Sender: TObject);
- begin
- VRPage1.Zoom := 50;
- end;
-
- procedure TMainForm.Zoom100ActionExecute(Sender: TObject);
- begin
- VRPage1.Zoom := 100;
- end;
-
- procedure TMainForm.Zoom200ActionExecute(Sender: TObject);
- begin
- VRPage1.Zoom := 200;
- end;
-
- procedure TMainForm.Zoom400ActionExecute(Sender: TObject);
- begin
- VRPage1.Zoom := 400;
- end;
-
- procedure TMainForm.YearEditExit(Sender: TObject);
- begin
- Year := StrToInt (YearEdit.Text);
- VRPage1.Invalidate;
- end;
-
- procedure TMainForm.YearEditKeyPress(Sender: TObject; var Key: Char);
- begin
- if Integer (Key) = VK_RETURN then YearEditExit(Sender);
- end;
-
- procedure TMainForm.TextEditChange(Sender: TObject);
- begin
- (TextLabel.Data as TAbsPlainText).StringList.Text := TextEdit.Lines.Text;
- end;
-
- procedure TMainForm.YearLabelCalcValue(Sender: TObject);
- begin
- (YearLabel.Data as TAbsString).Value := IntToStr (Year);
- end;
-
- procedure TMainForm.ShadowLabelCalcValue(Sender: TObject);
- begin
- (ShadowLabel.Data as TAbsString).Value := IntToStr (Year);
- end;
-
- procedure TMainForm.HolidaysTableDateGetText(Sender: TField; var Text: String; DisplayText: Boolean);
- var
- Year, Month, Day: Word;
- begin
- if DisplayText then Text := FormatDateTime ('d mmmm',Sender.AsDateTime)
- else
- begin
- DecodeDate (Sender.AsDateTime,Year,Month,Day);
- Text := IntToStr (Day) + '.' + IntToStr (Month);
- end;
- end;
-
- procedure TMainForm.HolidaysTableDateSetText(Sender: TField; const Text: String);
- var
- Month, Day: Integer;
- APos: Integer;
- begin
- APos := Pos ('.',Text);
-
- if APos <> 0 then
- begin
- Day := StrToInt (Copy (Text,1,APos-1));
- Month := StrToInt (Copy (Text,APos+1,Length(Text)-APos));
- Sender.AsDateTime := EncodeDate (2000,Month,Day);
- end
- else raise EConvertError.Create ('Invalid date string');
- end;
-
- procedure TMainForm.HolidaysTableAfterPost(DataSet: TDataSet);
- begin
- VRPage1.Invalidate;
- end;
-
- procedure TMainForm.MonthsGridCells0CalcValue(Sender: TObject);
- begin
- (Sender as TAbsString).Value := LowerCase (LongMonthNames[MonthsCol + (Row*MONTHS) + 1]);
- end;
-
- procedure TMainForm.MonthsGridCells1CalcValue(Sender: TObject);
- var
- Index: Integer;
- begin
- if WeekDay = 6 then Index := 1
- else Index := WeekDay + 2;
-
- (Sender as TAbsString).Value := UpperCase (ShortDayNames[Index]);
-
- if WeekDay > 4 then (Sender as TAbsString).Font.Color := clRed
- else (Sender as TAbsString).Font.Color := clGray;
- end;
-
- procedure TMainForm.MonthsGridCells2CalcValue(Sender: TObject);
- var
- FirstDayDate: TDateTime;
- Day: Integer;
- begin
- FirstDayDate := EncodeDate (Year,MonthsCol + (Row*MONTHS) + 1,1);
- Day := Max ((Week*7) + WeekDay - ((DayOfWeek (FirstDayDate)+5) mod 7) + 1,0);
-
- if Variant (Day) > Variant(IncMonth (FirstDayDate,1) - FirstDayDate) then Day := 0;
-
- (Sender as TAbsInt).Value := Day;
-
- if (WeekDay > 4) or ((Day <> 0) and (not VarIsNull (HolidaysTable.Lookup ('Date',EncodeDate (2000,MonthsCol + (Row*MONTHS) + 1,Day),'Date')))) then
- (Sender as TAbsInt).Font.Color := clRed
- else
- (Sender as TAbsInt).Font.Color := clBlack;
- end;
-
- procedure TMainForm.MonthsGridColumns0EndPrint(Sender: TObject; var ARepeat: TAfterAction);
- begin
- Inc (MonthsCol);
-
- if MonthsCol < MONTHS then ARepeat := aaRepeat
- else MonthsCol := 0;
- end;
-
- procedure TMainForm.MonthsGridRows0EndPrint(Sender: TObject; var ARepeat: TAfterAction);
- begin
- Inc (Row);
-
- if Row < ROWS then ARepeat := aaRepeat
- else Row := 0;
- end;
-
- procedure TMainForm.MonthsGridColumns0SubItems0EndPrint(Sender: TObject; var ARepeat: TAfterAction);
- begin
- Inc (WeekDay);
-
- if WeekDay < 7 then ARepeat := aaRepeat
- else WeekDay := 0;
- end;
-
- procedure TMainForm.MonthsGridRows0SubItems2EndPrint(Sender: TObject; var ARepeat: TAfterAction);
- begin
- Inc (Week);
-
- if Week < 6 then ARepeat := aaRepeat
- else Week := 0;
- end;
-
- procedure TMainForm.MonthsGridColumns0SubItems1BeginPrint(Sender: TObject; var APrint: TBeforeAction);
- begin
- if MonthsCol = (MONTHS - 1) then APrint := baNoPrint;
- end;
-
- end.
-