335 lines
9.1 KiB
ObjectPascal
335 lines
9.1 KiB
ObjectPascal
|
|
unit uEditorCalendarioBase;
|
||
|
|
|
||
|
|
interface
|
||
|
|
|
||
|
|
uses
|
||
|
|
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
||
|
|
Dialogs, uEditorBase, dxLayoutLookAndFeels, JvAppStorage,
|
||
|
|
JvAppRegistryStorage, JvComponentBase, JvFormPlacement, ImgList,
|
||
|
|
PngImageList, StdActns, ActnList, ComCtrls, TBX, TB2Item, TB2Dock,
|
||
|
|
TB2Toolbar, pngimage, ExtCtrls, JvExControls, JvComponent,
|
||
|
|
JvNavigationPane, uBizCitas, uViewCalendarioBase, cxSchedulerStorage,
|
||
|
|
cxSchedulerDBStorage, DB, uDADataTable,
|
||
|
|
|
||
|
|
|
||
|
|
cxScheduler, cxSchedulerCustomControls, cxSchedulerCustomResourceView,
|
||
|
|
cxSchedulerDayView, cxSchedulerDateNavigator, cxSchedulerTimeGridView,
|
||
|
|
cxSchedulerUtils, cxSchedulerWeekView, cxSchedulerYearView, dxPSGlbl,
|
||
|
|
dxPSUtl, dxPSEngn, dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider,
|
||
|
|
dxPSFillPatterns, dxPSEdgePatterns, dxPrnDlg, dxPSCore, dxPScxCommon,
|
||
|
|
dxPScxScheduler2Lnk;
|
||
|
|
|
||
|
|
type
|
||
|
|
IEditorCalendarioBase = interface(IEditorBase)
|
||
|
|
['{FC69C1D8-B566-4CBF-9F87-16728114D161}']
|
||
|
|
function GetCitas: IBizCitas;
|
||
|
|
procedure SetCitas(const Value: IBizCitas);
|
||
|
|
property Citas: IBizCitas read GetCitas write SetCitas;
|
||
|
|
end;
|
||
|
|
|
||
|
|
TfEditorCalendarioBase = class(TfEditorBase, IEditorCalendarioBase)
|
||
|
|
TBXItem7: TTBXItem;
|
||
|
|
TBXSeparatorItem14: TTBXSeparatorItem;
|
||
|
|
TBXItem33: TTBXItem;
|
||
|
|
TBXItem34: TTBXItem;
|
||
|
|
actDia: TAction;
|
||
|
|
actSemana: TAction;
|
||
|
|
actMes: TAction;
|
||
|
|
cxSchedulerDBStorage: TcxSchedulerDBStorage;
|
||
|
|
DADataSource: TDADataSource;
|
||
|
|
actSemana5: TAction;
|
||
|
|
dxComponentPrinter1: TdxComponentPrinter;
|
||
|
|
dxComponentPrinter1Link2: TcxSchedulerReportLink;
|
||
|
|
dxPrintDialog1: TdxPrintDialog;
|
||
|
|
|
||
|
|
procedure FormShow(Sender: TObject);
|
||
|
|
procedure actDiaExecute(Sender: TObject);
|
||
|
|
procedure actSemanaExecute(Sender: TObject);
|
||
|
|
procedure actMesExecute(Sender: TObject);
|
||
|
|
procedure actRefrescarExecute(Sender: TObject);
|
||
|
|
procedure actNuevoExecute(Sender: TObject);
|
||
|
|
procedure actModificarExecute(Sender: TObject);
|
||
|
|
procedure actEliminarExecute(Sender: TObject);
|
||
|
|
procedure actModificarUpdate(Sender: TObject);
|
||
|
|
procedure actEliminarUpdate(Sender: TObject);
|
||
|
|
procedure actSemana5Execute(Sender: TObject);
|
||
|
|
procedure actImprimirExecute(Sender: TObject);
|
||
|
|
|
||
|
|
procedure cxSchedulerBeforeEditing(Sender: TcxCustomScheduler;
|
||
|
|
AEvent: TcxSchedulerControlEvent; AInplace: Boolean;
|
||
|
|
var Allow: Boolean);
|
||
|
|
procedure actPrevisualizarExecute(Sender: TObject);
|
||
|
|
|
||
|
|
private
|
||
|
|
FCitas: IBizCitas;
|
||
|
|
FViewCitas: IViewCalendarioBase;
|
||
|
|
|
||
|
|
protected
|
||
|
|
function GetViewCitas: IViewCalendarioBase;
|
||
|
|
procedure SetViewCitas(const Value: IViewCalendarioBase);
|
||
|
|
function GetCitas: IBizCitas;
|
||
|
|
procedure SetCitas(const Value: IBizCitas);
|
||
|
|
|
||
|
|
procedure InicializarCampos; virtual;
|
||
|
|
procedure InicializarEvento (var aEvent : TcxSchedulerControlEvent); virtual;
|
||
|
|
|
||
|
|
public
|
||
|
|
property Citas: IBizCitas read GetCitas write SetCitas;
|
||
|
|
property ViewCitas: IViewCalendarioBase read GetViewCitas write SetViewCitas;
|
||
|
|
destructor Destroy; override;
|
||
|
|
end;
|
||
|
|
|
||
|
|
var
|
||
|
|
fEditorCalendarioBase: TfEditorCalendarioBase;
|
||
|
|
|
||
|
|
implementation
|
||
|
|
{$R *.dfm}
|
||
|
|
|
||
|
|
{ TfEditorCalendarioBase }
|
||
|
|
|
||
|
|
uses schCitasClient_Intf;
|
||
|
|
|
||
|
|
function TfEditorCalendarioBase.GetCitas: IBizCitas;
|
||
|
|
begin
|
||
|
|
Result := FCitas;
|
||
|
|
end;
|
||
|
|
|
||
|
|
function TfEditorCalendarioBase.GetViewCitas: IViewCalendarioBase;
|
||
|
|
begin
|
||
|
|
Result := FViewCitas;
|
||
|
|
end;
|
||
|
|
|
||
|
|
procedure TfEditorCalendarioBase.SetCitas(const Value: IBizCitas);
|
||
|
|
begin
|
||
|
|
FCitas := Value;
|
||
|
|
|
||
|
|
if Assigned(FCitas) then
|
||
|
|
begin
|
||
|
|
DADataSource.DataTable := FCitas.DataTable;
|
||
|
|
|
||
|
|
if not DADataSource.DataTable.Active then
|
||
|
|
DADataSource.DataTable.Active := True;
|
||
|
|
end
|
||
|
|
else
|
||
|
|
DADataSource.DataTable := NIL;
|
||
|
|
end;
|
||
|
|
|
||
|
|
procedure TfEditorCalendarioBase.SetViewCitas(const Value: IViewCalendarioBase);
|
||
|
|
begin
|
||
|
|
FViewCitas := Value;
|
||
|
|
|
||
|
|
if Assigned(FViewCitas) then
|
||
|
|
FViewCitas.Calendario.OnBeforeEditing := cxSchedulerBeforeEditing;
|
||
|
|
end;
|
||
|
|
|
||
|
|
procedure TfEditorCalendarioBase.FormShow(Sender: TObject);
|
||
|
|
begin
|
||
|
|
inherited;
|
||
|
|
|
||
|
|
InicializarCampos;
|
||
|
|
|
||
|
|
if not Assigned(FViewCitas) then
|
||
|
|
raise Exception.Create('No hay ninguna vista asignada');
|
||
|
|
|
||
|
|
if not Assigned(Citas) then
|
||
|
|
raise Exception.Create('No hay ninguna cita asignada');
|
||
|
|
|
||
|
|
|
||
|
|
end;
|
||
|
|
|
||
|
|
destructor TfEditorCalendarioBase.Destroy;
|
||
|
|
begin
|
||
|
|
FViewCitas := NIL;
|
||
|
|
FCitas := NIL;
|
||
|
|
inherited;
|
||
|
|
end;
|
||
|
|
|
||
|
|
procedure TfEditorCalendarioBase.actDiaExecute(Sender: TObject);
|
||
|
|
begin
|
||
|
|
with FViewCitas.Calendario do
|
||
|
|
begin
|
||
|
|
if not ViewWeek.Active then
|
||
|
|
FViewCitas.pAnchorDate := SelectedDays[0];
|
||
|
|
SelectDays([FViewCitas.pAnchorDate], True);
|
||
|
|
|
||
|
|
ViewDay.Active := True;
|
||
|
|
end;
|
||
|
|
end;
|
||
|
|
|
||
|
|
procedure TfEditorCalendarioBase.actSemanaExecute(Sender: TObject);
|
||
|
|
begin
|
||
|
|
with FViewCitas.Calendario do
|
||
|
|
begin
|
||
|
|
if not ViewWeek.Active then
|
||
|
|
FViewCitas.pAnchorDate := SelectedDays[0];
|
||
|
|
SelectDays([FViewCitas.pAnchorDate], False);
|
||
|
|
|
||
|
|
ViewWeek.Active := True;
|
||
|
|
end;
|
||
|
|
end;
|
||
|
|
|
||
|
|
procedure TfEditorCalendarioBase.actMesExecute(Sender: TObject);
|
||
|
|
begin
|
||
|
|
with FViewCitas.Calendario do
|
||
|
|
begin
|
||
|
|
if not ViewWeek.Active then
|
||
|
|
FViewCitas.pAnchorDate := SelectedDays[0];
|
||
|
|
SelectDays([FViewCitas.pAnchorDate], False);
|
||
|
|
|
||
|
|
GoToDate(SelectedDays[0], vmMonth);
|
||
|
|
end;
|
||
|
|
end;
|
||
|
|
|
||
|
|
procedure TfEditorCalendarioBase.actRefrescarExecute(Sender: TObject);
|
||
|
|
begin
|
||
|
|
cxSchedulerDBStorage.FullRefresh;
|
||
|
|
end;
|
||
|
|
|
||
|
|
procedure TfEditorCalendarioBase.actNuevoExecute(Sender: TObject);
|
||
|
|
begin
|
||
|
|
FViewCitas.Calendario.CreateEventUsingDialog;
|
||
|
|
end;
|
||
|
|
|
||
|
|
procedure TfEditorCalendarioBase.actModificarExecute(Sender: TObject);
|
||
|
|
begin
|
||
|
|
with FViewCitas.Calendario do
|
||
|
|
begin
|
||
|
|
if (SelectedEventCount = 1) then
|
||
|
|
EditEventUsingDialog(SelectedEvents[0]);
|
||
|
|
end;
|
||
|
|
end;
|
||
|
|
|
||
|
|
procedure TfEditorCalendarioBase.actEliminarExecute(Sender: TObject);
|
||
|
|
begin
|
||
|
|
with FViewCitas.Calendario do
|
||
|
|
begin
|
||
|
|
if (SelectedEventCount > 0) then
|
||
|
|
DeleteSelectedEvents();
|
||
|
|
end;
|
||
|
|
end;
|
||
|
|
|
||
|
|
procedure TfEditorCalendarioBase.actModificarUpdate(Sender: TObject);
|
||
|
|
begin
|
||
|
|
(Sender as TAction).Enabled := (FViewCitas.Calendario.SelectedEventCount = 1);
|
||
|
|
end;
|
||
|
|
|
||
|
|
procedure TfEditorCalendarioBase.actEliminarUpdate(Sender: TObject);
|
||
|
|
begin
|
||
|
|
(Sender as TAction).Enabled := (FViewCitas.Calendario.SelectedEventCount > 0);
|
||
|
|
end;
|
||
|
|
|
||
|
|
procedure TfEditorCalendarioBase.actSemana5Execute(Sender: TObject);
|
||
|
|
begin
|
||
|
|
with FViewCitas.Calendario do
|
||
|
|
begin
|
||
|
|
FViewCitas.pAnchorDate := SelectedDays[0];
|
||
|
|
SelectDays([FViewCitas.pAnchorDate], True);
|
||
|
|
|
||
|
|
SelectWorkDays(Date);
|
||
|
|
end;
|
||
|
|
end;
|
||
|
|
|
||
|
|
procedure TfEditorCalendarioBase.actImprimirExecute(Sender: TObject);
|
||
|
|
begin
|
||
|
|
inherited;
|
||
|
|
with FViewCitas.Calendario do
|
||
|
|
begin
|
||
|
|
with dxComponentPrinter1Link2.PrintStyles do
|
||
|
|
begin
|
||
|
|
if ViewDay.Active then
|
||
|
|
begin
|
||
|
|
Daily.Active := True;
|
||
|
|
FViewCitas.pAnchorDate := SelectedDays.Items[0];
|
||
|
|
end
|
||
|
|
else
|
||
|
|
if ViewWeek.Active then
|
||
|
|
Weekly.Active := True
|
||
|
|
else begin
|
||
|
|
Monthly.Active := True;
|
||
|
|
FViewCitas.pAnchorDate := SelectedDays.Items[SelectedDays.Count DIV 2];
|
||
|
|
end;
|
||
|
|
end;
|
||
|
|
dxComponentPrinter1Link2.PrintRange.PrintFrom := FViewCitas.pAnchorDate;
|
||
|
|
dxComponentPrinter1Link2.PrintRange.PrintTo := FViewCitas.pAnchorDate;
|
||
|
|
dxComponentPrinter1.Print(True, nil, nil);
|
||
|
|
end;
|
||
|
|
end;
|
||
|
|
|
||
|
|
procedure TfEditorCalendarioBase.InicializarEvento(var aEvent: TcxSchedulerControlEvent);
|
||
|
|
begin
|
||
|
|
//
|
||
|
|
end;
|
||
|
|
|
||
|
|
procedure TfEditorCalendarioBase.cxSchedulerBeforeEditing(
|
||
|
|
Sender: TcxCustomScheduler; AEvent: TcxSchedulerControlEvent;
|
||
|
|
AInplace: Boolean; var Allow: Boolean);
|
||
|
|
begin
|
||
|
|
if VarIsNull(AEvent.ID) then
|
||
|
|
InicializarEvento(AEvent);
|
||
|
|
Allow := True;
|
||
|
|
end;
|
||
|
|
|
||
|
|
procedure TfEditorCalendarioBase.InicializarCampos;
|
||
|
|
var
|
||
|
|
aField : TcxSchedulerDBStorageField;
|
||
|
|
begin
|
||
|
|
inherited;
|
||
|
|
|
||
|
|
with cxSchedulerDBStorage.CustomFields do
|
||
|
|
begin
|
||
|
|
try
|
||
|
|
BeginUpdate;
|
||
|
|
Clear;
|
||
|
|
|
||
|
|
aField := Add;
|
||
|
|
aField.FieldName := fld_CITASTIPOTAREA;
|
||
|
|
|
||
|
|
aField := Add;
|
||
|
|
aField.FieldName := fld_CITASCODIGOCONTRATO;
|
||
|
|
|
||
|
|
aField := Add;
|
||
|
|
aField.FieldName := fld_CITASNOMBRECLIENTE;
|
||
|
|
|
||
|
|
aField := Add;
|
||
|
|
aField.FieldName := fld_CITASPARTIDA;
|
||
|
|
|
||
|
|
aField := Add;
|
||
|
|
aField.FieldName := fld_CITASCOMPLETADA;
|
||
|
|
|
||
|
|
aField := Add;
|
||
|
|
aField.FieldName := fld_CITASNOMBREPROVEEDOR;
|
||
|
|
|
||
|
|
finally
|
||
|
|
EndUpdate;
|
||
|
|
end;
|
||
|
|
end;
|
||
|
|
end;
|
||
|
|
|
||
|
|
procedure TfEditorCalendarioBase.actPrevisualizarExecute(Sender: TObject);
|
||
|
|
begin
|
||
|
|
inherited;
|
||
|
|
with FViewCitas.Calendario do
|
||
|
|
begin
|
||
|
|
with dxComponentPrinter1Link2.PrintStyles do
|
||
|
|
begin
|
||
|
|
if ViewDay.Active then
|
||
|
|
begin
|
||
|
|
Daily.Active := True;
|
||
|
|
FViewCitas.pAnchorDate := SelectedDays.Items[0];
|
||
|
|
end
|
||
|
|
else
|
||
|
|
if ViewWeek.Active then
|
||
|
|
Weekly.Active := True
|
||
|
|
else begin
|
||
|
|
Monthly.Active := True;
|
||
|
|
FViewCitas.pAnchorDate := SelectedDays.Items[SelectedDays.Count DIV 2];
|
||
|
|
end;
|
||
|
|
end;
|
||
|
|
dxComponentPrinter1Link2.PrintRange.PrintFrom := FViewCitas.pAnchorDate;
|
||
|
|
dxComponentPrinter1Link2.PrintRange.PrintTo := FViewCitas.pAnchorDate;
|
||
|
|
// dxComponentPrinter1.Preview(True, nil, nil);
|
||
|
|
end;
|
||
|
|
end;
|
||
|
|
|
||
|
|
end.
|