Varela_PuntosVenta/Source/ControlesBase/Cliente/uEditorControlesBase.pas

168 lines
4.4 KiB
ObjectPascal
Raw Blame History

unit uEditorControlesBase;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uEditorDBBase, Menus, DB, uDADataTable, JvAppStorage,
JvAppRegistryStorage, JvComponentBase, JvFormPlacement, ImgList,
PngImageList, StdActns, ActnList, ComCtrls, TB2ExtItems, TBXExtItems,
TBX, TB2Item, TB2Dock, TB2Toolbar, ExtCtrls, JvExControls, JvComponent,
JvNavigationPane, pngimage, uBizControlesBase, uEditorBase,
uViewControlesBase, uDAInterfaces;
type
IEditorControlesBase = interface(IEditorDBBase)
['{9B15BCEA-4C31-442A-89EC-773B66460A3B}']
function GetControl: IBizControlBase;
procedure SetControl(const Value: IBizControlBase);
property Control: IBizControlBase read GetControl write SetControl;
end;
TfEditorControlesBase = class(TfEditorDBBase, IEditorControlesBase)
ViewPopupMenu: TPopupMenu;
Modificar1: TMenuItem;
Eliminar1: TMenuItem;
N1: TMenuItem;
Nuevo1: TMenuItem;
pngImageNuevo: TPngImageList;
actPropiedades: TAction;
TBXSeparatorItem14: TTBXSeparatorItem;
TBXItem7: TTBXItem;
N2: TMenuItem;
Propiedades1: TMenuItem;
procedure actNuevoExecute(Sender: TObject);
procedure actModificarExecute(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure actEliminarExecute(Sender: TObject);
procedure actRefrescarExecute(Sender: TObject);
procedure actPropiedadesExecute(Sender: TObject);
procedure actPropiedadesUpdate(Sender: TObject);
protected
FControl : IBizControlBase;
FViewControl : IViewControlesBase;
function GetControl: IBizControlBase; virtual;
procedure SetControl(const Value: IBizControlBase); virtual;
public
destructor Destroy; override;
property Control: IBizControlBase read GetControl write SetControl;
constructor Create(AOwner: TComponent); override;
end;
implementation
{$R *.dfm}
{ TfEditorControlesBase }
function TfEditorControlesBase.GetControl: IBizControlBase;
begin
Result := FControl;
end;
procedure TfEditorControlesBase.SetControl(const Value: IBizControlBase);
begin
FControl := Value;
dsDataTable.DataTable := FControl.DataTable;
if Assigned(FViewControl) then
begin
FViewControl.Control := FControl;
end;
end;
procedure TfEditorControlesBase.actNuevoExecute(Sender: TObject);
begin
inherited;
try
FControl.Insert;
FControl.Show;
finally
FViewControl.Refresh;
end;
end;
procedure TfEditorControlesBase.actModificarExecute(Sender: TObject);
begin
inherited;
try
FControl.Show;
finally
FViewControl.Refresh;
end;
end;
procedure TfEditorControlesBase.FormShow(Sender: TObject);
begin
inherited;
if not Assigned(FViewControl) then
raise Exception.Create('No hay ninguna vista asignada');
if not Assigned(Control) then
raise Exception.Create('No hay ning<6E>n control asignado');
FViewControl.OnDblClick := actModificar.OnExecute;
FViewControl.PopupMenu := ViewPopupMenu;
Control.DataTable.Active := True;
FViewControl.Refresh;
end;
destructor TfEditorControlesBase.Destroy;
begin
FViewControl := NIL;
FControl := NIL;
inherited;
end;
procedure TfEditorControlesBase.actEliminarExecute(Sender: TObject);
begin
try
if not FControl.EsModificable then
ShowMessage('Este control no se puede borrar')
else
if (Application.MessageBox('<27>Desea borrar este control?', 'Atenci<63>n', MB_YESNO) = IDYES) then
inherited;
finally
FViewControl.Refresh;
end;
end;
procedure TfEditorControlesBase.actRefrescarExecute(Sender: TObject);
begin
inherited;
if Assigned(FViewControl) then
FViewControl.Refresh;
end;
procedure TfEditorControlesBase.actPropiedadesExecute(Sender: TObject);
begin
inherited;
if Assigned(FControl) then
try
FControl.VerPropiedades;
actGuardar.Execute;
finally
FViewControl.Refresh;
end;
end;
procedure TfEditorControlesBase.actPropiedadesUpdate(Sender: TObject);
begin
inherited;
if Assigned(dsDataTable.DataTable) then
(Sender as TAction).Enabled := (not dsDataTable.DataTable.IsEmpty)
and not (dsDataTable.DataTable.State = dsInsert)
else
(Sender as TAction).Enabled := False;
end;
constructor TfEditorControlesBase.Create(AOwner: TComponent);
begin
inherited;
actModificar.ShortCut := ShortCut(VK_RETURN, []);
end;
end.