baumanets 12 28 марта, 2022 Опубликовано 28 марта, 2022 · Жалоба Приветствую, коллеги. Пишу скрипт, который работает десятки минут, парсит нетлист. Хочу прогресс его выполнения выводить в статубар или прогрессбар. Это возможно в altium pascal (delphi)? Покажите пример, не могу найти. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
peshkoff 24 28 марта, 2022 Опубликовано 28 марта, 2022 · Жалоба есть стандартный визуальный компонент progress bar или что то такое. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GeorgK 1 28 марта, 2022 Опубликовано 28 марта, 2022 · Жалоба У меня 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; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться