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

117 lines
2.7 KiB
Plaintext

unit DSelPerInfo;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, VirtualTrees,
ManagerPerInfo;
type
TDlgSelPerInfo = class(TForm)
pnClient: TPanel;
pnBottom: TPanel;
btnOk: TButton;
btnCancel: TButton;
vtList: TVirtualStringTree;
procedure vtListGetNodeDataSize(Sender: TBaseVirtualTree;
var NodeDataSize: Integer);
procedure btnOkClick(Sender: TObject);
procedure vtListFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode);
procedure vtListGetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
Column: TColumnIndex; TextType: TVSTTextType; var CellText: string);
private
{ Private declarations }
PerList_: TPerInfoEntList;
SelEnt_: PPerInfoEnt;
procedure RefreshList;
public
{ Public declarations }
Constructor Create(aOwner: TComponent; aList: TPerInfoEntList);
property SelEnt: PPerInfoEnt read SelEnt_;
end;
var
DlgSelPerInfo: TDlgSelPerInfo;
implementation
uses
Tocsg.VirtualTreeViewUtil, Tocsg.Strings;
{$R *.dfm}
Constructor TDlgSelPerInfo.Create(aOwner: TComponent; aList: TPerInfoEntList);
begin
Inherited Create(aOwner);
SelEnt_ := nil;
PerList_ := aList;
ASSERT(PerList_ <> nil);
RefreshList;
end;
procedure TDlgSelPerInfo.RefreshList;
var
i: Integer;
pData: PPerInfoEnt;
begin
vtList.BeginUpdate;
try
VT_Clear(vtList);
for i := 0 to PerList_.Count - 1 do
begin
pData := VT_AddChildData(vtLIst);
pData^ := PerList_[i]^;
end;
finally
vtList.EndUpdate;
end;
end;
procedure TDlgSelPerInfo.btnOkClick(Sender: TObject);
begin
SelEnt_ := VT_Get1SelNodeData(vtList);
if SelEnt_ = nil then
begin
MessageBox(Handle, PChar('검사 결과를 선택해 주십시오.'), PChar(Caption), MB_ICONWARNING or MB_OK);
exit;
end;
ModalResult := mrOk;
end;
procedure TDlgSelPerInfo.vtListFreeNode(Sender: TBaseVirtualTree;
Node: PVirtualNode);
var
pData: PPerInfoEnt;
begin
pData := Sender.GetNodeData(Node);
Finalize(pData^);
end;
procedure TDlgSelPerInfo.vtListGetNodeDataSize(Sender: TBaseVirtualTree;
var NodeDataSize: Integer);
begin
NodeDataSize := SizeOf(TPerInfoEnt);
end;
procedure TDlgSelPerInfo.vtListGetText(Sender: TBaseVirtualTree;
Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
var CellText: string);
var
pData: PPerInfoEnt;
begin
pData := Sender.GetNodeData(Node);
case Column of
0 : CellText := IntToStr(Node.Index + 1);
1 : CellText := DateTimeToStr(pData.dtBegin);
2 : CellText := pData.sTime;
3 : CellText := InsertPointComma(pData.dwVulFileCnt, 3);
end;
end;
end.