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.Tecsitel_FactuGES2/trunk@671 0c75b7a4-871f-7646-8a2f-f78d34cc349f
This commit is contained in:
roberto 2008-10-08 11:40:34 +00:00
parent e2c3ba89ac
commit b187fc5ab8

View File

@ -156,8 +156,8 @@ type
procedure cxGridViewEditValueChanged(Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem); procedure cxGridViewEditValueChanged(Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem);
procedure cxGridViewEditKeyDown(Sender: TcxCustomGridTableView; procedure cxGridViewEditKeyDown(Sender: TcxCustomGridTableView;
AItem: TcxCustomGridTableItem; AEdit: TcxCustomEdit; var Key: Word; AItem: TcxCustomGridTableItem; AEdit: TcxCustomEdit; var Key: Word; Shift: TShiftState);
Shift: TShiftState); procedure cxGridViewKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure cxGridViewInitEdit(Sender: TcxCustomGridTableView; procedure cxGridViewInitEdit(Sender: TcxCustomGridTableView;
AItem: TcxCustomGridTableItem; AEdit: TcxCustomEdit); AItem: TcxCustomGridTableItem; AEdit: TcxCustomEdit);
@ -198,6 +198,7 @@ type
procedure cxGridViewFocusedRecordChanged(Sender: TcxCustomGridTableView; procedure cxGridViewFocusedRecordChanged(Sender: TcxCustomGridTableView;
APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord;
ANewItemRecordFocusingChanged: Boolean); ANewItemRecordFocusingChanged: Boolean);
private private
FController : IControllerDetallesBase; FController : IControllerDetallesBase;
FDetalles: IDAStronglyTypedDataTable; FDetalles: IDAStronglyTypedDataTable;
@ -216,6 +217,8 @@ type
function DarListaSeleccionados: TIntegerArray; function DarListaSeleccionados: TIntegerArray;
procedure DoPasteText(Sender: TObject; AText: string); procedure DoPasteText(Sender: TObject; AText: string);
procedure TratamientoTeclas(Key: Word; Shift: TShiftState; AItem: TcxCustomGridTableItem = nil);
protected protected
function HayQueRecalcular(AItem: TcxCustomGridTableItem): Boolean; virtual; function HayQueRecalcular(AItem: TcxCustomGridTableItem): Boolean; virtual;
function EsTipoEditable(AItem: TcxCustomGridTableItem): Boolean; virtual; function EsTipoEditable(AItem: TcxCustomGridTableItem): Boolean; virtual;
@ -571,6 +574,12 @@ end;
procedure TfrViewDetallesBase.CustomViewCreate(Sender: TObject); procedure TfrViewDetallesBase.CustomViewCreate(Sender: TObject);
begin begin
inherited; 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; CurEdit := Nil;
FUpdating := False; FUpdating := False;
// cxGridView.OptionsView.RowSeparatorColor := dmBase.StyleManager.Colors.ButtonSeparatorColor; // cxGridView.OptionsView.RowSeparatorColor := dmBase.StyleManager.Colors.ButtonSeparatorColor;
@ -594,52 +603,7 @@ procedure TfrViewDetallesBase.cxGridViewEditKeyDown(
AEdit: TcxCustomEdit; var Key: Word; Shift: TShiftState); AEdit: TcxCustomEdit; var Key: Word; Shift: TShiftState);
begin begin
inherited; inherited;
cxGridView.BeginUpdate; TratamientoTeclas(Key, Shift, AItem);
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;
end; end;
procedure TfrViewDetallesBase.cxGridViewEditValueChanged(Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem); procedure TfrViewDetallesBase.cxGridViewEditValueChanged(Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem);
@ -748,6 +712,13 @@ begin
end; end;
end; end;
procedure TfrViewDetallesBase.cxGridViewKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
inherited;
TratamientoTeclas(Key, Shift);
end;
procedure TfrViewDetallesBase.cxGridViewStylesGetContentStyle( procedure TfrViewDetallesBase.cxGridViewStylesGetContentStyle(
Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord;
AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); AItem: TcxCustomGridTableItem; out AStyle: TcxStyle);
@ -1063,6 +1034,57 @@ begin
_FocusedView.Controller.EditingController.Edit.PostEditValue; _FocusedView.Controller.EditingController.Edit.PostEditValue;
end; end;
procedure TfrViewDetallesBase.TratamientoTeclas(Key: Word; Shift: TShiftState; AItem: TcxCustomGridTableItem = nil);
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); procedure TfrViewDetallesBase.actAnadirUpdate(Sender: TObject);
begin begin
inherited; inherited;