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.
|