Развитие (и,повидимому, завершение) //infostart.ru/public/138502/
Завершение, потому что не вижу, что можно еще сделать без подключаемых компонент (раскраски разные - это мелочи).
Ну а компоненты делать не к чему - ушла она, семерка.
Использованы те же принципы но:
- Внутренние скалярные переменные Индикатора( программисту не видны и не нужны) замененны на массивы;
- Индикаторы пронумерованы (как и поля вывода на Форме), что позволяет выводить любое их количество;
- Расчитывается как верхняя граница шагов вывода (как и ранее), так и нижняя. Вывод производиться при достижении
любо из границ (т.е. возможны отрицательные шаги);
- Добавлено дополнительное управление: отрезания "хвоста" (для гистограм нобходимо), инверсия белог-черного,
поворот линейки на 180 градусов. Режим каждого индикатора задается один раз, перед началом процесса;
- Добавлена возможность записи в оперативной памяти историй Процессов.
-Добавлена возможность вывода вместо линейки в 10 односимвольных полей, расположенных любым образом.
Описание работы.
Если в Форме предусмотрено текстовое поле "ЗагТекстИндикатор" - заголовок выводится
в это поле; иначе - он присоединяется слева к Линейке индикатор.
Если в Форме предусмотрено текстовое поле "ПолеТекстИндикатор" - индикатор выводится
в это поле; иначе - в строку "Состояние".
Предусмотрено следующее соответствие номера Индикатора и текстовых строк Формы:
Номер индикатора=0 - ЗагТекстИндикатор,ПолеТекстИндикатор;
Номер индикатора=1 - ЗагТекстИндикатор1,ПолеТекстИндикатор1;
Номер индикатора=2 - ЗагТекстИндикатор2,ПолеТекстИндикатор2;
и т.д. - всего предусмортрено 30 индикаторов на Форме (если нужно - хоть 1000000!).
Вывод каждого Индикатора может производиться и в 10 односимвольных полей,
которые можно расположить на форме любым образом.
Пример:
Поле ПолеТекстИндикатор2 не задано, но заданы односимвольные текст.поля -
ПолеТекстИндикатор2_1, ПолеТекстИндикатор2_2,..., ПолеТекстИндикатор2_10.
Вывод индикатора №2 будет производиться в эти поля (вместо линейки).
Таким образом возможны и вертикальные гистограммы (если не лень описывать поля).
Поля можно и не создавать, вывод будет идти в стр."Состояние()".
(если больше одного - сплошной "Киш-Миш"!)
При любом вызове необходимо в перем. "НомИнд" передать номер вызываемого Индикатора.
(при одном индикаторе на Форме - не обязательно передавать 0).
Возможны 3 режима вызова:
1. Если Начало=1 - вызов перед началом Индикации (началом Процесса) -
начальное "праграмирование".
В перем."Парам1" передаем заглавие линейки Индикатора, а в перем. "Парам2" передаем
заранее вычесленное полное количество (или 0) каких-либо действий (операций,шагов) процесса.
В переменной "НомИнд" предается номер индикатора (нулевой номер передавать не обязательно).
В переменной "Режим" передается режим работы (установка 1,2 и 3 бита), а именно:
Режим=1 - не будет выводиться "хвост" Индикатора (количество,время,прогноз);
Режим=2 - инверсия черного-белого на линейке индикатор;
Режим=4 - поворот линейки на 180 градусов.
Режимы можно складывать,т.е. возможные режимы: 0,1,2,3,4,5,6,7.
В переменную "Конт" передается контекст текущей формы (для случая, когда индикатор расположен
в глоб.Модуле и в форме определено поле для вывода индикатора - "ПолеТекстИндикатор").
В перем "СохрИст" передается признак сохранения истории индицируемого процесса.
Если СохрИст=1 тогда в элементе массива ИндикаторИстория(НомИнд+1) создается
ТаблицаЗначений с колонками: "З" - Заголовок; "Ш" - номер шага; "В" - текущее время.
В эту ТЗ в дальнейшем записываются все шаги Процесса.
По окончанию процесса программист может записать все это в файл.
Сохранение истории при большом количестве шагов "съедает" память и уменьшает
скорость в 3-4 раза (все равно, идикатор работает как минимум вдвое быстрее "классических").
2. В перем "Парам1" передается текущее количество шагов отображаемого
процесса (>=0), в перем "Парам2" можно передавать тек.заголовок Индикатора.
В переменной "НомИнд" предается номер индикатора (нулевой номер передавать не обязательно
Индикатор в перем. ИндикаторИстория(НомИнд+1) (если задана ТЗ) добавляет строку шага процесса.
).
В таком режиме процедура вызывается на каждом шаге процесса
3. Вызов без параметров -глИндикатор(,,НомИнд) - очистка поля (или строки "Состояние()")
и всех сопутствующих переменных. Заметим, если Индекатор на Форме не один -
передача номера обязательна! Шестым параметром можно передать Контекст Формы
(например в процедуре "ПриОткрытии()": глИндикатор(,,,,,Контекст);
в этом случае передавать номер нет надобности).
ВАЖНО!
При начальных установках (перед началом процесса) в четвертый параметр ("Начало") необходимо (и обязательно!) передать 1!