📄 main.pas
字号:
// Simple dOPC AE example program
unit Main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, Menus, dOPCComn, dOPCAE, dOPCIntf, dOPCCom;
type
TForm1 = class(TForm)
Memo1: TMemo;
MainMenu1: TMainMenu;
File1: TMenuItem;
Connect1: TMenuItem;
Disconnect1: TMenuItem;
Exit1: TMenuItem;
N1: TMenuItem;
dOPCEventServer1: TdOPCEventServer;
Panel1: TPanel;
Panel2: TPanel;
Memo2: TMemo;
Label1: TLabel;
Label2: TLabel;
Splitter1: TSplitter;
procedure Connect1Click(Sender: TObject);
procedure Disconnect1Click(Sender: TObject);
procedure Exit1Click(Sender: TObject);
procedure dOPCEventServer1EndUpdate(Sender: TObject);
procedure dOPCEventServer1Event(Sender: TObject; Event: TdOPCEvent);
procedure FormCreate(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Connect1Click(Sender: TObject);
begin
if dOPCEventServer1.SelectServer then
begin
Memo1.Clear;
Memo2.Clear;
dOPCEventServer1.Active := true;
dOPCEventServer1.AutoDelete := true;
end;
end;
procedure TForm1.Disconnect1Click(Sender: TObject);
begin
dOPCEventServer1.Active := false;
end;
procedure TForm1.Exit1Click(Sender: TObject);
begin
close;
end;
procedure TForm1.dOPCEventServer1EndUpdate(Sender: TObject);
var
Event: TdOPCEvent;
i : integer;
begin
Memo1.Lines.BeginUpdate;
Memo1.Clear;
for i := 0 to dOPCEventServer1.Events.Count-1 do // for all events in internal list
begin
Event := dOPCEventServer1.Events[i];
Memo1.Lines.Add(format('%s %s (%s)',
[DateTimetoStr(Event.Time),Event.Msg,Event.Source]));
//if Event.IsSimpleEvent then // active this lines, if you want to delete simple events
// Event.Free;
end;
Memo1.Lines.EndUpdate;
//if dOPCEventServer1.Events.Count > 10 then
// dOPCEventServer1.Events.DeleteEvents; // activate this line, if you want no events in internal list
end;
procedure TForm1.dOPCEventServer1Event(Sender: TObject; Event: TdOPCEvent);
begin
// if you want to group by the internal event list by other as
// the default group by "Event.Source+Event.ConditionName"
// You can do it here by overwriting property Key of class tdOPCEvent
// e.g.
// Event.Key := Event.Source+Event.ConditionName+Event.SubconditionName;
Memo2.Lines.Insert(0,(format('%s %s (%s)',
[DateTimetoStr(Event.Time),Event.Msg,Event.Source])));
// Attention:
// If you want to use given Event in own lists you must copy Event first!
// You can do it with following line:
// MyEvent := TdOPCEvent.Create(Event);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
dOPCInitSecurity;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -