168 lines
4.4 KiB
ObjectPascal
168 lines
4.4 KiB
ObjectPascal
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.
|