⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit2.pas

📁 电气控制仿真软件
💻 PAS
字号:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Classes, Variants, Graphics, Controls, Forms,
  Dialogs, StdCtrls, vgctrl40_TLB;

type
  TForm2 = class(TForm)
    ListBox1: TListBox;
    Label1: TLabel;
    ListBox2: TListBox;
    Label2: TLabel;
    ListBox3: TListBox;
    Label3: TLabel;
    Button1: TButton;
    Button2: TButton;
    procedure ListBox1Click(Sender: TObject);
    procedure ListBox2Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure ListBox3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    vgctrl : Tvgctrl;
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.ListBox1Click(Sender: TObject);
var
  i, n : Integer;
  IsElliment : Boolean;
  tp : String;
  Sheet1 : ISheet;
begin
  if( ListBox1.ItemIndex > -1 )then
  begin
    Sheet1 := ISheet( vgctrl.ActiveSheet );
    n := Sheet1.UnitCount;
    ListBox2.Items.Clear();
    for i := 0 to n - 1 do
    begin
      IsElliment := IUnit( Sheet1.Units[i] ).ClassId = 99;
      if IsElliment then
      begin
        tp := IElliment( Sheet1.Units[i] ).Type_;
        if CompareText( tp, ListBox1.Items.Strings[ListBox1.ItemIndex] ) = 0 then
        begin
          ListBox2.Items.Add( IUnit( Sheet1.Units[i] ).Name );
        end;
      end;
    end;
  end;
end;

procedure TForm2.ListBox2Click(Sender: TObject);
var
  i, n : Integer;
  IsElliment : Boolean;
  dn, tp : String;
begin
  if( ListBox2.ItemIndex > -1 )then
  begin
    dn := ListBox2.Items.Strings[ListBox2.ItemIndex];
    ListBox3.Items.Clear();
    tp := vgctrl.Calculate( dn + '.Type' );
//为了实现通用,您在自己编写系统的时候,建立一个<设备---设备属性>对应的数据库即可。
    ListBox3.Items.Add( 'Id = ' + IntToStr( vgctrl.Calculate( dn + '.Id' ) ) );
    if( tp = '断路器A' ) or ( tp = '断路器B' ) or ( tp = '刀闸B' )then
    begin
      ListBox3.Items.Add( 'Caption = ' + vgctrl.Calculate( dn + '.Caption' ) );
      ListBox3.Items.Add( 'SiteNo = ' + IntToStr( vgctrl.Calculate( dn + '.SiteNo' ) ) );
      ListBox3.Items.Add( 'YXNum = ' + vgctrl.Calculate( dn + '.YXNum' ) );
      ListBox3.Items.Add( 'YXValue = ' + IntToStr( vgctrl.Calculate( dn + '.YXValue' ) ) );
    end
    else if( tp = '变电所标签' )then
    begin
      ListBox3.Items.Add( 'Habitus = ' + vgctrl.Calculate( dn + '.Habitus' ) );
      ListBox3.Items.Add( 'SiteNo = ' + IntToStr( vgctrl.Calculate( dn + '.SiteNo' ) ) );
      ListBox3.Items.Add( 'URL = ' + vgctrl.Calculate( dn + '.URL' ) );
      ListBox3.Items.Add( 'VolRate = ' + IntToStr( vgctrl.Calculate( dn + '.VolRate' ) ) );
      if vgctrl.Calculate( dn + '.Wink' ) then
        ListBox3.Items.Add( 'Wink = True' )
      else
        ListBox3.Items.Add( 'Wink = False' );
    end
    else if( tp = '三绕组A' ) or ( tp = '双绕组' )then
    begin
      ListBox3.Items.Add( 'Caption = ' + vgctrl.Calculate( dn + '.Caption' ) );
      ListBox3.Items.Add( 'DownVolRate = ' + IntToStr( vgctrl.Calculate( dn + '.DownVolRate' ) ) );
      ListBox3.Items.Add( 'Habitus = ' + vgctrl.Calculate( dn + '.Habitus' ) );
      if( tp = '三绕组A' )then
        ListBox3.Items.Add( 'MidstVolRate = ' + IntToStr( vgctrl.Calculate( dn + '.MidstVolRate' ) ) );
      ListBox3.Items.Add( 'SiteNo = ' + IntToStr( vgctrl.Calculate( dn + '.SiteNo' ) ) );
      ListBox3.Items.Add( 'UpVolRate = ' + IntToStr( vgctrl.Calculate( dn + '.UpVolRate' ) ) );
    end
    else if( tp = '电容器A' )then
    begin
      ListBox3.Items.Add( 'Caption = ' + vgctrl.Calculate( dn + '.Caption' ) );
      ListBox3.Items.Add( 'Habitus = ' + vgctrl.Calculate( dn + '.Habitus' ) );
      ListBox3.Items.Add( 'SiteNo = ' + IntToStr( vgctrl.Calculate( dn + '.SiteNo' ) ) );
    end
    else if( tp = '档位标签' ) or ( tp = '数据标签' )then
    begin
      if vgctrl.Calculate( dn + '.CheckLine' ) then
        ListBox3.Items.Add( 'CheckLine = true' )
      else
        ListBox3.Items.Add( 'CheckLine = false' );
      ListBox3.Items.Add( 'DownLine = ' + IntToStr( vgctrl.Calculate( dn + '.DownLine' ) ) );
      ListBox3.Items.Add( 'Flag = ' + IntToStr( vgctrl.Calculate( dn + '.Flag' ) ) );
      ListBox3.Items.Add( 'SiteNo = ' + IntToStr( vgctrl.Calculate( dn + '.SiteNo' ) ) );
      ListBox3.Items.Add( 'UpLine = ' + IntToStr( vgctrl.Calculate( dn + '.UpLine' ) ) );
      if( tp = '档位标签' )then
      begin
        if vgctrl.Calculate( dn + '.Wink' ) then
          ListBox3.Items.Add( 'Wink = True' )
        else
          ListBox3.Items.Add( 'Wink = False' );
      end;
      ListBox3.Items.Add( 'YCNum = ' + vgctrl.Calculate( dn + '.YCNum' ) );
    end
    else if( tp = '横母线' ) or ( tp = '竖母线' ) then
    begin
      ListBox3.Items.Add( 'Caption = ' + vgctrl.Calculate( dn + '.Caption' ) );
      ListBox3.Items.Add( 'SiteNo = ' + IntToStr( vgctrl.Calculate( dn + '.SiteNo' ) ) );
      ListBox3.Items.Add( 'VolRate = ' + IntToStr( vgctrl.Calculate( dn + '.VolRate' ) ) );
    end;
  end;
  Button2.Enabled := false;
end;

procedure TForm2.FormShow(Sender: TObject);
var
  i, n : Integer;
  u : IUnit;
  tp : String;
  Sheet1 : ISheet;
begin
  Sheet1 := ISheet( vgctrl.ActiveSheet );
  n := Sheet1.UnitCount;
  for i := 0 to n - 1 do
  begin
    u := IUnit( Sheet1.Units[i] );
    if u.ClassId = 99 then
    begin
      tp := IElliment( u ).Type_;
      if ListBox1.Items.IndexOf( tp ) = -1 then
      begin
        ListBox1.Items.Add( tp );
      end;
    end;
  end;
end;

procedure TForm2.ListBox3Click(Sender: TObject);
begin
  Button2.Enabled := ListBox3.ItemIndex > -1;
end;

procedure TForm2.Button2Click(Sender: TObject);
var
  dn, tp : String;
  v : OLEVARIANT;
  p : Integer;
  d : IUnit;
  Sheet1 : ISheet;
begin
  if( ListBox2.ItemIndex = -1 )then
    Exit;
  if( ListBox3.ItemIndex = -1 )then
    Exit;
  dn := ListBox2.Items.Strings[ListBox2.ItemIndex];
  tp := ListBox3.Items.Strings[ListBox3.ItemIndex];
  p := Pos( '=', tp );
  tp := Trim( Copy( tp, 1, p - 1 ) );
  Sheet1 := ISheet( vgctrl.ActiveSheet );
  d := IUnit( Sheet1.UnitByName( dn ) );
  v := d.GetPropertyValue( tp );
  if( VarType( v ) = varInteger )then
    d.SetPropertyValue( tp, Random( 200 ) )
  else if( VarType( v ) = varBoolean )then
    d.SetPropertyValue( tp, True )
  else if( VarType( v ) = varOleStr )then
    d.SetPropertyValue( tp, 'SSSSSSSS' );
  p := ListBox3.ItemIndex;
  ListBox2.OnClick( ListBox2 );
  ListBox3.ItemIndex := p;
  ListBox3.SetFocus;
  Button2.Enabled := true;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -