unit uEditorContactos; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uEditorBase, uEditorGrid, ToolWin, ComCtrls, JvExControls, JvComponent, JvNavigationPane, uViewContactos, uBizContacto, ActnList, DBActns, uViewGrid, Menus, uDataModuleBase, ImgList, PngImageList, TB2Dock, TB2Toolbar, TBX, TB2Item, StdActns, TB2ExtItems, TBXExtItems, TB2MRU, DB, uDADataTable, JvFormAutoSize, uDAScriptingProvider, uDACDSDataTable, JvAppStorage, JvAppRegistryStorage, JvFormPlacement, ExtCtrls, uCustomView, uViewBase, uViewBarraSeleccion, JvComponentBase; type IEditorContactos = interface(IEditorGrid) ['{21DD6B74-F218-4AFC-91EE-1ECD4ADF1553}'] function GetContactos: IBizContacto; procedure SetContactos(const Value: IBizContacto); property Contactos: IBizContacto read GetContactos write SetContactos; function GetSelectionBarVisible: Boolean; procedure SetSelectionBarVisible(const Value: Boolean); property SelectionBarVisible : Boolean read GetSelectionBarVisible write SetSelectionBarVisible; end; TfEditorContactos = class(TfEditorGrid, IEditorContactos) frViewBarraSeleccion: TfrViewBarraSeleccion; procedure FormShow(Sender: TObject); procedure actNuevoExecute(Sender: TObject); procedure actModificarExecute(Sender: TObject); procedure frViewBarraSeleccionactSeleccionarExecute(Sender: TObject); private FContactos: IBizContacto; protected function GetContactos: IBizContacto; virtual; procedure SetContactos(const Value: IBizContacto); virtual; procedure SetViewGrid(const Value: IViewGrid); override; function GetSelectionBarVisible: Boolean; virtual; procedure SetSelectionBarVisible(const Value: Boolean); virtual; public property SelectionBarVisible : Boolean read GetSelectionBarVisible write SetSelectionBarVisible; property Contactos: IBizContacto read GetContactos write SetContactos; destructor Destroy; override; end; implementation uses uCustomEditor, uDataModuleContactos, uEditorContacto, uPluginControllerContactos, uEditorDBBase, cxGrid, cxGridCustomTableView, uDBSelectionList; {$R *.dfm} { ****************************** TfEditorContactos ******************************* } procedure TfEditorContactos.FormShow(Sender: TObject); begin inherited; if not Assigned(ViewGrid) then raise Exception.Create('No hay ninguna vista asignada'); if not Assigned(Contactos) then raise Exception.Create('No hay ningún contacto asignado'); Contactos.DataTable.Active := True; end; function TfEditorContactos.GetContactos: IBizContacto; begin Result := FContactos; end; procedure TfEditorContactos.SetContactos(const Value: IBizContacto); begin FContactos := Value; dsDataTable.DataTable := FContactos.DataTable; if Assigned(ViewGrid) then (ViewGrid as IViewContactos).Contactos := Contactos; end; procedure TfEditorContactos.actNuevoExecute(Sender: TObject); begin inherited; Contactos.Insert; Contactos.Show; ViewGrid.RefreshGrid; ViewGrid.SyncFocusedRecordsFromDataSet; end; procedure TfEditorContactos.actModificarExecute(Sender: TObject); begin inherited; Contactos.Show; ViewGrid.RefreshGrid; ViewGrid.SyncFocusedRecordsFromDataSet; end; procedure TfEditorContactos.SetViewGrid(const Value: IViewGrid); begin inherited; if Assigned(ViewGrid) and Assigned(Contactos) then (ViewGrid as IViewContactos).Contactos := Contactos; end; destructor TfEditorContactos.Destroy; begin FContactos := NIL; inherited; end; function TfEditorContactos.GetSelectionBarVisible: Boolean; begin Result := frViewBarraSeleccion.Visible end; procedure TfEditorContactos.SetSelectionBarVisible(const Value: Boolean); begin frViewBarraSeleccion.Visible := True; ViewGrid.OnDblClick := frViewBarraSeleccion.actSeleccionar.OnExecute; end; procedure TfEditorContactos.frViewBarraSeleccionactSeleccionarExecute( Sender: TObject); begin inherited; ViewGrid.SyncFocusedRecordsFromGrid; ModalResult := mrOK; end; end.