Se arregla para que no salten las operaciones de insercion y borrado del grid y si las de nuestro controlador

git-svn-id: https://192.168.0.254/svn/Proyectos.Acana_FactuGES2/trunk@326 f4e31baf-9722-1c47-927c-6f952f962d4b
This commit is contained in:
David Arranz 2008-11-12 15:32:34 +00:00
parent ef9df1d20e
commit 2cb6934575
2 changed files with 75 additions and 48 deletions

View File

@ -64,7 +64,7 @@ inherited frViewDetallesBase: TfrViewDetallesBase
DroppedDownWidth = 145
MaxMRUCount = 0
FontName = 'Tahoma'
ItemIndex = 35
ItemIndex = 34
Options = [foTrueTypeOnly, foNoOEMFonts, foScalableOnly, foWysiWyg]
Sorted = True
TabOrder = 2
@ -153,6 +153,7 @@ inherited frViewDetallesBase: TfrViewDetallesBase
Align = alClient
TabOrder = 1
object cxGridView: TcxGridDBTableView
OnKeyDown = cxGridViewKeyDown
NavigatorButtons.ConfirmDelete = False
FilterBox.Visible = fvNever
OnEditing = cxGridViewEditing
@ -183,6 +184,9 @@ inherited frViewDetallesBase: TfrViewDetallesBase
OptionsCustomize.DataRowSizing = True
OptionsData.Appending = True
OptionsData.CancelOnExit = False
OptionsData.Deleting = False
OptionsData.DeletingConfirmation = False
OptionsData.Inserting = False
OptionsSelection.InvertSelect = False
OptionsSelection.MultiSelect = True
OptionsSelection.UnselectFocusedRecordOnExit = False

View File

@ -139,6 +139,8 @@ type
procedure actAnchoAutomaticoUpdate(Sender: TObject);
procedure cxGridViewInitEdit(Sender: TcxCustomGridTableView;
AItem: TcxCustomGridTableItem; AEdit: TcxCustomEdit);
procedure cxGridViewKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
FController : IControllerDetallesBase;
@ -157,6 +159,7 @@ type
function darPosicionCAMPO(const Nombre:String): Integer;
function darListaSeleccionados: TIntegerArray;
procedure TratamientoTeclas(Key: Word; Shift: TShiftState; AItem: TcxCustomGridTableItem = nil);
protected
function HayQueRecalcular(AItem: TcxCustomGridTableItem): Boolean; virtual;
function EsTipoEditable(AItem: TcxCustomGridTableItem): Boolean; virtual;
@ -328,6 +331,13 @@ end;
procedure TfrViewDetallesBase.CustomViewCreate(Sender: TObject);
begin
inherited;
//Debemos tener la certeza de que las operaciones del grid estan deshabilitadas y que
//cuando pulsamos teclas de insercion flecha abajo y demas salta nuestra propia lógia del controlador
cxGridView.OptionsData.Appending := False;
cxGridView.OptionsData.Deleting := False;
cxGridView.OptionsData.Inserting := False;
CurEdit := Nil;
FUpdating := False;
end;
@ -349,53 +359,7 @@ procedure TfrViewDetallesBase.cxGridViewEditKeyDown(
AEdit: TcxCustomEdit; var Key: Word; Shift: TShiftState);
begin
inherited;
cxGridView.BeginUpdate;
try
Case Key of
VK_DOWN : begin
//En el caso de ser la última fila hacemos un append nosotros no el grid
//ya que se saltaria la lógica del controllerDetallesBase
if cxGridView.Controller.IsFinish then
begin
Key := 0;
if Sender.Controller.EditingController.IsEditing then
Sender.Controller.EditingController.Edit.PostEditValue;
actAnadir.Execute;
end;
//Baja los conceptos seleccionados
if Shift = [ssAlt] then
begin
Key := 0;
actBajar.Execute;
end;
end;
VK_UP : begin
//Sube los conceptos seleccionados
if Shift = [ssAlt] then
begin
Key := 0;
actSubir.Execute;
end;
end;
VK_RETURN, VK_RIGHT
: begin
//En el caso de ser la última fila hacemos un append nosotros no el grid
//ya que se saltaria la lógica del controllerDetallesBase
if cxGridView.Controller.IsFinish
and AItem.IsLast then
begin
Key := 0;
if Sender.Controller.EditingController.IsEditing then
Sender.Controller.EditingController.Edit.PostEditValue;
actAnadir.Execute;
end;
end;
end;
finally
cxGridView.EndUpdate;
end;
TratamientoTeclas(Key, Shift, AItem);
end;
procedure TfrViewDetallesBase.cxGridViewEditValueChanged(Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem);
@ -460,6 +424,13 @@ begin
end;
end;
procedure TfrViewDetallesBase.cxGridViewKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
inherited;
TratamientoTeclas(Key, Shift);
end;
procedure TfrViewDetallesBase.cxGridViewStylesGetContentStyle(
Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord;
AItem: TcxCustomGridTableItem; out AStyle: TcxStyle);
@ -734,6 +705,58 @@ begin
cxGridView.Controller.EditingController.Edit.PostEditValue;
end;
procedure TfrViewDetallesBase.TratamientoTeclas(Key: Word; Shift: TShiftState;
AItem: TcxCustomGridTableItem);
begin
cxGridView.BeginUpdate;
try
case Key of
VK_DOWN : begin
//En el caso de ser la última fila hacemos un append nosotros no el grid
//ya que se saltaria la lógica del controllerDetallesBase
if cxGridView.Controller.IsFinish then
begin
Key := 0;
if _FocusedView.Controller.EditingController.IsEditing then
_FocusedView.Controller.EditingController.Edit.PostEditValue;
actAnadir.Execute;
end;
//Baja los conceptos seleccionados
if Shift = [ssAlt] then
begin
Key := 0;
actBajar.Execute;
end;
end;
VK_UP : begin
//Sube los conceptos seleccionados
if Shift = [ssAlt] then
begin
Key := 0;
actSubir.Execute;
end;
end;
VK_RETURN, VK_RIGHT
: begin
//En el caso de ser la última fila hacemos un append nosotros no el grid
//ya que se saltaria la lógica del controllerDetallesBase
if Assigned(AItem) and
cxGridView.Controller.IsFinish and AItem.IsLast then
begin
Key := 0;
if _FocusedView.Controller.EditingController.IsEditing then
_FocusedView.Controller.EditingController.Edit.PostEditValue;
actAnadir.Execute;
end;
end;
end;
finally
cxGridView.EndUpdate;
end;
end;
procedure TfrViewDetallesBase.actAnadirUpdate(Sender: TObject);
begin
inherited;