This repository has been archived on 2024-11-28. You can view files and clone it, but cannot push or open issues or pull requests.
LuisLeon_FactuGES/Source/Modulos/Informes base/Views/uViewInformes.pas
2007-07-10 17:33:08 +00:00

223 lines
6.3 KiB
ObjectPascal

unit uViewInformes;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uViewBase, cxGraphics, cxCustomData, cxStyles, cxTL,
cxImageComboBox, cxMaskEdit, cxTextEdit, cxInplaceContainer, cxDBTL,
cxControls, cxTLData, Menus, uBizInformes, DB, uDADataTable,
ImgList, PngImageList, EasyListview,
MPCommonObjects, pngimage, JSDialog;
type
IViewInformes = interface(IViewBase)
['{D991FCEC-08DB-4F77-BD57-FA04B3C88788}']
function GetDblClick: TNotifyEvent;
procedure SetDblClick(const Value: TNotifyEvent);
property OnDblClick: TNotifyEvent read GetDblClick write SetDblClick;
function GetPopupMenu: TPopupMenu;
procedure SetPopupMenu(const Value: TPopupMenu);
property PopupMenu: TPopupMenu read GetPopupMenu write SetPopupMenu;
function GetInformes: IBizInforme;
procedure SetInformes(const Value: IBizInforme);
property Informes: IBizInforme read GetInformes write SetInformes;
procedure Refresh;
end;
TfrViewInformes = class(TfrViewBase, IViewInformes)
ReportImages: TPngImageList;
dsDataTable: TDADataSource;
EasyListview: TEasyListview;
JsNuevoDialog: TJSDialog;
// procedure EasyListviewItemDblClick(Sender: TCustomEasyListview;
// Button: TEasyMouseButton; MousePos: TPoint;
// HitInfo: TEasyHitInfoItem);
procedure EasyListviewItemContextMenu(Sender: TCustomEasyListview;
HitInfo: TEasyHitInfoItem; WindowPoint: TPoint; var Menu: TPopupMenu;
var Handled: Boolean);
procedure EasyListviewItemSelectionChanged(Sender: TCustomEasyListview;
Item: TEasyItem);
protected
FInformes : IBizInforme;
FOnDblClick: TNotifyEvent;
FPopupMenu: TPopupMenu;
function GetDblClick: TNotifyEvent; virtual;
procedure SetDblClick(const Value: TNotifyEvent); virtual;
function GetPopupMenu: TPopupMenu; virtual;
procedure SetPopupMenu(const Value: TPopupMenu); virtual;
function GetInformes: IBizInforme; virtual;
procedure SetInformes(const Value: IBizInforme); virtual;
public
procedure Refresh; override;
property Informes: IBizInforme read GetInformes write SetInformes;
property OnDblClick: TNotifyEvent read GetDblClick write SetDblClick;
property PopupMenu: TPopupMenu read GetPopupMenu write SetPopupMenu;
end;
implementation
{$R *.dfm}
{ TfrViewInformes }
function TfrViewInformes.GetInformes: IBizInforme;
begin
Result := FInformes;
end;
function TfrViewInformes.GetDblClick: TNotifyEvent;
begin
Result := FOnDblClick;
end;
function TfrViewInformes.GetPopupMenu: TPopupMenu;
begin
Result := FPopupMenu;
end;
procedure TfrViewInformes.Refresh;
var
Group: TEasyGroup;
GroupModificable: TEasyGroup;
AItem : TEasyItem;
i: Integer;
IDSelected : string;
CategoriaAux : String;
Opcion: TJsCustomButtonItem;
begin
inherited;
if not Assigned(FInformes) then
Exit;
EasyListview.BeginUpdate; // BeginUpdate(False);
try
IDSelected := '';
if EasyListview.Groups.Count > 0 then
begin
for i := 0 to EasyListview.Items.Count - 1 do
if EasyListview.Items[i].Selected then
IDSelected := EasyListview.Items[i].Captions[3]; // Columna ID
EasyListview.Groups.Clear;
end;
{
Group := EasyListview.Groups.Add;
Group.Caption := 'Controles generales';
Group.Bold := True;
GroupModificable := EasyListview.Groups.Add;
GroupModificable.Caption := 'Controles personalizados';
GroupModificable.Bold := True;
}
with FInformes do
begin
JsNuevoDialog.CustomButtons.Clear;
FInformes.First;
for i := 0 to (FInformes.RecordCount - 1) do
begin
if CategoriaAux <> FInformes.CATEGORIA then
begin
CategoriaAux := FInformes.CATEGORIA;
Group := EasyListview.Groups.Add;
Group.Caption := FInformes.CATEGORIA;
Group.Bold := True;
Opcion := JsNuevoDialog.CustomButtons.Add;
Opcion.Caption := Group.Caption;
Opcion.Info.Add(FInformes.CONTROLLER);
end;
// if EsModificable then
AItem := Group.Items.Add(NIL);
// else
// AItem := GroupNoModificable.Items.Add(NIL);
AItem.ImageIndex := ICONO;
AItem.Captions[0] := NOMBRE;
AItem.Captions[1] := DESCRIPCION;
AItem.Captions[3] := IntToStr(ID);
AItem.Captions[4] := MODIFICABLE;
AItem.DetailCount := 2;
AItem.Details[0] := 0; // Columna NOMBRE;
AItem.Details[1] := 1; // Columna DESCRIPCION;
AItem.Selected := (IDSelected = AItem.Captions[3]);
FInformes.Next;
end;
end;
finally
EasyListview.Sort.SortAll;
EasyListview.EndUpdate;
if (Length(IDSelected) = 0) and (EasyListview.Items.Count > 0) then
EasyListview.Items[0].Selected := True;
for i := 0 to EasyListview.Items.Count - 1 do
if EasyListview.Items[i].Selected then
begin
FInformes.First;
FInformes.Locate('ID', StrToInt(EasyListview.Items[i].Captions[3]), []);
Break;
end;
EasyListview.ShowGroupMargins := True;
end
end;
procedure TfrViewInformes.SetInformes(const Value: IBizInforme);
begin
FInformes := Value;
dsDataTable.DataTable := Value.DataTable;
end;
procedure TfrViewInformes.SetDblClick(const Value: TNotifyEvent);
begin
FOnDblClick := Value;
end;
procedure TfrViewInformes.SetPopupMenu(const Value: TPopupMenu);
begin
FPopupMenu := Value;
end;
{procedure TfrViewInformes.EasyListviewItemDblClick(
Sender: TCustomEasyListview; Button: TEasyMouseButton; MousePos: TPoint;
HitInfo: TEasyHitInfoItem);
begin
inherited;
// if Assigned(FOnDblClick) then
// FOnDblClick(Self);
end; }
procedure TfrViewInformes.EasyListviewItemContextMenu(
Sender: TCustomEasyListview; HitInfo: TEasyHitInfoItem;
WindowPoint: TPoint; var Menu: TPopupMenu; var Handled: Boolean);
begin
inherited;
if Assigned(FPopupMenu) then
Menu := FPopupMenu;
end;
procedure TfrViewInformes.EasyListviewItemSelectionChanged(
Sender: TCustomEasyListview; Item: TEasyItem);
begin
inherited;
if not Item.Destroying then
begin
FInformes.First;
FInformes.Locate('ID', StrToInt(Item.Captions[3]), []);
end;
end;
end.