94 lines
2.1 KiB
Plaintext
94 lines
2.1 KiB
Plaintext
unit FCaPolicyList;
|
|
|
|
interface
|
|
|
|
uses
|
|
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
|
|
Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, VirtualTrees,
|
|
Vcl.Buttons;
|
|
|
|
type
|
|
PCapEnt = ^TCapEnt;
|
|
TCapEnt = record
|
|
sName,
|
|
sCaNames,
|
|
sTaskNames: String;
|
|
end;
|
|
|
|
TFrmCaPolicyList = class(TFrame)
|
|
vtList: TVirtualStringTree;
|
|
pnTop: TPanel;
|
|
btnAdd: TSpeedButton;
|
|
SpeedButton1: TSpeedButton;
|
|
procedure btnAddClick(Sender: TObject);
|
|
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);
|
|
private
|
|
{ Private declarations }
|
|
public
|
|
{ Public declarations }
|
|
end;
|
|
|
|
implementation
|
|
|
|
uses
|
|
DCaPolicyInfo, Tocsg.Safe, Tocsg.VirtualTreeViewUtil;
|
|
|
|
{$R *.dfm}
|
|
|
|
procedure TFrmCaPolicyList.btnAddClick(Sender: TObject);
|
|
var
|
|
dlg: TDlgCaPolicyInfo;
|
|
pData: PCapEnt;
|
|
begin
|
|
Guard(dlg, TDlgCaPolicyInfo.Create(Self));
|
|
if dlg.ShowModal = mrOk then
|
|
begin
|
|
vtList.BeginUpdate;
|
|
try
|
|
pData := VT_AddChildData(vtList);
|
|
pData.sName := dlg.CName;
|
|
pData.sCaNames := dlg.CaNames;
|
|
pData.sTaskNames := dlg.TaskNames;
|
|
finally
|
|
vtList.EndUpdate;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TFrmCaPolicyList.vtListFreeNode(Sender: TBaseVirtualTree;
|
|
Node: PVirtualNode);
|
|
var
|
|
pData: PCapEnt;
|
|
begin
|
|
pData := Sender.GetNodeData(Node);
|
|
Finalize(pData^);
|
|
end;
|
|
|
|
procedure TFrmCaPolicyList.vtListGetNodeDataSize(Sender: TBaseVirtualTree;
|
|
var NodeDataSize: Integer);
|
|
begin
|
|
NodeDataSize := SizeOf(TCapEnt);
|
|
end;
|
|
|
|
procedure TFrmCaPolicyList.vtListGetText(Sender: TBaseVirtualTree;
|
|
Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
|
|
var CellText: string);
|
|
var
|
|
pData: PCapEnt;
|
|
begin
|
|
pData := Sender.GetNodeData(Node);
|
|
|
|
case Column of
|
|
0 : CellText := IntToStr(Node.Index + 1);
|
|
1 : CellText := pData.sName;
|
|
2 : CellText := pData.sCaNames;
|
|
3 : CellText := pData.sTaskNames;
|
|
end;
|
|
end;
|
|
|
|
end.
|