unit uViewContenido; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uViewBase, cxStyles, ComCtrls, ToolWin, ActnList, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, uDADataTable, cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, ImgList, PngImageList, cxGrid; type IViewContenido = interface(IViewBase) ['{AF7F3CD1-3CD1-4F87-A4B4-FCB1320104F7}'] end; TfrViewContenido = class(TfrViewBase, IViewContenido) ActionListContenido: TActionList; cxGrid: TcxGrid; cxGridView: TcxGridDBTableView; cxGridLevel: TcxGridLevel; DADataSource: TDADataSource; actAnadir: TAction; actEliminar: TAction; actSubir: TAction; actBajar: TAction; ContenidoImageList: TPngImageList; ToolBar1: TToolBar; cxStyleRepository: TcxStyleRepository; cxStyleEven: TcxStyle; cxStyleOdd: TcxStyle; cxStyleSelection: TcxStyle; procedure actAnadirExecute(Sender: TObject); procedure actEliminarExecute(Sender: TObject); procedure actEliminarUpdate(Sender: TObject); procedure actSubirUpdate(Sender: TObject); procedure actBajarExecute(Sender: TObject); procedure actBajarUpdate(Sender: TObject); procedure actSubirExecute(Sender: TObject); private protected public end; implementation uses uBizImportesDetalleBase, uDAInterfaces; {$R *.dfm} procedure TfrViewContenido.actAnadirExecute(Sender: TObject); begin inherited; if Assigned(DADataSource.DataTable) then DADataSource.DataTable.Insert end; procedure TfrViewContenido.actEliminarExecute(Sender: TObject); begin inherited; if Assigned(DADataSource.DataTable) then DADataSource.DataTable.Delete; end; procedure TfrViewContenido.actEliminarUpdate(Sender: TObject); begin if Assigned(DADataSource.DataTable) then (Sender as TAction).Enabled := (not DADataSource.DataTable.IsEmpty) else (Sender as TAction).Enabled := False; end; procedure TfrViewContenido.actSubirUpdate(Sender: TObject); begin inherited; if Assigned(cxGridView.Controller.FocusedRow) then (Sender as TAction).Enabled := not (cxGridView.Controller.FocusedRow.IsFirst) else (Sender as TAction).Enabled := False; end; procedure TfrViewContenido.actBajarExecute(Sender: TObject); var AField : TDAField; begin inherited; if Assigned(DADataSource.DataTable) then begin AField := DADataSource.DataTable.FindField(fld_POSICION); // Por si el registro está recién insertado y la posición todavía // no ha sido asignada. if (AField.AsInteger < 0) then DADataSource.DataTable.Post; IntercambiarPosiciones(DADataSource.DataTable, AField.AsInteger, AField.AsInteger + 1); end; end; procedure TfrViewContenido.actBajarUpdate(Sender: TObject); begin inherited; if Assigned(cxGridView.Controller.FocusedRow) then (Sender as TAction).Enabled := not (cxGridView.Controller.FocusedRow.IsLast) else (Sender as TAction).Enabled := False; end; procedure TfrViewContenido.actSubirExecute(Sender: TObject); var AField : TDAField; begin inherited; if Assigned(DADataSource.DataTable) then begin AField := DADataSource.DataTable.FindField(fld_POSICION); // Por si el registro está recién insertado y la posición todavía // no ha sido asignada. if (AField.AsInteger < 0) then DADataSource.DataTable.Post; IntercambiarPosiciones(DADataSource.DataTable, AField.AsInteger, AField.AsInteger - 1); end; end; end.