BSOne.SFC/Tocsg.Module/ContextAwarePolicy/FCaPolicyList.pas

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.