<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://pascalabc.net/wiki/index.php?action=history&amp;feed=atom&amp;title=%D0%9F%D0%BB%D0%B0%D0%B3%D0%B8%D0%BD%D1%8B_%D0%B4%D0%BB%D1%8F_PascalABC.NET</id>
	<title>Плагины для PascalABC.NET - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://pascalabc.net/wiki/index.php?action=history&amp;feed=atom&amp;title=%D0%9F%D0%BB%D0%B0%D0%B3%D0%B8%D0%BD%D1%8B_%D0%B4%D0%BB%D1%8F_PascalABC.NET"/>
	<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%9F%D0%BB%D0%B0%D0%B3%D0%B8%D0%BD%D1%8B_%D0%B4%D0%BB%D1%8F_PascalABC.NET&amp;action=history"/>
	<updated>2026-04-18T12:35:48Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.39.1</generator>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%9F%D0%BB%D0%B0%D0%B3%D0%B8%D0%BD%D1%8B_%D0%B4%D0%BB%D1%8F_PascalABC.NET&amp;diff=2201&amp;oldid=prev</id>
		<title>Ibond в 16:30, 4 октября 2011</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%9F%D0%BB%D0%B0%D0%B3%D0%B8%D0%BD%D1%8B_%D0%B4%D0%BB%D1%8F_PascalABC.NET&amp;diff=2201&amp;oldid=prev"/>
		<updated>2011-10-04T16:30:37Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 19:30, 4 октября 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l86&quot;&gt;Строка 86:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 86:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     begin&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     begin&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       //Грузим изображение из ресурса&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       //Грузим изображение из ресурса&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       var img:Image := Image.FromStream(&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;GetResourceStream&lt;/del&gt;('PABCTestPlugin_newfile.png'));&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       var img:Image := Image.FromStream(&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream&lt;/ins&gt;('PABCTestPlugin_newfile.png'));&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       //Создаем кнопку&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       //Создаем кнопку&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       var item1 := new PluginGUIItem('Новый файл', 'Создать новый файл', img, Color.Transparent, Click1);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       var item1 := new PluginGUIItem('Новый файл', 'Создать новый файл', img, Color.Transparent, Click1);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ibond</name></author>
	</entry>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%9F%D0%BB%D0%B0%D0%B3%D0%B8%D0%BD%D1%8B_%D0%B4%D0%BB%D1%8F_PascalABC.NET&amp;diff=507&amp;oldid=prev</id>
		<title>92.207.5.58: Новая: Среда PascalABC.NET позволяет расширять функционал с помощью плагинов. Ниже приведен пример простого плаги...</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%9F%D0%BB%D0%B0%D0%B3%D0%B8%D0%BD%D1%8B_%D0%B4%D0%BB%D1%8F_PascalABC.NET&amp;diff=507&amp;oldid=prev"/>
		<updated>2009-10-10T09:37:07Z</updated>

		<summary type="html">&lt;p&gt;Новая: Среда PascalABC.NET позволяет расширять функционал с помощью плагинов. Ниже приведен пример простого плаги...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Среда PascalABC.NET позволяет расширять функционал с помощью плагинов. Ниже приведен пример простого плагина на паскале, который создает программу в редакторе и запускает ее:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Pascal&amp;quot;&amp;gt;&lt;br /&gt;
{$apptype dll}&lt;br /&gt;
&lt;br /&gt;
//для доступа к IVisualPascalABCPlugin, IVisualEnvironmentCompiler&lt;br /&gt;
{$reference PluginsSupport.dll}&lt;br /&gt;
//для доступа к IVisualEnvironmentCompiler.Compiler&lt;br /&gt;
{$reference Compiler.dll}&lt;br /&gt;
&lt;br /&gt;
{$reference System.Windows.Forms.dll}&lt;br /&gt;
{$reference System.Drawing.dll}&lt;br /&gt;
&lt;br /&gt;
//Ресурс - иконка кнопки&lt;br /&gt;
{$resource PABCTestPlugin_newfile.png}&lt;br /&gt;
&lt;br /&gt;
unit PABCTestPlugin;&lt;br /&gt;
&lt;br /&gt;
uses System.Collections.Generic,&lt;br /&gt;
     System.Drawing, &lt;br /&gt;
     VisualPascalABCPlugins;&lt;br /&gt;
&lt;br /&gt;
const NL = #13#10;&lt;br /&gt;
&lt;br /&gt;
type&lt;br /&gt;
  //Тестовый плагин - должен иметь имя *_VisualPascalABCPlugin и реализовывать &lt;br /&gt;
  //интерфейс VisualPascalABCPlugins.IVisualPascalABCPlugin&lt;br /&gt;
  //Этот плагин добавляет конпку на панель и в меню, по нажатию на которую:&lt;br /&gt;
  // 1. создается новый pas файл&lt;br /&gt;
  // 2. он открывается в оболочке&lt;br /&gt;
  // 3. он компилируется и запускается&lt;br /&gt;
  PABCTestPlugin_VisualPascalABCPlugin = class(IVisualPascalABCPlugin)&lt;br /&gt;
  private&lt;br /&gt;
    //интерфейс на оболочку компилятора&lt;br /&gt;
    compiler: IVisualEnvironmentCompiler;&lt;br /&gt;
    &lt;br /&gt;
    //для получения нового имени файла&lt;br /&gt;
    function GetNewFileName():string;&lt;br /&gt;
    begin&lt;br /&gt;
      var fileTemplate := 'C:\PABCWork.NET\NewProgram{0}.pas';&lt;br /&gt;
      var pasFile := '';&lt;br /&gt;
      var i := 1;&lt;br /&gt;
      repeat&lt;br /&gt;
        pasFile := string.Format(fileTemplate, i);&lt;br /&gt;
        i += 1;&lt;br /&gt;
      until(not System.IO.File.Exists(pasFile));&lt;br /&gt;
      result := pasFile;&lt;br /&gt;
    end;&lt;br /&gt;
    //обработчик нажатия на кнопку&lt;br /&gt;
    procedure Click1;&lt;br /&gt;
    begin&lt;br /&gt;
      //создаем файл&lt;br /&gt;
      var fileName := GetNewFileName;&lt;br /&gt;
      System.IO.File.WriteAllText(fileName, string.Format('begin'+NL+'Write(''Im new program &amp;quot;{0}&amp;quot; :)'');'+NL+'end.', fileName));&lt;br /&gt;
      //Открываем его в оболочке&lt;br /&gt;
      compiler.ExecuteAction(VisualEnvironmentCompilerAction.OpenFile, fileName);&lt;br /&gt;
      //Запускаем компиляцию и выполнение&lt;br /&gt;
      compiler.ExecuteAction(VisualEnvironmentCompilerAction.Run, nil);&lt;br /&gt;
    end;&lt;br /&gt;
  &lt;br /&gt;
  public&lt;br /&gt;
    //обязателен конструктор с одним параметром типа IVisualEnvironmentCompiler&lt;br /&gt;
    constructor(compiler: IVisualEnvironmentCompiler);&lt;br /&gt;
    begin&lt;br /&gt;
      self.compiler := compiler;&lt;br /&gt;
    end;&lt;br /&gt;
    //Обязательно&lt;br /&gt;
    function get_Name:string;&lt;br /&gt;
    begin&lt;br /&gt;
      result := 'PABC Test Plugin';&lt;br /&gt;
    end;&lt;br /&gt;
    //Обязательно&lt;br /&gt;
    function get_Version:string;&lt;br /&gt;
    begin&lt;br /&gt;
      result := '1.0';&lt;br /&gt;
    end;&lt;br /&gt;
    //Обязательно    &lt;br /&gt;
    function get_Copyright:string;&lt;br /&gt;
    begin&lt;br /&gt;
      result := 'PascalABCNet Team';&lt;br /&gt;
    end;&lt;br /&gt;
    //Обязательно&lt;br /&gt;
    //Визуальная оболочка с помощью этой функции получает спиок кнопок на панели и кнопок в меню:&lt;br /&gt;
    //Плагин должен добавить в соответвующий список необходимые кнопки.&lt;br /&gt;
    procedure GetGUI(MenuItems:List&amp;lt;IPluginGUIItem&amp;gt;; ToolBarItems:List&amp;lt;IPluginGUIItem&amp;gt;);&lt;br /&gt;
    begin&lt;br /&gt;
      //Грузим изображение из ресурса&lt;br /&gt;
      var img:Image := Image.FromStream(GetResourceStream('PABCTestPlugin_newfile.png'));&lt;br /&gt;
      //Создаем кнопку&lt;br /&gt;
      var item1 := new PluginGUIItem('Новый файл', 'Создать новый файл', img, Color.Transparent, Click1);&lt;br /&gt;
      //Добавляем в меню&lt;br /&gt;
      MenuItems.Add(item1);&lt;br /&gt;
      //Добавляем на панель&lt;br /&gt;
      ToolBarItems.Add(item1);&lt;br /&gt;
    end;&lt;br /&gt;
    &lt;br /&gt;
  end;&lt;br /&gt;
  &lt;br /&gt;
end.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Скомпилированную dll-библиотеку плагина нужно затем поместить в папку PascalABC.NET. Также необходимо создать иконку PABCTestPlugin_newfile.png размером 16x16.&lt;/div&gt;</summary>
		<author><name>92.207.5.58</name></author>
	</entry>
</feed>