📄 frmgroup.pas
字号:
unit frmGroup;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TfrmGroupMgr = class(TForm)
Label1: TLabel;
lblServer: TLabel;
GroupBox1: TGroupBox;
btnAddGroup: TButton;
Label2: TLabel;
lbGroups: TListBox;
btnRemoveGroup: TButton;
btnOK: TButton;
edtGroupName: TLabeledEdit;
edtUpdateRate: TLabeledEdit;
edtDeadBand: TLabeledEdit;
cbActive: TCheckBox;
procedure FormCreate(Sender: TObject);
procedure btnAddGroupClick(Sender: TObject);
procedure btnRemoveGroupClick(Sender: TObject);
procedure lbGroupsClick(Sender: TObject);
private
procedure PopulateAddedGroups;
public
{ Public declarations }
end;
var
frmGroupMgr: TfrmGroupMgr;
implementation
{$R *.dfm}
uses
HFOPCClient, Data;
procedure TfrmGroupMgr.FormCreate(Sender: TObject);
begin
lblServer.Caption := ServerData.ServerName;
PopulateAddedGroups;
end;
procedure TfrmGroupMgr.btnAddGroupClick(Sender: TObject);
var
DeadBand: Single;
hGroup: THandle;
begin
DeadBand := StrToFloatDef(edtDeadBand.Text, 0);
hGroup := AddGroup(ServerData.HServer, PChar(edtGroupName.Text),
cbActive.Checked, StrToIntDef(edtUpdateRate.Text, 1000), nil, @DeadBand, 0);
if hGroup <> INVALID_HANDLE_VALUE then
begin
ServerData.Groups.AddObject(edtGroupName.Text, TObject(hGroup));
PopulateAddedGroups;
end;
end;
procedure TfrmGroupMgr.btnRemoveGroupClick(Sender: TObject);
var
Index: Integer;
begin
if lbGroups.ItemIndex >= 0 then
begin
Index := ServerData.Groups.IndexOf(lbGroups.Items[lbGroups.ItemIndex]);
if Index <> -1 then
begin
RemoveGroup(ServerData.HServer, THandle(ServerData.Groups.Objects[Index]));
ServerData.Groups.Delete(Index);
PopulateAddedGroups;
end;
end;
end;
procedure TfrmGroupMgr.PopulateAddedGroups;
var
I: Integer;
begin
lbGroups.Clear;
for I := 0 to ServerData.Groups.Count - 1 do
begin
lbGroups.Items.Add(ServerData.Groups.Strings[I]);
end;
lbGroups.ItemIndex := 0;
end;
procedure TfrmGroupMgr.lbGroupsClick(Sender: TObject);
var
Index: Integer;
GroupName: array[0..255] of char;
Rate: DWORD;
bActive: BOOL;
TimeBias: DWORD;
DEADBand: Single;
LCID: DWORD;
begin
if lbGroups.ItemIndex >= 0 then
begin
Index := ServerData.Groups.IndexOf(lbGroups.Items[lbGroups.ItemIndex]);
if Index <> -1 then
begin
if (GetGroupState(ServerData.HServer, THandle(ServerData.Groups.Objects[Index]),
GroupName, 255, Rate, bActive, TimeBias, DeadBand, LCID)) then
edtGroupName.Text := GroupName;
edtUpdateRate.Text := IntToStr(Rate);
edtDeadBand.Text := FloatToStr(DeadBand);
cbActive.Checked := bActive;
end;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -