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/InformesBase/Cliente/uViewControlesBase.pas
2007-07-10 17:33:08 +00:00

205 lines
5.9 KiB
ObjectPascal

unit uViewControlesBase;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uViewBase, cxGraphics, cxCustomData, cxStyles, cxTL,
cxImageComboBox, cxMaskEdit, cxTextEdit, cxInplaceContainer, cxDBTL,
cxControls, cxTLData, Menus, uBizControlesBase, DB, uDADataTable,
ImgList, PngImageList, EasyLVCommonObjects, EasyListview,
EasyLVCommonUtilities;
type
IViewControlesBase = 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 GetControl: IBizControlBase;
procedure SetControl(const Value: IBizControlBase);
property Control: IBizControlBase read GetControl write SetControl;
procedure Refresh;
end;
TfrViewControlesBase = class(TfrViewBase, IViewControlesBase)
ReportImages: TPngImageList;
dsDataTable: TDADataSource;
EasyListview: TEasyListview;
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
FControl : IBizControlBase;
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 GetControl: IBizControlBase; virtual;
procedure SetControl(const Value: IBizControlBase); virtual;
public
procedure Refresh; override;
property Control: IBizControlBase read GetControl write SetControl;
property OnDblClick: TNotifyEvent read GetDblClick write SetDblClick;
property PopupMenu: TPopupMenu read GetPopupMenu write SetPopupMenu;
end;
implementation
{$R *.dfm}
{ TfrViewControlesBase }
function TfrViewControlesBase.GetControl: IBizControlBase;
begin
Result := FControl;
end;
function TfrViewControlesBase.GetDblClick: TNotifyEvent;
begin
Result := FOnDblClick;
end;
function TfrViewControlesBase.GetPopupMenu: TPopupMenu;
begin
Result := FPopupMenu;
end;
procedure TfrViewControlesBase.Refresh;
var
GroupNoModificable: TEasyGroup;
GroupModificable: TEasyGroup;
AItem : TEasyItem;
i: Integer;
IDSelected : string;
begin
inherited;
if not Assigned(FControl) then
Exit;
EasyListview.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;
GroupNoModificable := EasyListview.Groups.Add;
GroupNoModificable.Caption := 'Controles generales';
GroupNoModificable.Bold := True;
GroupModificable := EasyListview.Groups.Add;
GroupModificable.Caption := 'Controles personalizados';
GroupModificable.Bold := True;
with FControl do
begin
FControl.First;
for i := 0 to (FControl.RecordCount - 1) do
begin
if EsModificable then
AItem := GroupModificable.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]);
FControl.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
FControl.First;
FControl.Locate('ID', StrToInt(EasyListview.Items[i].Captions[3]), []);
Break;
end;
EasyListview.ShowGroupMargins := True;
end
end;
procedure TfrViewControlesBase.SetControl(const Value: IBizControlBase);
begin
FControl := Value;
dsDataTable.DataTable := Value.DataTable;
end;
procedure TfrViewControlesBase.SetDblClick(const Value: TNotifyEvent);
begin
FOnDblClick := Value;
end;
procedure TfrViewControlesBase.SetPopupMenu(const Value: TPopupMenu);
begin
FPopupMenu := Value;
end;
procedure TfrViewControlesBase.EasyListviewItemDblClick(
Sender: TCustomEasyListview; Button: TEasyMouseButton; MousePos: TPoint;
HitInfo: TEasyHitInfoItem);
begin
inherited;
if Assigned(FOnDblClick) then
FOnDblClick(Self);
end;
procedure TfrViewControlesBase.EasyListviewItemContextMenu(
Sender: TCustomEasyListview; HitInfo: TEasyHitInfoItem;
WindowPoint: TPoint; var Menu: TPopupMenu; var Handled: Boolean);
begin
inherited;
if Assigned(FPopupMenu) then
Menu := FPopupMenu;
end;
procedure TfrViewControlesBase.EasyListviewItemSelectionChanged(
Sender: TCustomEasyListview; Item: TEasyItem);
begin
inherited;
if not Item.Destroying then
begin
FControl.First;
FControl.Locate('ID', StrToInt(Item.Captions[3]), []);
end;
end;
end.