Перейти к содержанию
    

Вопросы по встроенному языку программирования Altium DelphiScript

Приветствую, коллеги.

Пишу скрипт, который работает десятки минут, парсит нетлист.

Хочу прогресс его выполнения выводить в статубар или прогрессбар.

Это возможно в altium pascal (delphi)?

Покажите пример, не могу найти.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

есть стандартный визуальный компонент progress bar или что то такое.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня OpenSDAD, когда генерит скрипт для Альтиума, формирующий посадочные места с элементами, делает так:
       

// Форма прогрес-бара

        echo(str(cmd, "object progressDlg: TProgressBarForm", ProgFnameF));
        echo(str(cmd, "  Left = 800", ProgFname));
        echo(str(cmd, "  Top = 500", ProgFname));
        echo(str(cmd, "  Caption = 'Please wait...'", ProgFname));
        echo(str(cmd, "  ClientHeight = 80", ProgFname));
        echo(str(cmd, "  ClientWidth = 500", ProgFname));
        echo(str(cmd, "  Font.Height = -11", ProgFname));
        echo(str(cmd, "  Font.Name = 'Tahoma'", ProgFname));
        echo(str(cmd, "  Position = poDesktopCenter", ProgFname));
        echo(str(cmd, "  TextHeight = 13", ProgFname));
        echo(str(cmd, "  object statusLabel: TLabel", ProgFname));
        echo(str(cmd, "    Left = 10", ProgFname));
        echo(str(cmd, "    Top = 10", ProgFname));
        echo(str(cmd, "    Width = 480", ProgFname));
        echo(str(cmd, "    Height = 24", ProgFname));
        echo(str(cmd, "    Caption = 'Processing'", ProgFname));
        echo(str(cmd, "    Font.Height = -11", ProgFname));
        echo(str(cmd, "    Font.Name = 'Tahoma'", ProgFname));
        echo(str(cmd, "    ParentFont = False", ProgFname));
        echo(str(cmd, "  end", ProgFname));
        echo(str(cmd, "  object ProgressBar: TProgressBar", ProgFname));
        echo(str(cmd, "    Left = 10", ProgFname));
        echo(str(cmd, "    Top = 40", ProgFname));
        echo(str(cmd, "    Width = 480", ProgFname));
        echo(str(cmd, "    Height = 17", ProgFname));
        echo(str(cmd, "  end", ProgFname));
        echo(str(cmd, "end", ProgFname));


      

  // Скрипт-обработчик прогрес-бара

        echo(str(cmd, "unit ProgressBarDialog;", PrognameF));
        echo(str(cmd, "interface", Progname));
        echo(str(cmd, "type", Progname));
        echo(str(cmd, "TProgressBarForm = class(TForm)", Progname));
        echo(str(cmd, "  ProgressBar : TProgressBar;", Progname));
        echo(str(cmd, "  statusLabel : TLabel;", Progname));
        echo(str(cmd, "end;", Progname));
        echo(str(cmd, "var", Progname));
        echo(str(cmd, "  progressDlg : TProgressBarForm;", Progname));
        echo(str(cmd, "implementation", Progname));
        echo(str(cmd, "procedure ProgressInit(aMax : Integer);", Progname));
        echo(str(cmd, "begin", Progname));
        echo(str(cmd, "    progressDlg.ProgressBar.Max := aMax;", Progname));
        echo(str(cmd, "    progressDlg.ProgressBar.Position := 0;", Progname));
        echo(str(cmd, "    progressDlg.Show;", Progname));
        echo(str(cmd, "end;", Progname));
        echo(str(cmd, "procedure ProgressUpdate(aCaption : String);", Progname));
        echo(str(cmd, "begin", Progname));
        echo(str(cmd, "    if progressDlg.ProgressBar.Position ", scrchar, "< progressDlg.ProgressBar.Max then", Progname));
        echo(str(cmd, "    begin", Progname));
        echo(str(cmd, "        progressDlg.statusLabel.Caption := aCaption;", Progname));
        echo(str(cmd, "        progressDlg.statusLabel.Visible  := true;", Progname));
        echo(str(cmd, "        progressDlg.ProgressBar.Position := progressDlg.ProgressBar.Position + 1;", Progname));
        echo(str(cmd, "        progressDlg.Refresh;", Progname));
        echo(str(cmd, "    end;", Progname));
        echo(str(cmd, "end;", Progname));
        echo(str(cmd, "procedure ProgressFinish;", Progname));
        echo(str(cmd, "begin", Progname));
        echo(str(cmd, "    progressDlg.Hide;", Progname));
        echo(str(cmd, "end;", Progname));
        echo(str(cmd, "end.", Progname));

 

Инициализация:

 

    // Инициалзация прогрес-бара
        echo(str(cmd, "    ProgressInit(", elem_num, ");", Scriptname));

Изменение:

        echo(str(cmd, "    ProgressUpdate('", cname, "');", Scriptname));

И соответственно окончание работы с баром - ProgressFinish;

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...