- Revisión de las unidades base de tratamiento de detalles para mejorar el posicionamiento mediante el campo POSICION.

- Activado el campo DESCUENTO en los detalles base.
- Cambiada la fuente para el campo DESCRIPCION de los detalles base.
- Nueva función 'LocalizarPosicion' en el controlador de detalles base.

git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES2/trunk@189 0c75b7a4-871f-7646-8a2f-f78d34cc349f
This commit is contained in:
David Arranz 2007-12-20 20:31:22 +00:00
parent 9f72108bda
commit 724b8806d6
3 changed files with 109 additions and 63 deletions

View File

@ -27,7 +27,7 @@ const
implementation implementation
uses uses
SysUtils, DB, Variants; SysUtils, DB, Variants, cxControls;
function CalcularLineaConcepto (const ADataTable : TDADataTable): Double; function CalcularLineaConcepto (const ADataTable : TDADataTable): Double;
var var
@ -122,11 +122,12 @@ end;
function DarTotalPorte(ADetalles: IDAStronglyTypedDataTable): Double; function DarTotalPorte(ADetalles: IDAStronglyTypedDataTable): Double;
var var
ImporteTotal: Currency; ImporteTotal: Currency;
ABookmark : TBookmark; AuxPosicionIni : Integer;
begin begin
AuxPosicionIni := ADetalles.DataTable.FieldByName(CAMPO_POSICION).AsInteger;
ShowHourglassCursor;
try try
ABookmark := ADetalles.DataTable.GetBookMark;
ADetalles.DataTable.DisableControls; ADetalles.DataTable.DisableControls;
ADetalles.DataTable.DisableEventHandlers; ADetalles.DataTable.DisableEventHandlers;
@ -140,10 +141,10 @@ begin
end; end;
finally finally
ADetalles.DataTable.Locate(CAMPO_POSICION, IntToStr(AuxPosicionIni), []);
ADetalles.DataTable.EnableEventHandlers; ADetalles.DataTable.EnableEventHandlers;
ADetalles.DataTable.GotoBookmark(ABookmark);
ADetalles.DataTable.FreeBookmark(ABookmark);
ADetalles.DataTable.EnableControls; ADetalles.DataTable.EnableControls;
HideHourglassCursor;
end; end;
Result := ImporteTotal; Result := ImporteTotal;

View File

@ -1,6 +1,6 @@
inherited frViewDetallesBase: TfrViewDetallesBase inherited frViewDetallesBase: TfrViewDetallesBase
Width = 975 Width = 451
Height = 372 Height = 304
Align = alClient Align = alClient
OnCreate = CustomViewCreate OnCreate = CustomViewCreate
OnDestroy = CustomViewDestroy OnDestroy = CustomViewDestroy
@ -9,8 +9,8 @@ inherited frViewDetallesBase: TfrViewDetallesBase
object ToolBar1: TToolBar object ToolBar1: TToolBar
Left = 0 Left = 0
Top = 0 Top = 0
Width = 975 Width = 451
Height = 24 Height = 46
AutoSize = True AutoSize = True
ButtonWidth = 63 ButtonWidth = 63
Caption = 'ToolBar1' Caption = 'ToolBar1'
@ -25,8 +25,6 @@ inherited frViewDetallesBase: TfrViewDetallesBase
TabOrder = 0 TabOrder = 0
Transparent = True Transparent = True
Visible = False Visible = False
ExplicitWidth = 451
ExplicitHeight = 46
object ToolButton1: TToolButton object ToolButton1: TToolButton
Left = 0 Left = 0
Top = 0 Top = 0
@ -56,16 +54,17 @@ inherited frViewDetallesBase: TfrViewDetallesBase
Top = 0 Top = 0
Action = FontEdit1 Action = FontEdit1
AutoSize = True AutoSize = True
Wrap = True
end end
object FontName: TJvFontComboBox object FontName: TJvFontComboBox
Left = 274 Left = 0
Top = 0 Top = 22
Width = 145 Width = 145
Height = 22 Height = 22
DroppedDownWidth = 145 DroppedDownWidth = 145
MaxMRUCount = 0 MaxMRUCount = 0
FontName = 'Tahoma' FontName = 'Tahoma'
ItemIndex = 35 ItemIndex = 34
Options = [foTrueTypeOnly, foNoOEMFonts, foScalableOnly, foWysiWyg] Options = [foTrueTypeOnly, foNoOEMFonts, foScalableOnly, foWysiWyg]
Sorted = True Sorted = True
TabOrder = 2 TabOrder = 2
@ -74,8 +73,8 @@ inherited frViewDetallesBase: TfrViewDetallesBase
OnClick = FontNameChange OnClick = FontNameChange
end end
object FontSize: TEdit object FontSize: TEdit
Left = 419 Left = 145
Top = 0 Top = 22
Width = 26 Width = 26
Height = 22 Height = 22
Hint = 'Font Size|Select font size' Hint = 'Font Size|Select font size'
@ -85,8 +84,8 @@ inherited frViewDetallesBase: TfrViewDetallesBase
OnChange = FontSizeChange OnChange = FontSizeChange
end end
object UpDown1: TUpDown object UpDown1: TUpDown
Left = 445 Left = 171
Top = 0 Top = 22
Width = 16 Width = 16
Height = 22 Height = 22
Associate = FontSize Associate = FontSize
@ -94,69 +93,67 @@ inherited frViewDetallesBase: TfrViewDetallesBase
Visible = False Visible = False
end end
object ToolButton13: TToolButton object ToolButton13: TToolButton
Left = 461 Left = 187
Top = 0 Top = 22
Width = 8 Width = 8
Caption = 'ToolButton13' Caption = 'ToolButton13'
ImageIndex = 10 ImageIndex = 10
Style = tbsSeparator Style = tbsSeparator
end end
object ToolButton6: TToolButton object ToolButton6: TToolButton
Left = 469 Left = 195
Top = 0 Top = 22
Action = RichEditBold1 Action = RichEditBold1
AutoSize = True AutoSize = True
end end
object ToolButton7: TToolButton object ToolButton7: TToolButton
Left = 503 Left = 229
Top = 0 Top = 22
Action = RichEditItalic1 Action = RichEditItalic1
AutoSize = True AutoSize = True
end end
object ToolButton8: TToolButton object ToolButton8: TToolButton
Left = 537 Left = 263
Top = 0 Top = 22
Action = RichEditUnderline1 Action = RichEditUnderline1
AutoSize = True AutoSize = True
end end
object ToolButton12: TToolButton object ToolButton12: TToolButton
Left = 571 Left = 297
Top = 0 Top = 22
Width = 8 Width = 8
Caption = 'ToolButton12' Caption = 'ToolButton12'
ImageIndex = 10 ImageIndex = 10
Style = tbsSeparator Style = tbsSeparator
end end
object ToolButton9: TToolButton object ToolButton9: TToolButton
Left = 579 Left = 305
Top = 0 Top = 22
Action = RichEditAlignLeft1 Action = RichEditAlignLeft1
AutoSize = True AutoSize = True
end end
object ToolButton10: TToolButton object ToolButton10: TToolButton
Left = 613 Left = 339
Top = 0 Top = 22
Action = RichEditAlignCenter1 Action = RichEditAlignCenter1
AutoSize = True AutoSize = True
end end
object ToolButton11: TToolButton object ToolButton11: TToolButton
Left = 647 Left = 373
Top = 0 Top = 22
Action = RichEditAlignRight1 Action = RichEditAlignRight1
AutoSize = True AutoSize = True
end end
end end
object cxGrid: TcxGrid object cxGrid: TcxGrid
Left = 0 Left = 0
Top = 50 Top = 72
Width = 975 Width = 451
Height = 322 Height = 232
Align = alClient Align = alClient
TabOrder = 1 TabOrder = 1
LookAndFeel.Kind = lfStandard LookAndFeel.Kind = lfStandard
LookAndFeel.NativeStyle = True LookAndFeel.NativeStyle = True
ExplicitLeft = 24
ExplicitTop = 74
object cxGridView: TcxGridDBTableView object cxGridView: TcxGridDBTableView
NavigatorButtons.ConfirmDelete = False NavigatorButtons.ConfirmDelete = False
FilterBox.Visible = fvNever FilterBox.Visible = fvNever
@ -198,6 +195,7 @@ inherited frViewDetallesBase: TfrViewDetallesBase
OptionsView.GroupByBox = False OptionsView.GroupByBox = False
OptionsView.HeaderEndEllipsis = True OptionsView.HeaderEndEllipsis = True
OptionsView.Indicator = True OptionsView.Indicator = True
OptionsView.NewItemRowInfoText = 'Click here to add a new row'
Styles.ContentEven = cxStyleEven Styles.ContentEven = cxStyleEven
Styles.ContentOdd = cxStyleOdd Styles.ContentOdd = cxStyleOdd
Styles.Selection = cxStyleSelection Styles.Selection = cxStyleSelection
@ -312,13 +310,11 @@ inherited frViewDetallesBase: TfrViewDetallesBase
end end
object TBXDock1: TTBXDock object TBXDock1: TTBXDock
Left = 0 Left = 0
Top = 24 Top = 46
Width = 975 Width = 451
Height = 26 Height = 26
BackgroundOnToolbars = False BackgroundOnToolbars = False
UseParentBackground = True UseParentBackground = True
ExplicitTop = 46
ExplicitWidth = 451
object TBXToolbar1: TTBXToolbar object TBXToolbar1: TTBXToolbar
Left = 0 Left = 0
Top = 0 Top = 0
@ -725,5 +721,9 @@ inherited frViewDetallesBase: TfrViewDetallesBase
Font.Name = 'Tahoma' Font.Name = 'Tahoma'
Font.Style = [fsBold] Font.Style = [fsBold]
end end
object cxStyle_DESCUENTO: TcxStyle
AssignedValues = [svTextColor]
TextColor = 7977877
end
end end
end end

View File

@ -106,6 +106,7 @@ type
actAnchoAutomatico: TAction; actAnchoAutomatico: TAction;
TBXSeparatorItem5: TTBXSeparatorItem; TBXSeparatorItem5: TTBXSeparatorItem;
TBXItem13: TTBXItem; TBXItem13: TTBXItem;
cxStyle_DESCUENTO: TcxStyle;
procedure actAnadirExecute(Sender: TObject); procedure actAnadirExecute(Sender: TObject);
procedure actEliminarExecute(Sender: TObject); procedure actEliminarExecute(Sender: TObject);
@ -160,7 +161,8 @@ type
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;
function darTipoLetraPorDefecto: TFont; virtual; function DarTipoConcepto(ARecord: TcxCustomGridRecord): string; virtual;
function DarFuentePorDefecto(const ATipo : String = TIPO_DETALLE_CONCEPTO): TFont; virtual;
function GetFocusedView : TcxGridDBTableView; virtual; function GetFocusedView : TcxGridDBTableView; virtual;
function GetGrid : TcxGrid; virtual; function GetGrid : TcxGrid; virtual;
procedure SeleccionarRowActual; procedure SeleccionarRowActual;
@ -185,7 +187,8 @@ type
implementation implementation
{$R *.dfm} {$R *.dfm}
uses uCalculosUtils; uses
uCalculosUtils;
function EnumFontsProc(var LogFont: TLogFont; var TextMetric: TTextMetric; function EnumFontsProc(var LogFont: TLogFont; var TextMetric: TTextMetric;
FontType: Integer; Data: Pointer): Integer; stdcall; FontType: Integer; Data: Pointer): Integer; stdcall;
@ -287,11 +290,13 @@ begin
_FocusedView.BeginUpdate; _FocusedView.BeginUpdate;
end; end;
function TfrViewDetallesBase.darTipoLetraPorDefecto: TFont; function TfrViewDetallesBase.DarTipoConcepto(
ARecord: TcxCustomGridRecord): string;
var
IndiceCol : Integer;
begin begin
Result := TFont.Create; IndiceCol := cxGridView.GetColumnByFieldName(CAMPO_TIPO).Index;
Result.Name := 'Tahoma'; Result := ARecord.DisplayTexts[IndiceCol];
Result.Size := 9;
end; end;
destructor TfrViewDetallesBase.Destroy; destructor TfrViewDetallesBase.Destroy;
@ -415,12 +420,13 @@ procedure TfrViewDetallesBase.cxGridViewInitEdit(Sender: TcxCustomGridTableView;
AItem: TcxCustomGridTableItem; AEdit: TcxCustomEdit); AItem: TcxCustomGridTableItem; AEdit: TcxCustomEdit);
var var
FuentePorDefecto: TFont; FuentePorDefecto: TFont;
ARecord: TcxCustomGridRecord;
begin begin
inherited; inherited;
if AEdit is TcxRichEdit then if AEdit is TcxRichEdit then
begin begin
FuentePorDefecto := darTipoLetraPorDefecto; ARecord := AItem.FocusedCellViewInfo.GridRecord;
FuentePorDefecto := DarFuentePorDefecto(DarTipoConcepto(ARecord));
//La primera vez que accedemos al grid entra dos veces y perderiamos el editor //La primera vez que accedemos al grid entra dos veces y perderiamos el editor
//dando un pete. //dando un pete.
if not Assigned(CurEdit) then if not Assigned(CurEdit) then
@ -454,25 +460,65 @@ procedure TfrViewDetallesBase.cxGridViewStylesGetContentStyle(
Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord;
AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); AItem: TcxCustomGridTableItem; out AStyle: TcxStyle);
var var
IndiceCol : Integer;
ATipo : String; ATipo : String;
begin begin
AStyle := cxStyleEven;
if Assigned(ARecord) then if Assigned(ARecord) then
begin begin
IndiceCol := cxGridViewTIPO.Index; ATipo := DarTipoConcepto(ARecord);
ATipo := VarToStr(ARecord.Values[IndiceCol]);
if ATipo = TIPO_DETALLE_SUBTOTAL then
AStyle := cxStyle_SUBTOTAL;
if ATipo = TIPO_DETALLE_TITULO then if ATipo = TIPO_DETALLE_TITULO then
AStyle := cxStyle_TITULO; AStyle := cxStyle_TITULO;
if ATipo = TIPO_DETALLE_SUBTOTAL then
AStyle := cxStyle_SUBTOTAL;
if ATipo = TIPO_DETALLE_DESCUENTO then
AStyle := cxStyle_DESCUENTO;
end; end;
end; end;
function TfrViewDetallesBase.darListaSeleccionados: TIntegerArray; function TfrViewDetallesBase.DarFuentePorDefecto(const ATipo: String): TFont;
begin
Result := TFont.Create;
if ATipo = TIPO_DETALLE_CONCEPTO then
begin
Result.Name := 'Tahoma';
Result.Size := 9;
Result.Style := [];
end;
if ATipo = TIPO_DETALLE_TITULO then
begin
Result.Name := cxStyle_TITULO.Font.Name;
Result.Color := cxStyle_TITULO.TextColor;
Result.Size := cxStyle_TITULO.Font.Size;
Result.Style := cxStyle_TITULO.Font.Style;
end;
if ATipo = TIPO_DETALLE_SUBTOTAL then
begin
Result.Name := cxStyle_SUBTOTAL.Font.Name;
Result.Color := cxStyle_SUBTOTAL.TextColor;
Result.Size := cxStyle_SUBTOTAL.Font.Size;
Result.Style := cxStyle_SUBTOTAL.Font.Style;
end;
if ATipo = TIPO_DETALLE_DESCUENTO then
begin
Result.Name := cxStyle_DESCUENTO.Font.Name;
Result.Color := cxStyle_DESCUENTO.TextColor;
Result.Size := cxStyle_DESCUENTO.Font.Size;
Result.Style := cxStyle_DESCUENTO.Font.Style;
end;
end;
function TfrViewDetallesBase.DarListaSeleccionados: TIntegerArray;
var var
i, j: Integer; i, j: Integer;
begin begin
j := darPosicionCampo(CAMPO_POSICION); j := DarPosicionCampo(CAMPO_POSICION);
with cxGridView.Controller do with cxGridView.Controller do
for i:=0 to SelectedRecordCount-1 do for i:=0 to SelectedRecordCount-1 do
@ -647,7 +693,7 @@ begin
//Rellenamos los tipos de conceptos que hay //Rellenamos los tipos de conceptos que hay
if Assigned(FController) then if Assigned(FController) then
begin begin
AListaValores := FController.darListaTIPOSDETALLE; AListaValores := FController.DarListaTIPOSDETALLE;
with (cxGridViewTIPO.Properties as TcxImageComboBoxProperties) do with (cxGridViewTIPO.Properties as TcxImageComboBoxProperties) do
if Items.Count = 0 then if Items.Count = 0 then
begin begin
@ -737,9 +783,8 @@ begin
if cxGridView.Controller.EditingController.IsEditing then if cxGridView.Controller.EditingController.IsEditing then
cxGridView.Controller.EditingController.Edit.PostEditValue; cxGridView.Controller.EditingController.Edit.PostEditValue;
if Assigned(Controller) if Assigned(Controller) and Assigned(FDetalles) then
and Assigned(FDetalles) then Controller.Move(FDetalles, DarListaSeleccionados, -1);
Controller.move(FDetalles, darListaSeleccionados, -1);
finally finally
cxGridView.EndUpdate; cxGridView.EndUpdate;
end; end;