BSOne.SFC/eCrmHE/EXE_eCrmHomeEdition/Messages/DReqPrintList.pas

164 lines
3.8 KiB
Plaintext

unit DReqPrintList;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, VirtualTrees, Vcl.ExtCtrls,
System.Generics.Collections, Vcl.Menus;
type
PReqEnt = ^TReqEnt;
TReqEnt = record
dtReg: TDateTime;
sDocId,
sDocName,
sPath: String;
nPageCnt: Integer;
end;
TDlgReqPrintList = class(TForm)
vtList: TVirtualStringTree;
popFun: TPopupMenu;
miDel: TMenuItem;
miDoPrint: TMenuItem;
procedure vtListGetNodeDataSize(Sender: TBaseVirtualTree;
var NodeDataSize: Integer);
procedure vtListFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode);
procedure vtListGetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
Column: TColumnIndex; TextType: TVSTTextType; var CellText: string);
procedure miDelClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure miDoPrintClick(Sender: TObject);
private
{ Private declarations }
procedure RefreshList;
public
{ Public declarations }
Constructor Create(aOwner: TComponent); override;
end;
var
DlgReqPrintList: TDlgReqPrintList;
implementation
uses
Tocsg.VTUtil, ManagerService, ManagerPrint, Tocsg.Safe;
{$R *.dfm}
Constructor TDlgReqPrintList.Create(aOwner: TComponent);
begin
Inherited Create(aOwner);
RefreshList
end;
procedure TDlgReqPrintList.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := TCloseAction.caFree;
end;
procedure TDlgReqPrintList.miDelClick(Sender: TObject);
var
pNode: PVirtualNode;
pData: PReqEnt;
begin
pNode := vtList.GetFirstSelected;
if pNode = nil then
exit;
if MessageBox(Handle, PChar('삭제하시겠습니까?'),
PChar(Caption), MB_ICONQUESTION or MB_YESNO) = IDNO then exit;
vtList.BeginUpdate;
try
pData := vtList.GetNodeData(pNode);
gMgSvc.MgPrt.DelPrintInfo(pData.sDocId, true);
vtList.DeleteNode(pNode);
finally
vtList.EndUpdate;
end;
end;
procedure TDlgReqPrintList.miDoPrintClick(Sender: TObject);
var
pNode: PVirtualNode;
pData: PReqEnt;
pEnt: PPrtEnt;
begin
pNode := vtList.GetFirstSelected;
if pNode = nil then
exit;
if MessageBox(Handle, PChar('출력하시겠습니까?'),
PChar(Caption), MB_ICONQUESTION or MB_YESNO) = IDNO then exit;
vtList.BeginUpdate;
try
pData := vtList.GetNodeData(pNode);
pEnt := gMgSvc.MgPrt.GetPrintInfo(pData.sDocId);
if pEnt <> nil then
gMgSvc.DoPrint(pEnt);
finally
vtList.EndUpdate;
end;
end;
procedure TDlgReqPrintList.RefreshList;
var
enum: TEnumerator<PPrtEnt>;
pData: PReqEnt;
begin
vtList.BeginUpdate;
try
VT_Clear(vtList);
Guard(enum, gMgSvc.MgPrt.GetEnts);
while enum.MoveNext do
begin
pData := VT_AddChildData(vtList);
pData.dtReg := enum.Current.dtReg;
pData.sDocId := enum.Current.sId;
pData.sDocName := enum.Current.WInfo.sDocName;
pData.sPath := enum.Current.sFPath;
end;
finally
vtList.EndUpdate;
end;
end;
procedure TDlgReqPrintList.vtListFreeNode(Sender: TBaseVirtualTree;
Node: PVirtualNode);
var
pData: PReqEnt;
begin
pData := Sender.GetNodeData(Node);
Finalize(pData^);
end;
procedure TDlgReqPrintList.vtListGetNodeDataSize(Sender: TBaseVirtualTree;
var NodeDataSize: Integer);
begin
NodeDataSize := SizeOf(TReqEnt);
end;
procedure TDlgReqPrintList.vtListGetText(Sender: TBaseVirtualTree;
Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
var CellText: string);
var
pData: PReqEnt;
begin
pData := Sender.GetNodeData(Node);
case Column of
0 : CellText := IntToStr(Node.Index + 1);
1 : CellText := DateTimeToStr(pData.dtReg);
2 : CellText := pData.sDocName;
3 : CellText := IntToStr(pData.nPageCnt);
4 : CellText := pData.sPath;
end;
end;
end.