164 lines
3.8 KiB
Plaintext
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.
|