$$IF?LIGHTEN,LIGHTRU $$IF?DARKEN,DARKRU История AL-IV (АЛФОР) $$FI $$IF?DARKRU,DARKEN $$IF?LIGHTRU,LIGHTEN $$FI

$$-FlagEN ENGLISH | $$-FlagRU RUSSIAN(Русский) |  | $$IF?LIGHTEN $$IF?DARKEN $$IF?LIGHTRU $$IF?DARKRU $$FI

## AL-IV: История версий | ## AL-IV: Versions history

#### xx.06.2018 - новая версия 0.90.8 | #### June, xx, 2018 - new version: 0.90.8
Сайт: Основной адрес сайта теперь kolmck.000webhostapp.com (и для AL-IV, соответственно, kolmck.000webhostapp.com/AL4/index.html). Да, это бесплатный хостинг, он показывает спонсорский баннер в углу страницы, но это всего лишь безобидная надпись [Powered by 000webhost], и главное, мне не нужно удивляться раз в полгода, почему неожиданно удвоилась стоимость продления домена, или почему летом истек срок оплаты за продление (причем, без предупреждения), хотя в прошлый раз оплата производилась осенью, и делалась на год. Так же есть надежда на то, что хостер не станет удалять сайт в случае моего длительного отсутствия. Исправления: для оператора, который начинается с двух точек, обеспечивается предыдущий левый операнд из предыдущей декларации переменной, в том числе; C#: {Memo}.Set_range_sel ? Изменения: Для всех переопределенных методов, в код обязательно встраивается контроль глубины рекурсии. Это не предотвращает возможность бесконечной рекурсии, но позволяет программе не упасть при возникновении такой ситуации; Визуальная библиотека: метод `{Screen}.Run` теперь принимает параметр - форму, которая устанавливается в качестве главной (форм может быть несколько, главная не обязательно создается первой); | Site: The main site address now is kolmck.000webhostapp.com (and for the AL-IV, correspondingly, kolmck.000webhostapp.com/AL4/index.html). Yes, this is a free of charge hosting, and it shows a banner in a corner of the web-site but this is just hummer [Powered by 000webhost], and I should not to discover amazingly once a half of a year that a domain cost became doubled or why in the summer and without any warnings the payment ended though the previous payment was given in winter and for a year. Also I hope that the site will not be deleted in case of my long absence. Fixes: Declaration of a variable provides now the left target for a repeating assignment / append statement starting from '..'. C#: {Memo}.Set_range_sel ? Changes: For all overridden methods, a control of recursion deep level restriction is adding. This does not stop totally possible infinitive recursion but allows to prevent a crash in such case by a proclaimed earlier way (ignoring an incorrect functions); Visual library: the method `{Screen}.Run` now has a parameter in which a main form should be passed to it on call (it is possible to create several forms, and the main form is not necessary to be created the first);

#### 29.06.2018 - версия 0.90.7 | #### June, 29, 2018 - version: 0.90.7
Изменения: Синтаксис (сахар): если оператор начинается с двух точек, то они замещаются левым выражением из (обычно) предыдущего оператора присваивания. Данное правило может использоваться для сокращения и "украшения" кода, например, при настройке формы (такие операторы продолженного присваивания не подсчитываются в блоке, составляя единый оператор с базисным): `Memo = New_memo(THIS, "MEMO", 0) ...Set_anchor_bottom(TRUE)` В Delphi/KOL большинство символов условной компиляции вынесены в EXTERNAL_DEFINES.inc (предотвращения ошибки компилятора Too many conditional symbols); Delphi/VCL: для колонок, выровненных 'TOP' и 'BOTTOM', вертикальные линейки прокрутки запрещены (горизонтальные запрещены для всех видов колонок). | Changes: Syntax (sugar): if a statement is starting from two dots, those are replaced with (usually) the left expression of a previous assignment. This rule can be used to short and decorate e.g. code of a form CONSTRUCT function (such continuation assignments are not accounting as standalone statements forming a single statement together with its base statement): `Memo = New_memo(THIS, "MEMO", 0) ...Set_anchor_bottom(TRUE)` In Delphi/KOL the most of defines are moved to EXTERNAL_DEFINES.inc (to prevent compiler error "Too many conditional symbols"); In Delphi/VCL for columns on form aligned 'TOP'/'BOTTOM', both scrollbars are disabled;

#### 07.06.2018 - версия 0.90.6 | #### June, 7, 2018 - version: 0.90.6
Изменения: Некоторый прогресс в компиляции в Python GUI-приложений, решены проблемы: Трансформации на плоскости (включая поворот текста); Скроллинг канвы в {Paintbox}. | Changes: Some progress in compiling to the Python of GUI application, problems which were solved: 2D transformations (including text rotations); Scrolling in the {Paintbox}.

#### 26.05.2018 - версия 0.90.5 | #### May, 26, 2018 - version: 0.90.5
Изменения: Некоторый прогресс в компиляции в Python GUI-приложений, решены проблемы: корректное размещение контролов в колонках и колонок на форме; отработка событий мыши, изменения размеров, закрытия формы, таймера; ввод пароля для {Edit}; формирование и вызов всплывающего меню в точке клика, отработка его событий; вызов диалога открытия файла, диалога с ответом да/нет; трансформация канвы при рисовании (для эллипса и арки - реализовано приближением полигонами). | Changes: Some progress in compiling to the Python of GUI application, problems which were solved: correct controls placing in columns, columns placing on form; handling mouse events, change size event, closing form event, timer event; entering password for {Edit}; creating and showing a popup menu at a click point; calling a file open dialog, a yes/no dialog; transforming a canvas during painting (for an ellipse and an arc this was implemented via polygons).

#### 20.05.2018 - версия 0.90.4 | #### May, 20, 2018 - version: 0.90.4
Изменения: Значительный прогресс в компиляции в Python GUI-приложений (есть еще незавершенные модули, события, классы, но работа продолжается); | Changes: Great progress in compiling to the Python of GUI application (though there are not finished things there - events, classes - but work is continuing);

#### 7.05.2018 - версия 0.90.3 | #### May, 7, 2018 - version: 0.90.3
Изменения: Значительный прогресс в компиляции в Python: компилируются и работают простейшие GUI-приложения; Python: {Clipboard} работает через tkinter (библиотека для GUI на Python), так что нет необходимости доустанавливать пакеты (pyperclip); {Paint_turtle}: т.к. в Windows 8 могут возвращаться неверные цвета системными функциями, в качестве нормального цвета рисования теперь используется цвет 'BUTTON_TEXT'; и добавлен метод Set_normal_color для установки желаемого цвета. Все визуальные тесты перемещены из AL4\Library\Visual в AL4\Test_visual_projects; файл OTLv4.h теперь требуется разместить в папке %OTL% (нужна переменная окружения %OTL); Исправления: {Stream}.Get_line ==> теперь может загружать строки из текстовых файлов Unix (завершающихся единственным символом #LF); C#: {Button} автоматически выставленная высота была слишком мала в системах с установленным большим размером шрифта, теперь вычисляется на основе шрифта по умолчанию; C++: {Random}.Probable ==> всегда возвращал 0.0; C++: анализ ошибок компиляции был слишком подозрительным - по любому слову "error" в выдаче компилятора останавливал запуск тестов/приложения. | Changes: Great progress in compiling to the Python: simplest GUI applications are compiling and working; Python: {Clipboard} works now via tkinter (GUI library for the Python), so it is not necessary to install additionally (pyperclip); {Paint_turtle}: sinse in Windows 8 incorrect colors can be returned by system functions, the 'BUTTON_TEXT' color is now used as a default normal color, and the method Set_normal_color added to set a desired normal color; All visual tests are moved from AL4\Library\Visual to AL4\Test_visual_projects; OTLv4.h now is searching in %OTL% directory (%OTL% environment variable is required); Fixes: {Stream}.Get_line ==> can now load lines from unix text files (#LF - ended); C#: {Button} autosized height was too low in systems with large font set, now recalculated on base of default font; C++: {Random}.Probable ==> returned 0.0 always; C++: analyzing errors was too suspicious: for case of any word "error" in an output it decided that it is not necessary to run compiled tests/application.

#### 22.04.2018 - версия 0.90.2 | #### April, 12, 2018 - version: 0.90.2
Изменения: Запрещено использовать операции ++/-- в выражениях с условно вычисляемыми частями (т.е. с операциями && / ||); Значительный прогресс в компиляции в Python: консольные приложения компилируются и работают (в Windows и в Linux); Исправления: Запрет на операцию IN/!IN для проверки включения вещественного числа в массив вещественных. | Changes: It is disabled to use ++/-- operations in expressions containing also && / || operations; Good progress in compiling to the Python: console applications are compiling and working (under Windows and Linux); Fixes: Operations IN/!IN are disabled for case of checking a real number value inclusion into an array of real numbers.

#### 12.04.2018 - версия 0.90.1 | #### April, 12, 2018 - version: 0.90.1
Изменения: {Stream}: быстрая загрузка строк (кодировка ANSI); C++: Опция компилятора /$SSTRINGS отменена; Исправления: Delphi/KOL: Write_file_stream не записывал файл; C#: загрузка текста в кодировке ANSI; Delphi/VCL: имело место большое потребление процессора; Оптимизация путем вставки тела функции (inline) не проводится, если оптимизируемая функция сама вызывает функции из классов, не импортированных в текущем классе (иначе возникают проблемы с компиляцией целевым компилятором); IDE AL4: исправления, улучшения (см. в конце файла IDE_AL4.al4); Добавлена подсветка синтаксиса Pascal (частично); Увеличена скорость отрисовки; | Changes: {Stream}: faster loading strings in ANSI encoding; C++: compiler option $SSTRINGS abandoned; Fixes: Delphi/KOL: Write_file_stream did not write any; C#: loading text in an ANSI encoding; Delphi/VCL: it was running 100% one processor core always; Optimization with "inlining" a function body is not accepted if an "inlined" function itself calls functions from the classe which is not importing in the target function (otherwise there are problems in a target compiler). IDE AL4: fixes and improvements (see in Ide_al4.al4 at the end of source file). Pascal (partial) syntax highlighting added; Painting speed increased.

#### 08.04.2018 - версия 0.90.0 | #### April, 8, 2018 - version: 0.90.0
Добавлено: Возможность компиляции в Python-программу. Пока реализовано создание только консольных приложений (компилируется и работает тестовый проект Hello_world). Изменения: Ошибка балансировки кавычек после END превращается в предупреждение. Исправления: Использование '" ... "' не в первой строке последовательности; Delphi/KOL: Запуск откомпилированного приложения в ранних ОС (Windows NT4); IDE AL4: исправления, улучшения (см. в конце файла IDE_AL4.al4); добавлена подцветка синтаксиса для других языков (реализовано для Python и FoxPro). | Added: Compiling the AL-IV project to a Python program. For now, for console applications only. (The test project Hello_world is compiling and working). Changes: Unbalanced quotations errors is replaced by a warning after the END. Fixes: Using '" ... "' not in the first line of a multi-line string; Delphi/KOL: Running compiled application in earlier OS (Windows NT4); IDE AL4: fixes and improvements (see in Ide_al4.al4 at the end of source file). syntax highlighting added for other programming languages (now, implemented for Python and FoxPro).

#### 21.03.2018 - версия 0.89.3 | #### March, 21, 2018 - version: 0.89.3
Изменения: Изменена семантика модификатора TESTED: модификатор TESTED(nn) означает заявление о том, что класс протестирован на nn%. TESTED без параметров и в отсутствие модификатора UNTESTED предполагает 100%. Ошибкой считается слишком сильная заявка, с разрывом более 5% от реального процента покрытия тестами; Синтаксис языка: Введен особый вариант строковых констант в кавычках вида `'"..."'` - такие строки могут размещаться только в отдельной строке кода, что ограничивает их применение многострочными константами (например, в нативных функциях); особенность таких строчных литералов в том, что без зеркалирования внутри такой строки могут записываться кавычки ("), и только сочетание ("') запрещено для записи в такой строке; при этом сохраняется простота анализа на баланс кавычек для всех остальных строк кода; Синтаксис языка: Изменен формат многострочных комментариев. Комментарии начинаются символами */ и завершаются /*. Код на языке AL-IV всегда должен находиться между /* и */ (как если бы он сам был комментарием в тексте другого языка - даже если кроме класса AL-IV в файле ничего больше нет); Оператор `DEBUG` оставлен только в верхнем регистре, вариант `debug` более не поддерживается. IDE AL4: исправления, улучшения (см. в конце файла IDE_AL4.al4). | Changes: A semantics of the modifier TESTED was changed: a construction TESTED(nn) now means that class is tested at least on nn%. The TESTED modifier without parameters as well as for case when UNTESTED is not specified means that the class is proclaimed to be tested on 100%. Too strong proclaiming (with a gap more then 5%) is accounting as an error; The language syntax: A special string literal format is added: `'"..."'` - such string constants can be placed only in separate lines of code, restricting it using mainly with long (multi-line) string constants; such strings allows to write any quotations to be written in a string except the ("') pare of quotations used only at the end of such triple-quoted string; therefore the way to check balancing quotes is still working for all other lines of code; The language syntax:: Multi-line comments format is changed. Comments should start with the symbol */ and ended with /*. AL-IV code always should be located between symbols /* and */ as it would be comments for another language even if only AL-IV code is found in a file; The `DEBUG` statement now can be written only in uppercase, the `debug` variant is no more supporting. IDE AL4: fixes and improvements (see in Ide_al4.al4 at the end of source file).

#### 16.03.2018 - версия 0.89.2 | #### March, 16, 2018 - new version: 0.89.2
Изменения: Компилируемость компилятора на C++ (код AL4.h, AL4.cpp вынесен из исходного кода компилятора в отдельные файлы, что предотвращает встраивание в компилятор кода, адаптированного под конкретные строковые настройки, и позволяет отложить адаптацию до компиляцию финальной программы); C++ приложения для Linux могут компилироваться непосредственно в Linux, компилятором, скомпилированным для работы в Linux; Исправления: C++: array[].Insert(At, Value); C++: {System_functions}.Parameter(i) ; C++, Delphi, Java: {System_functions}.MIN_INT (опечатка: FFFF_FFFF вместо 8FFF_FFFF); | Changes: Compiling of the compiler with C++ (code of AL4.h, AL4.cpp was moved to separate files from the compiler code, so its final adoption to a final project string options became possible); C++ applications for Linux can now be built in Linux with the AL-IV-to-C++ compiler prepared to work in Linux; Fixes: C++: array[].Insert(At, Value); C++: {System_functions}.Parameter(i) ; C++, Delphi, Java: {System_functions}.MIN_INT (typo FFFF_FFFF instead of 8FFF_FFFF);

#### 11.03.2018 - версия 0.89.1a | #### March, 11, 2018 - version: 0.89.1a
Исправления: Компиляция визуальных проектов C++; C++: {Canvas}.Offset (прежнее исправление было ошибочным); C++(GCC): присваивание записей; присваивание элемента массива записей; C++ (MSBuild): отключена трансформация целевой канвы при рисовании битмапа (как везде теперь должно работать); | Fixes: Compiling C++ visual projects; C++: {Canvas}.Offset (previous change was incorrect); C++(GCC): assigning records, assigning to an item of an array of records; C++ (MSBuild): target DC transformations are off

#### 10.03.2018 - версия 0.89.1 | #### March, 10, 2018 - version: 0.89.1
Изменения: обеспечена возможность компиляции визуальных проектов C++ компилятором GCC (для LINUX); {Bitmap} рисуется на канве {Canvas} без трансформаций, заданных в ней, при использовании операций Draw / Stretch_draw: целевая позиция при этом всегда отмеряется от верхнего левого угла целевой канвы - причиной является то, что не все платформы (Linux X) поддерживают повороты при наложении {Bitmap} без дополнительных усилий/возможного падения производительности; Исправления: Компиляция визуальных проектов C++; Сборка проектов C++ через MSBuild; C++: {Canvas}.Offset (лишнее преобразование в пиксели перед смещением); C#: {Canvas}.Arc(...., FALSE); | Changes: A capability added to compile C++ visual projects with GCC (for Linux); {Bitmap} is drawn without any transformations set to the destination {Canvas} by Draw and Stretch_draw methods: destination point specified is always assumed relative to the top-left corner of the canvas - the reason is that not all platform support such bitmap draw operation natively and sufficiently fast, at least in Linux X this can be a problem; Fixes: Compiling C++ visual projects; Building C++ projects via MSBuild; C++: {Canvas}.Offset (ambiguous conversion to pixels before the translation); C#: {Canvas}.Arc(...., FALSE);

#### 05.03.2018 - версия 0.89.0 | #### March, 5, 2018 - version: 0.89.0
Изменения: обеспечена возможность компиляции консольных проектов C++ компилятором GCC (для LINUX); На данном этапе компиляция тестового варианта и тестирование производятся в среде Windows, затем компилируется код c++ - проекта для компиляции в среде LINUX, и командный файл для его компиляции g++. Окончательно проект компилируется в среде Linux, где и запускается откомпилированная программа. Исправления: Создание консоли с возможностью ввода в оконном проекте C++ (MS Windows); | Changes: A capability added to compile C++ console projects with GCC (for Linux); For now, compiling of the test code and running it are processing in the Windows. Then, final c++ project is created together with a command file _call_gcc.cmd to run in Linux. After compiling/building in the Linux, the executable is created and can be launched there. Fixes: Creating a console with keyboard input capability in a windowed project for C++ (MS Windows);

#### 26.02.2018 - версия 0.88.0 | #### February, 26, 2018 - version: 0.88.0
Изменения: обеспечена возможность компиляции проектов C++ компилятором GCC (для Windows) (с ключом /$GCC); Исправления: компиляция обобщенных функций (см. проект AL4\Test_projects\_Test_sort и класс {Sorting}); IDE AL4: исправления, улучшения (см. в конце файла IDE_AL4.al4). | Changes: A capability added to compile C++ projects with GCC (for Windows) (with the key /$GCC); Fixes: compiling generic functions (see AL4\Test_projects\_Test_sort and class {Sorting}); IDE AL4: fixes and improvements (see in Ide_al4.al4 at the end of source file).

#### 18.02.2018 - версия 0.87.4 | #### February, 18, 2018 - version: 0.87.4
Исправления: скроллинг в классах {Paintbox}, {Paint_lines} - уточнен (C#); C++, Delphi: предотвращено сохранение сообщений компилятора на этапе тестирования в Compiler_messages.html (когда компилятор является частью компилируемой программы); IDE AL4: исправления, улучшения (см. в конце файла IDE_AL4.al4). | Fixed: better scrolling in classes {Paintbox}, {Paint_lines} (C#); C++, Delphi: saving compiler messages to Compiler_messages.html on a test stage was prevented (in case when the compiler is a part of a compiled application); IDE AL4: fixes and improvements (see in Ide_al4.al4 at the end of source file).

#### 14.02.2018 - версия 0.87.3 | #### February, 14, 2018 - version: 0.87.3
IDE AL4: просмотр локализованных ошибок/предупреждений; отображение локализованного исходного кода; исправления, улучшения (см. в конце файла IDE_AL4.al4). | IDE AL4: showing localized errors and warnings; showing/editing localized source code; fixes and improvements (see in Ide_al4.al4 at the end of source file).

#### 12.02.2018 - версия 0.87.2 | #### February, 12, 2018 - version: 0.87.2
Изменения: тесты в классе не выполняются повторно, если не изменялся класс и классы, от которых зависит этот класс (все целевые языки/платформы); тесты для {Form}; Исправления: C++: визуальное приложение с потомками {Paintbox} на форме могло упасть на создании формы (слишком ранний вызов события paint); все предупреждения/ошибки сохраняются в Compiler_messages.html (раньше часть сообщений туда не попадала); компиляция вызова функции из функции TEST при некоторых условиях могла приводить к формированию неверного (некомпилируемого) кода; компиляция кода блока в завершающем класс TEST могла обрываться из-за чрезмерно оптимистичного предсказания количества итераций; {Form}.Set_left (C++, Java); C++: тесты для GUI-приложения компилируются (для) и выполняются в GUI-режиме (а не как консольное приложение) - иначе невозможно тестирование GUI-компонентов; IDE AL4: исправления, улучшения (см. в конце файла IDE_AL4.al4). | Changes: tests in a class are not performed again if the class was not changed and there were no changes in classes on which it depends on (all the target languages/platforms); Tests for the class {Form}; Fixes: C++: visual application with {Paintbox} descendants could crash on form create (too early calling paint event); all the warnings/errors now are written to the Compiler_messages.html (some messages were not stored there); compiling a function call from a TEST function could lead to creating an incorrect (non-compilable) code; compiling the ending TEST block could be interrupted earlier because of too optimistic prediction of iterations amount; {Form}.Set_left (C++, Java); C++: tests for GUI-applicationa are compiled for and executed in a GUI mode (rather then in console mode) - otherwise it is not possible to test GUI applications; IDE AL4: fixes and improvements (see in Ide_al4.al4 at the end of source file).

#### 07.02.2018 - версия 0.87.1 | #### February, 7, 2018 - version: 0.87.1
Изменения: Добавлено: {Screen}.Default_font_size (по умолчанию 10 pt); автоматические размеры для кнопок, чек-боксов, меток в колонках выровненных 'TOP' и 'BOTTOM' - по размеру текста в них (C#); C#: тесты в классе не выполняются повторно, если не изменялся класс и классы, от которых зависит этот класс (пробная версия не учитывает изменения в самих тестах); Исправления: Delphi/KOL: добавляется опция NIL_EVENTS (без нее проблемы при исполнении); Java: Автоматические размеры для метки {Label}; Java: Установка размера шрифта для контролов; Tools\Test_report updated (to work in any directory where AL-IV is installed); IDE AL4: исправления, улучшения (см. в конце файла IDE_AL4.al4). | Changes: Added: {Screen}.Default_font_size (default value is 10 pt); automatic sizes for buttons, labels, check boxes in columns aligned 'TOP' and 'BOTTOM' - by text size in those controls (C#); C#: tests in a class are not performed again if the class was not changed and there were no changes in classes on which it depends on (current version does not take into account changes in TEST functions though); Fixes: Delphi/KOL: the option NIL_EVENTS is added now (without it, problems while executing) ; Java: automatic sizing of {Label}; Java: setting custom font size for controls; Tools\Test_report updated (to work in any directory where AL-IV is installed); IDE AL4: fixes and improvements (see in Ide_al4.al4 at the end of source file).

#### 04.02.2018 - версия 0.87.0 | #### February, 04, 2018 - version: 0.87.0
Изменения: Delphi/KOL, С++: изменена реализация динамических массивов строк; C#: {System_functions}.Platform_info содержит версию Windows и версию .NET; Псевдо-массив DATA[] доступен теперь из статических функций, а не только из методов класса; Ускорено чтение текстового файла в кодировке UTF-8 (C++, Delphi); Исправления: Создание фиксированных булевых массивов (Delphi/KOL); Генерация блока DEBUG с новыми локальными переменными (Java, Delphi); Завершение модального диалога (C++); c++: компиляция визуальных проектов с опцией /$NOSSTRINGS; C++: сравнение строк SString; | Changes: Delphi/KOL, C++: implementation of dynamic string arrays was changed; C#: {System_functions}.Platform_info contains Windows version and .NET version; Pseudo-array DATA[] is accessible now in static functions too, not only in methods of a class; Reading of text files in UTF-8 encoding became faster (C++, Delphi); Fixes: Creating fixed arrays of Boolean (Delphi/KOL); Generating a DEBUG block having variable declarations (Java, Delphi); Ending modal dialog (C++); c++: compiling visual projects with the option /$NOSSTRINGS; C++: comparing SString strings;

#### 29.01.2018 - версия 0.86.9a | #### January, 29, 2018 - version: 0.86.9a
Исправления: Возврат ответа модального диалога; Вычисление {Control}.Bounds (Delphi/VCL); | Fixes: Returning modal dialog answer; Calculating {Control}.Bounds (Delphi/VCL);

#### 29.01.2018 - версия 0.86.9 | #### January, 29, 2018 - version: 0.86.9
Изменения: AL-IV может устанавливаться на любой диск (путь к корню установки должен быть прописан в переменной среды окружения "AL4"); Исправления: для {Dialog}, вызов Hide может использоваться для завершения модального диалога, другие исправления (Delphi/VCL, Delphi/KOL, C#, Java); генерация Report_leaks (C++, случай /$Strings==std и /$SSTRINGS); динамические массивы булевых (Delphi); | Changes: AL-IV can now be installed on any disk (a path to the installed folder should be stored in the environment variable "AL4"); Fixes: For the {Dialog}: calling Hide now can also be used to end a modal dialog; other fixes (Delphi/VCL, Delphi/KOL, C#, Java); Generating Report_leaks (C++, for options /$Strings==std and /$SSTRINGS); Dynamic arrays of Boolean (Delphi);

#### 26.01.2018 - новая версия 0.86.8 | #### January, 26, 2018 - new version: 0.86.8
Исправлено: захват мыши в {Paint_tabs} (Delphi/VCL); IDE AL4: Исправлено: неточное позиционирование в тексте кликом мыши; Исправлено: удаление текста закрытого файла из памяти; Исправлено: авто-дополнение после '.' (предложение полей, методов и т.д.); Улучшено: учитывается вложенных уровень (()) при подсказке по параметрам функции; Добавлено: подсказка по конструктору класса/записи {Type}(... по CTRL-ПРОБЕЛ; | Fixed: capturing mouse for a {Paint_tabs} (Delphi/VCL); IDE AL4: Fixed: incorrect positioning in text by mouse click; Fixed: deleting text from memory together with closing tab; Fixed: auto-completion after '.' (suggesting fields, methods, etc.); Improved: taking into account (()) nesting hinting function parameters; Added: hints on class/record constructors {Type}(... by CTRL-SPACE;

#### 24.01.2018 - версия 0.86.7 | #### January, 24, 2018 - version: 0.86.7
Исправлено: {Control}.Set_foreground / Set_background; {Bitmap}.Load (C#); Добавлено: {Paint_turtle} - кнопка с рисованием пиктограммы "черепашкой"; Программа Tools\Turtle_image для подготовки черепашьих рисунков (поддерживает подложку в виде обычного растрового изображения); IDE AL4: добавлены инструментальные кнопки для часто используемых операций (сохранение, поиск, откат, компиляция); исправления, улучшения (см. в конце файла IDE_AL4.al4). | Fixes: {Control}.Set_foreground / Set_background; {Bitmap}.Load (C#); Added: {Paint_turtle} - a button with a glyph drawn by a "turtle"; An application Tools\Turtle_image to prepare turtle images (supports underlying images); IDE AL4: tool buttons added for some often operations: save, find, undo, compile); fixes and improvements (see in Ide_al4.al4 at the end of source file).

#### 23.01.2018 - версия 0.86.6 | #### January, 23, 2018 - version: 0.86.6
Исправлено: Компиляция проектов c {OpenGL}; Изменения: {Paint_tabs} - анимация с автоматической прокруткой вкладки больше не включается при нажатии на вкладку левой кнопкой мыши (только при нажатии правой); IDE AL4: локализация, перевод на русский язык; исправления, улучшения (см. в конце файла IDE_AL4.al4). | Fixes: Compiling {OpenGL} projects; Changes: {Paint_tabs} - animation with auto-scroll is not now started by clicking a tab with a left mouse button (only with a right mouse button); IDE AL4: localization, translation to Russian; fixes and improvements (see in Ide_al4.al4 at the end of source file).

#### 21.01.2018 - версия 0.86.5 | #### January, 19, 2018 - version: 0.86.5
Исправлено: Присваивание объекту в динамическом массиве объектов (Delphi); Изменения: {Long_operation} завершен для C++, Delphi/KOl, Delphi/VCL. IDE AL4: исправления (см. в конце файла IDE_AL4.al4). | Fixes: Assigning an object in a dynamic objects array (Delphi); Changes: {Long_operation} - finished for C++, Delphi/KOl, Delphi/VCL. IDE AL4: fixes (see in Ide_al4.al4 at the end of source file).

#### 19.01.2018 - версия 0.86.4 | #### January, 19, 2018 - version: 0.86.4
Исправлены: {Canvas}.Reset_transorm -> ResetTransform; MIN_INT = 0xFFF_FFFFF -> 0x8FFF_FFFF; Генерация кода для работы с фиксированными массивами в ряде случаев; Изменения: запрещены циклы FOR ...TO MAX_INT] и FOR... DOWNTO MIN_INT], в случае не константной границы TO выражение], при значении выражения MAX_INT цикл может не выполнится ни разу (C#, C++), т.к. используется фактически цикл с условием < to_value, а to_value вычисляется как (выражение+1) при при MAX_INT+1 становится равно MIN_INT; Добавлены:: {Long_operation}, автоматическое отображение диалога прогресса длительной операции, обвязка (изменения в {Screen}, {Form}, {AL4_form}, и в исполнительном ядре: для C#, C++); IDE AL4: Небольшие исправления, улучшена навигация по символам (CTRL-ENTER); Другие улучшения и исправления (см. в конце файла IDE_AL4.al4). | Fixes: {Canvas}.Reset_transorm -> ResetTransform; MIN_INT = 0xFFF_FFFFF -> 0x8FFF_FFFF; Code generating to work with fixed arrays in some cases; Changes: FOR loops ...TO MAX_INT] and DOWNTO MIN_INT] are disabled. In case of non-constant to-value equal such value, the loop can be not executed at all (C#, C++) since actually a for (...; < to_value; ...) is used where to_value = value+1 (and in case of MAX_VALUE+1 it becomes equal to MIN_VALUE); Added: {{Long_operation}, automatic showing a progress long operation dialog with a capability to cancel the operation (changes are in {Screen}, {Form}, {AL4_form} and in the core: for C#, C++); Changes: Some improvements, better navigation on symbols (CTRL-ENTER); Other improvements and fixes (see in Ide_al4.al4 at the end of source file).

#### 12.01.2018 - версия 0.86.3 | #### January, 12, 2018 - version: 0.86.3
Исправлены: Trim, TrimL, TrimR (C#: собственная функция C# не удаляет символы с кодом \0); Генерация кода для работы с фиксированными массивами (C#, Delphi, C++); Добавлены: ключ /norun (совместим с /run, последний найденный применяется); обеспечивается обработка остатка опция компилятора после ключа /@ путь-с-опциями; IDE AL4: Добавлена возможность компиляции из IDE, окно для просмотра ошибок и предупреждений, в том числе запуск только компиляции без выполнения; Другие улучшения и исправления (см. в конце файла IDe_al4.al4). | Fixes: Trim, TrimL, TrimR (C#: C# native Trim does not remove '\0' chracter); Code generation to work with fixed arrays (C#, Delphi, C++); Added: option key /norun (compatible with /run, but only the last is applied); the rest of options following /@ path-of-configuration also is handled, at the end of options in a configuration file; Changes: It is now possible to compile project from the IDE, and to list errors/warnings from a special window, including compiling without running; Other improvements and fixes (see in Ide_al4.al4 at the end of source file).

#### 07.01.2018 - версия 0.86.2 | #### January, 7, 2018 - version: 0.86.2
IDE AL4: Добавлена возможность компиляции из IDE, окно для просмотра ошибок и предупреждений. | Changes: It is now possible to compile project from the IDE, and to list errors/warnings from a special window.

#### 04.01.2018 - версия 0.86.1 | #### January, 4, 2018 - version: 0.86.1
Изменения: {Form}.Set_column_auto_arrange(BOOL) - позволяет отключить автоматическое размещение визуальных компонентов колонки, после чего их можно размещать своим кодом в произвольных координатах, и управлять их размером (например, в событии формы resize). компилятор дублирует список ошибок и предупреждений в файле Compiler_messages.html. Исправлены: событие {Form}.activated; Platform_info (Delphi/KOL); {Form}.key_press (Key.Alt, Shift, Control, Win не устанавливались - Delphi KOL, VCL); функция TEST возвращала FALSE в тестовом режиме; Документация дополнена в части: AL-IV:Как начать программировать | Changes: {Form}.Set_column_auto_arrange(BOOL) - allows to turn off automatic placing controls on the column and to place and size it by your own code (e.g. in the form event "resize"). a compiler outputs all the errors and warnings to Compiler_messages.html also. Fixed: {Form}.activated event; Platform_info (Delphi/KOL); {Form}.key_press (Key.Alt, Shift, Control, Win did not set - Delphi KOL, VCL); function TEST returned FALSE in a test mode; A documentation is completed in part: AL-IV: How to start programming

#### 29.12.2017 - версия 0.86.0 | #### December, 29, 2017 - version: 0.86.0
Изменения: Дополнительные оптимизации в коде для C++: класс SString для оптимизации работы со строками; вывод графики в {Canvas}, {Bitmap}, {Paintbox}, ... - через Windows GDI ; Исправлены: оптимизация CASE с константным выражением могла формировать не компилируемый код. Впервые опубликован редактор Ide AL4, версия 0.86 (бета). | Changes: Additional optimizations in C++ code: SString class to optimize strings manipulations; graphics output in classes {Canvas}, {Bitmap}, {Paintbox} ... made via Windows GDI; Fixed: optimization of CASE could form an erroneous code. The first time the editor Ide AL4 is published, version 0.86 (betha).

#### 17.12.2017 - версия 0.85.9 | #### December, 17, 2017 - version: 0.85.9
Изменения: Добавлена функция {Font}.List_fonts(Options, Names[]); Оптимизация для C++ включается автоматически при сборке с параметром /final в опциях проекта AL4 (может отключаться отдельной опцией /$NOOPTIMIZE); Дополнительные оптимизации в коде для C++; Исправлены: курсор мыши для {Paintbox} изменяется только для самого бокса, не затрагивая линейки прокрутки (C#, Java); Ошибки оптимизации типа замены вызова метода его телом; Генерация уникальных имен методов в наследниках классов (для имён, не совпадающих с учетом различного регистра букв - Delphi); Проверка на необходимость импорта классов, использованных неявно (в операторах FOR, PUSH); Работа фильтра в диалоге открытия файлов (Java: в windows addFilenameFilter не работает, но есть недокументированная возможность по использованию setFile); сглаживание для шрифтов (Java); | Changes: A function added {Font}.List_fonts(Options, Names[]); Optimization is turned on for a C++ when building with the /final option (can be off by the option /$NOOPTIMIZE); Additional optimizations in C++ code; Fixed: cursor shape for {Paintbox} is set only for its box not affecting its scroll bars (C#, Java); Optimization errors (replacing a method call with its body); Generating unique method names in class descendants (for names not matching by registry case only - Delphi); Checking for a necessity of import of classes used implicitly (in FOR/PUSH statements); Working of a file filter in Java (in Windows addFilenameFilter is not working but there is a non-documented "feature" with setFile method); Fonts anti-aliasing (Java);

#### 11.12.2017 - версия 0.85.8 | #### December, 11, 2017 - version: 0.85.8
Изменения: Друзья класса могут обращаться к его непубличным методам. Исправлены: событие key_press принимало клавишу DELETE, в событиях key_down и key_up клавиша DELETE не поступала (Java); курсор для ввода текста в {Paint_lines} (и установка курсора в {Paintbox}) - (Delphi/VCL); так же в java-реализации изменено отображение мигающего курсора (прежний способ с регулярным сокрытием окна курсора приводил к постоянной перерисовке основного контрола). | Changes: Friends of a class can access its non-public methods. Fixed: key_press event was firing for the key DELETE thereas the DELTE key was not received in key_down/key_up events(Java); setting cursor shape in {Paintbox}, beam shape cursor in {Paint_lines} (Delphi/VCL); also for Java-implementation cursor showing changed to prevent instant window repainting.

#### 7.12.2017 - версия 0.85.7 | #### December, 7, 2017 - version: 0.85.7
Изменения: Добавлен оператор FRIENDS: {класс1}, {класс2}, ... . Друзья класса могут обращаться к его непубличным полям (и - позже - методам). Добавлены: Атрибуты "disabled", "checked" для пунктов меню; Добавлен кодированный символ #ESC; Исправлены: {Paint_tabs}: выделение цветом и толщиной не срабатывало для вкладок левее текущей; {Form}.mouse_move - координаты в поле mouse (Delphi/KOL); Фокусировка щелчком мыши на {Paintbox} и его наследниках (Java); {Listbox}.Clear; событие selection_changed для {Listbox} ; метод для массива строк: Remove(STR) (Delphi, Java); Двойное разрушение контролов по окончании использования (C++/wx); {Paint_tab} .Move_tab(From, To); | Changes: A statement FRIENDS: {class1}, ... {classN} . added. Friends of a class can access its non-public fields and (later) methods. Added: Attributes "disabled", "checked" for menu items; Encoded symbol #ESC added; Fixed: {Paint_tabs}: highlighting did not work for tabs left to the current; {Form}.mouse_move - coordinates in the mouse field (Delphi/KOL); Focusing {Paintbox} and its descendats by mouse click (Java); {Listbox}.Clear; selection_changed event for {Listbox} ; a method for array of STR: Remove(STR) (Delphi, Java); Double destroying controls on closing form (C++/wx); {Paint_tab} .Move_tab(From, To);

#### 2.12.2017 - версия 0.85.6 | #### December, 2, 2017 - version: 0.85.6
Изменения: Запрещена операция сравнения на равенство и неравенство для вещественных; Для колонок формы в реализации Java оставлены только вертикальные линейки прокрутки; Добавлены: {Sorting} .Data_sort(Count) - для сортировки произвольных данных (методы data_compare и data_swap должны быть переопределены в том же объекте); Исправлены: {Listbox}.Insert_item в позиции, равной Count; генерация кода для присваивания записи элементу массива таких записей (Delphi); событие click по правой клавише мыши (Delphi/VCL,KOL, C++); {Text_file}: сохранение текста в формате UTF-8 (Delphi, C++); вставка элемента в динамический массив в позицию Count (Delphi, массивы типов BOOL, BYTE); ширина первой метки в колонке (выровненной 'LEFT', 'RIGHT' или 'CLIENT') устанавливается в значение column.Label_width (Java); координаты pop-up меню при щелчке на контроле (Java); {Dialog_file}.Select_file (Java: bug в Java 7 и 8); устранено мелькание в {Paintbox} и его наследниках (Java: пришлось перейти к использованию JPanel из swing вместо Canvas из awt); | Changes: Comparing for equality (==) and inequality (!=) is not allowed for REAL values; For {Form} columns in Java implementation only vertical scroll bars left; Added: {Sorting} .Data_sort(Count) - to sort arbitrary data (methods data_compare and data_swap should be overridden in the same object); Fixed: {Listbox}.Insert_item in the Count position; code generation for assigning a record to an array of such type records (Delphi); event click firing on right mouse button (Delphi/VCL,KOL, C++); {Text_file}.Save: saving text in 'UTF8' format (Delphi, C++); inserting an item to a dynamic array of BOOL or BYTE (Delphi); size of the first label in a column (for columns aligned 'LEFT', 'RIGHT' or 'CLIENT') is set to column.Label_width value (Java); pop-up menu coordinates when a control is clicked (Java); {Dialog_file}.Select_file (Java: bug in Java 7 & 8); flickering is removed in {Paintbox} and its descendants (Java: Jpanel from swing was used instead of Canvas from awt);

#### 27.11.2017 - версия 0.85.5 | #### November, 27, 2017 - version: 0.85.5
Добавлены: {File_path}.File_info(Path) ==> {file_info} (даты, атрибуты, размер); В дополнение к символу @, включающему режим добавления концов строк в многострочную строчную константу, добавлен символ @@, позволяющий отключить этот режим внутри константы; Событие {Form}.shown; Методы {Edit}: Set_selection_range(Start, Length), Select_all, Get_selection_start, Get_selection_length; Метод {Control} .Set_selection отменён и заменён на Replace_selection; Исправлены: событие mouse_double_click (Delphi/VCL), - последовательность обращений была DOWN-UP-DBLCLICK-DOWN-UP вместо ожидаемой DOWN-UP-DOWN-UP-DBLCLICK; генерация кода для создания простой структуры, содержащей (фиксированные) массивы (C#); генерация кода для присваивания значения полю структуры (RECORD), выбираемой из массива структур (C++); при нажатии Ctrl+[, ] и некоторых других символов поле Key.Char не присваивался соответствующий символ; click для кнопки по умолчанию и отмены при нажатии Enter/Escape (java, C++); сохранение объекта Screen на время выполнения приложения, закрытие всех форм при уничтожении объекта Screen в момент закрытия главной формы (Java, C++); для C++ выполняется объединение всех исходных файлов в один большой файл, что позволяет ускорить компиляцию проекта, но в результате возникает проблема с установкой точек останова в строках кода, начиная с 65536. Теперь для слишком больших результирующих проектов на C++ выполняется разбиение исходного кода на фрагменты. | Added: {File_path}.File_info(Path) ==> {file_info} (dates, attributes, size); In addition to a symbol @, which turns on mode in which new line symbols are added in a multiline string constant automatically, a symbol @@ added which allows to turn such mode off (to the end of a constant or to the next symbol @); {Form}.shown event; Methods of {Edit} class: Set_selection_range(Start, Length), Select_all, Get_selection_start, Get_selection_length; Method {Control} .Set_selection is abandoned and replaced to Replace_selection; Fixed: event mouse_double_click (Delphi/VCL), - sequence of calls was DOWN-UP-DBLCLICK-DOWN-UP instead of normal DOWN-UP-DOWN-UP-DBLCLICK; code generation for case of creating a structure containing a fixed array (C#); code generation for assigning a value to a record field if a record is from an array (C++); On press Ctrl+[, ] and some other keys a field Key.Char was not assigned to a correspondent character; event click firing for default and cancel button when Enter/Escape is pressed (Java, C++); preserving the Screen object on all the time while an application is running, closing all the forms at the moment when the main form is closed (Java, C++); still now for C++ all the resulting sources are united into one big cpp-file to speed up project compiling. The problem is that after 65536 lines it is not possible to make breakpoints. Now, for very large resulting projects in C++, large output source files are splitting onto enough small ones.

#### 22.11.2017 - версия 0.85.4 | #### November, 22, 2017 - version: 0.85.4
Изменения: Добавлено требование на оформление кода: блочные операторы (CASE, FOR, FOREVER, PUSH, DEBUG, debug) всегда должны начинаться в новой строке (в том числе после ELSE, в ветвях CASE вслед за ':' или '?'). При обращении к Функция Str|ing для перевода в строку, ее имя может быть сокращено до S. Исправлены: Направление в vertical_wheel (Java, Delphi/KOL); Установка значения {Paintbox}.Set_content_size меньше, чем текущее значение Visible_area_size (по ширине, высоте - Delphi/VCL); установка модификаторов Ctrl, Alt, Shift в поле {Form}.Key для всех событий мыши и клавиатуры (Java); {Paint_lines} всегда запоминает установленную методом Move_top_left_to позицию (по вертикали и горизонтали), и возвращает ее в случае, если разница между этой позицией и позицией линейки прокрутки не более 1 по абсолютной величине (что устраняет проблемы округления до целого при установке позиции линейки прокрутки); анализ ошибок c#-компилятора: проверяется не только наличие слова error, но и то, что это слово самостоятельное (не является частью более длинного идентификатора); генерация кода для STORED параметров (C++); генерация кода для [].Delete(index++) (случай использования автоинкремента/автодекремента для параметра функции Delete. Небольшой подарок себе на годовщину первой публикации: начат (и уже в значительной степени завершен) редактор кода для AL-IV. Планируется завершить его разработку в основном до конца года.
| Changes: A requirement added on code structure: block statements (CASE, FOR, FOREVER, PUSH, DEBUG, debug) must always start from a new line (i.e. it is not allowed to write those in the same line following ELSE or in CASE branches follwing ':' or '?'). While calling a Str|ing embedded function to convert value to string, its name can be reduced to S. Fixed: direction in vertical_wheel (Java, Delphi/KOL); Setting {Paintbox}.Set_content_size less then current Visible_area_size (by width, height - Delphi/VCL); Setting modifiers Ctrl, Alt, Shift in the field {Form}.Key for all the mouse and keyboard events (Java); {Paint_lines} always stores values set by the method Move_top_left_to (for both vertical and horizontal directions) and returns it in case when a difference between that value and a correspondent scrollbar position is less then 1 in absolute value (this fixes rounding problem which occur in result of rounding to nearest integer of a value assigned to a scrollbar current position property); C# compiler errors analyzing: not only word "error" is checking but its neighboring characters to ensure that error is not a part of longer word (i.e. a class name); code generation for STORED parameters (C++); generating [].Delete(index++) (in case when index is auto-decremented or auto-incremented). A small present to myself for anniversary a year from the first publication: an own code editor for AL-IV started (and sufficiently progressed). It is planned to finish its developing up to the end of the year.

#### 15.11.2017 - версия 0.85.3 | #### November, 15, 2017 - version: 0.85.3
Добавлены: {Control}.Locaton ==> {rect} - координаты визуального компонента в форме (в отличие от Left, Top, возвращающих координаты относительно родительской колонки); Исправлены: Генерация кода для директив NATIVE не начинающихся с using (C#) - перемещена внутрь класса; Оптимизация в случае инлайнинга функции, содержащей в выражении приведение типа класса: RESULT = x.y.z.{Some_class}; {Control}.Top (Delphi/KOL); | Added: {Control}.Location ==> {rect} - control coordinates in a parent form rather then (Left, Top returning coordinates relatively to a parent column). Fixed:: Generating code for NATIVE directives not starting from "using" (C#): moved into a resulting class; Optimization in case of inlining of a function containing in an expression a type cast of class: RESULT = x.y.z.{Some_class}; {Control}.Top (Delphi/KOL);

#### 12.11.2017 - версия 0.85.2 | #### November, 12, 2017 - version: 0.85.2
Изменения: при генерации кода C++ функции Main явно вызван _CrtSetDbgFlag(0); для предотвращения слишком длительного вывода отчета об утечках памяти по окончании выполнения (которые реально утечками не является, и есть результат работы STL). Добавлены: перечисление {Paintbox}.{cursor}, поле Cursor|_shape, метод Set_cursor(New_c|ursor_shape) -- кажется, не работает для Delphi VCL (баг VCL?); Исправлены: Генерация кода для директив NATIVE не начинающихся с using (C#) - перемещена внутрь класса; {Canvas}.Measure (C# неверно возвращает размер строки, завершающейся пробелами); Коды специальных клавиш (C++/wx); Генерация кода для операторов PUSH внутри ветвей CASE (проблемы инициализации локальных переменных в C++); Для {Paintbox} и (его наследника {Paint_lines}), если включается опция "F" ((фокусировка), то все клавиши навигации обрабатываются в самом компоненте, включая стрелки и табуляции (все языки/фреймворки); {Localize_str} для Java - в случае отсутствия вызова Set_directory_lang; {Paint_lines}.provide_caret (Java) - удаление старой каретки до установки новой. | Changes: on C++ code generation, in function Main following code is added: _CrtSetDbgFlag(0); (to prevent very long delay while reporting about memory leaks, on the application end - though these are not memory leaks actually but results of STL working). Added: A enumeration {Paintbox}.{cursor}, a field Cursor|_shape, a method Set_cursor(New_c|ursor_shape) -- it seems does not work for Delphi VCL (VCL bug?); Fixed: Generating code for NATIVE directives not starting from "using" (C#): moved into a resulting class; {Canvas}.Measure (C# incorrectly calculates size for a string having trailing spaces); special key codes handling (C++/wx); code generation for PUSH statements in CASE branches (C++ compiler can not initialize local variables); For the {Paintbox} (and its descendant {Paint_lines}) when the option "F" is set (focusable), then all the navigation keys are handled in the control itself (all the languages/frameworks); {Localize_str} for Java - in case when Set_directory_lang was not called; {Paint_lines}.provide_caret (Java) - removing old caret before setting new one.

#### 9.11.2017 - версия 0.85.1 | #### November, 9, 2017 - version: 0.85.1
Обеспечена работа с объектами класса {Object}, в том числе NONE-объектами. Добавлены: функция {Canvas}.System_color({system_color}), перечисление {system_color}; возможность подключать собственный таймер для компонента (в основном для целей анимации), методы: {Control}.animate(Count, Interval) и animation(Tick) (событие); собственные обработчики событий мыши для {Control}: mouse_move, mouse_down, mouse_up, mouse_wheel; визуальный компонент {Paint_tabs}: Исправлены: {Canvas}.Offset , Measure - использовались пиксели, теперь используются текущие единицы канвы (по умолчанию - поинты); координаты мыши {point} mouse для всех событий мыши (Java, C++); координаты всплытия меню {Tray_icon} (C++); | A capability provided to use variables of class {Object} (and assigning NONE to them). Added: {Canvas}.System_color({system_color}, enumeration {system_color}; A capability to add a timer for any control for animation purposes (mainly), methods {Control}.animate(Count, Interval) and animation(Tick) (a callback event); Own mouse events handlers for {Control} class: mouse_move, mouse_down, mouse_up, mouse_wheel;; A visual component {Paint_tabs}: Fixed: {Canvas}.Offset , Measure - pixels were used, now current units of the canvas are used (default are points); mouse coordinates {point} mouse for all the mouse events (in Java & C++); pop-up menu coordinates for {Tray_icon} (C++);

#### 5.11.2017 - версия 0.85.0 | #### November, 5, 2017 - version: 0.85.0
Добавлена возможность задавать ограничения для параметров в виде отношения сравнения: , IF P1 IS CONST, THEN P1 >= 0 ... Исправлено: {Canvas}.Offset, Rotate - приведен к единому знаменателю для всех целевых сред. Обработка события {Form}.resize в ответ на максимизацию/восстановление формы (Java). Завершен визуальный элемент {Paintbox} с возможностью прокрутки содержимого. Добавлен визуальный элемент {Paint_lines} (на основе {Paintbox}) с поддержкой каретки (указатель для ввода текста) и специфическими методами для работы со строками. | A capability added to specify parameters restrictions in form of comparison relations, e.g.: , IF P1 IS CONST, THEN P1 >= 0 ... Fixed: {Canvas}.Offset, Rotate - made the same for all the frameworks. calling {Form}.resize event provided on form maximize / restore (Java). A control {Paintbox} with content scroll is finished. A visual control {Paint_lines} (based on {Painbox}) added with support of blinking caret and specific methods to handle lines.

#### Предыдущая история версий (2016-2017) | #### Previous versions history (2016-2017)
$$IF?LIGHTRU`См. здесь` $$IF?DARKRU `См. здесь` $$FI | $$IF?LIGHTEN`See here` $$IF?DARKEN`See here` $$FI

$$IF?LIGHTRU`` В начало $$IF?DARKRU`` В начало $$FI | $$IF?LIGHTEN`` Home $$IF?DARKEN`` Home $$FI

$$STOP!

$$DEF+FlagRU

$$END

$$DEF+FlagEN

$$END

$$IF?LIGHTRU

$$OUT=History_AL-IV_RU.htm

$$IF?DARKRU

$$OUT=History_AL-IV_RU_black.htm

$$IF?LIGHTEN

$$OUT=History_AL-IV_EN.htmtm

$$IF?DARKEN

$$OUT=History_AL-IV_EN_black.htm

$$FI