This repository has been archived on 2024-12-02. You can view files and clone it, but cannot push or open issues or pull requests.
FactuGES/Agenda/CalendarioBasico.pas
2007-06-26 08:08:27 +00:00

263 lines
7.7 KiB
ObjectPascal

unit CalendarioBasico;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, RdxFrame, RdxBotones, cxControls, cxContainer, cxEdit,
cxTextEdit, cxMaskEdit, cxDropDownEdit, cxLookupEdit, cxDBLookupEdit,
cxDBLookupComboBox, ExtCtrls, RdxPaneles, RdxBarras, Menus, cxStyles,
cxGraphics, cxScheduler, cxSchedulerStorage, cxSchedulerCustomControls,
cxSchedulerCustomResourceView, cxSchedulerDayView,
cxSchedulerDateNavigator, cxSchedulerWeekView, cxSchedulerDBStorage,
cxCheckListBox, ActnList, IBQuery, DB, IBCustomDataSet, IBDatabase,
IBTable, ComCtrls, ImgList, dxPSGlbl, dxPSUtl, dxPSEngn, dxPrnPg,
dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns,
dxPSEdgePatterns, dxPSCore, dxPSContainerLnk, dxPrnDlg, dxPgsDlg,
dxPScxCommon, cxSchedulerTimeGridView,
cxSchedulerUtils, cxSchedulerYearView, dxPScxScheduler2Lnk;
type
TfrCalendarioBasico = class(TRdxFrame)
BarraAgenda: TRdxBarraSuperior;
imgSombra: TImage;
pnlExtra: TRdxBarraSuperior;
bRefrescar: TRdxBoton;
cxScheduler: TcxScheduler;
cxSchedulerDBStorage: TcxSchedulerDBStorage;
RdxBoton1: TRdxBoton;
RdxBoton2: TRdxBoton;
ActionList: TActionList;
actDia: TAction;
actSemana: TAction;
actMes: TAction;
RdxBoton3: TRdxBoton;
bSeparador1: TShape;
bConsultar: TRdxBotonSuperior;
RdxBotonSuperior1: TRdxBotonSuperior;
RdxBotonSuperior2: TRdxBotonSuperior;
actVerTodos: TAction;
actAnadir: TAction;
actModificar: TAction;
actEliminar: TAction;
bImprimir: TRdxBotonSuperior;
actRefrescar: TAction;
Shape1: TShape;
actSemana5: TAction;
RdxBoton4: TRdxBoton;
actImprimir: TAction;
dxComponentPrinter1: TdxComponentPrinter;
dxComponentPrinter1Link2: TcxSchedulerReportLink;
dxPrintDialog1: TdxPrintDialog;
procedure actDiaExecute(Sender: TObject); virtual;
procedure actSemanaExecute(Sender: TObject);virtual;
procedure actMesExecute(Sender: TObject);virtual;
procedure actAnadirExecute(Sender: TObject);virtual;
procedure actModificarExecute(Sender: TObject);virtual;
procedure actModificarUpdate(Sender: TObject);virtual;
procedure actEliminarExecute(Sender: TObject);virtual;
procedure actEliminarUpdate(Sender: TObject);virtual;
procedure cxSchedulerCustomDrawEvent(Sender: TObject;
ACanvas: TcxCanvas; AViewInfo: TcxSchedulerEventCellViewInfo;
var ADone: Boolean);virtual;
procedure actRefrescarExecute(Sender: TObject);virtual;
procedure cxSchedulerBeforeEditing(Sender: TcxCustomScheduler;
AEvent: TcxSchedulerControlEvent; AInplace: Boolean;
var Allow: Boolean);
procedure actSemana5Execute(Sender: TObject);
procedure actImprimirExecute(Sender: TObject);
protected
AnchorDate: TDateTime;
procedure InicializarCampos; virtual;
procedure InicializarEvento (var aEvent : TcxSchedulerControlEvent); virtual;
public
constructor Create(AOwner : TComponent); override;
destructor Destroy; override;
end;
var
frCalendarioBasico: TfrCalendarioBasico;
implementation
{$R *.dfm}
{ TfrCalendarioMontajes }
uses
Entidades, Configuracion, ResourcesEditor, cxSchedulerDialogs,
dxOffice11, cxGeometry, cxLookAndFeelPainters, TablaCitas;
type
TcxSchedulerTimeRulerCellViewInfoAccess = class(TcxSchedulerTimeRulerCellViewInfo);
constructor TfrCalendarioBasico.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
Entidad := entAgenda;
ConfigurarFrame(Self, Self.Entidad);
AnchorDate := Date;
InicializarCampos;
end;
destructor TfrCalendarioBasico.Destroy;
begin
inherited;
end;
procedure TfrCalendarioBasico.actDiaExecute(Sender: TObject);
begin
if not cxScheduler.ViewWeek.Active then
AnchorDate := cxScheduler.SelectedDays[0];
cxScheduler.SelectDays([AnchorDate], True);
cxScheduler.ViewDay.Active := True;
end;
procedure TfrCalendarioBasico.actSemanaExecute(Sender: TObject);
begin
if not cxScheduler.ViewWeek.Active then
AnchorDate := cxScheduler.SelectedDays[0];
cxScheduler.SelectDays([AnchorDate], False);
cxScheduler.ViewWeek.Active := True;
end;
procedure TfrCalendarioBasico.actMesExecute(Sender: TObject);
begin
if not cxScheduler.ViewWeek.Active then
AnchorDate := cxScheduler.SelectedDays[0];
cxScheduler.SelectDays([AnchorDate], False);
cxScheduler.GoToDate(cxScheduler.SelectedDays[0], vmMonth);
end;
procedure TfrCalendarioBasico.actAnadirExecute(Sender: TObject);
begin
cxScheduler.CreateEventUsingDialog;
end;
procedure TfrCalendarioBasico.actModificarExecute(Sender: TObject);
begin
if (cxScheduler.SelectedEventCount = 1) then
cxScheduler.EditEventUsingDialog(cxScheduler.SelectedEvents[0]);
end;
procedure TfrCalendarioBasico.actModificarUpdate(Sender: TObject);
begin
(Sender as TAction).Enabled := (cxScheduler.SelectedEventCount = 1);
end;
procedure TfrCalendarioBasico.actEliminarExecute(Sender: TObject);
begin
if (cxScheduler.SelectedEventCount > 0) then
cxScheduler.DeleteSelectedEvents();
end;
procedure TfrCalendarioBasico.actEliminarUpdate(Sender: TObject);
begin
(Sender as TAction).Enabled := (cxScheduler.SelectedEventCount > 0);
end;
procedure TfrCalendarioBasico.cxSchedulerCustomDrawEvent(Sender: TObject;
ACanvas: TcxCanvas; AViewInfo: TcxSchedulerEventCellViewInfo;
var ADone: Boolean);
begin
{ if not AViewInfo.Selected then
begin
AViewInfo.Transparent := True;
FillGradientRect(ACanvas, AViewInfo.Bounds, clWhite,
AViewInfo.Color, False);
end;
ADone := False;}
end;
procedure TfrCalendarioBasico.actRefrescarExecute(Sender: TObject);
begin
cxSchedulerDBStorage.FullRefresh;
end;
procedure TfrCalendarioBasico.InicializarEvento(
var aEvent: TcxSchedulerControlEvent);
begin
//
end;
procedure TfrCalendarioBasico.InicializarCampos;
var
aField : TcxSchedulerDBStorageField;
begin
inherited;
with cxSchedulerDBStorage.CustomFields do
begin
try
BeginUpdate;
Clear;
aField := Add;
aField.FieldName := 'TIPOTAREA';
aField := Add;
aField.FieldName := 'CODIGOCONTRATO';
aField := Add;
aField.FieldName := 'NOMBRECLIENTE';
aField := Add;
aField.FieldName := 'PARTIDA';
aField := Add;
aField.FieldName := 'COMPLETADA';
aField := Add;
aField.FieldName := 'NOMBREPROVEEDOR';
finally
EndUpdate;
end;
end;
end;
procedure TfrCalendarioBasico.cxSchedulerBeforeEditing(
Sender: TcxCustomScheduler; AEvent: TcxSchedulerControlEvent;
AInplace: Boolean; var Allow: Boolean);
begin
if VarIsNull(AEvent.ID) then
InicializarEvento(AEvent);
Allow := True;
end;
procedure TfrCalendarioBasico.actSemana5Execute(Sender: TObject);
begin
AnchorDate := cxScheduler.SelectedDays[0];
cxScheduler.SelectDays([AnchorDate], True);
cxScheduler.SelectWorkDays(Date);
end;
procedure TfrCalendarioBasico.actImprimirExecute(Sender: TObject);
begin
inherited;
with dxComponentPrinter1Link2.PrintStyles do
begin
if cxScheduler.ViewDay.Active then
begin
Daily.Active := True;
AnchorDate := cxScheduler.SelectedDays.Items[0];
end
else
if cxScheduler.ViewWeek.Active then
Weekly.Active := True
else begin
Monthly.Active := True;
AnchorDate := cxScheduler.SelectedDays.Items[cxScheduler.SelectedDays.Count DIV 2];
end;
end;
dxComponentPrinter1Link2.PrintRange.PrintFrom := AnchorDate;
dxComponentPrinter1Link2.PrintRange.PrintTo := AnchorDate;
dxComponentPrinter1.Print(True, nil, nil);
end;
end.