Добрый день!
Задача: отображать значение переменной Х типа single в форматах:
1)"0" если Х > 1, т.е. отображать "53", например, когда переменная равно 53.282
2) "0.00E+00" если Х < 1, т.е. отображать "2.82E-2" когда переменная равно 0.0282
Моё решение (Работает):
1) Исходной переменной Х при объявлении задать формат "0". Создать внутреннюю переменную Х_2 задать ей формат "0.00E+00"
2) Создать 2 поля TM_Field, одному присвоить Х, другому Х_2 (и Х в качестве доп.переменной). Наложить одно поле на другое.
3) Создать скрипты(приведены ниже):
а) Скрывать объект, если переменная ушла из своего диапазона, иначе отображать (OnDataChange)
б) Сопоставлять значение Х и Х_2 при изменении Х (OnDataChangeEx)
Вопросы:
1) Правильно ли я понимаю, что такой подход сейчас единственно возможный? Свойство Format ведь доступно только для чтения? (См скрин 1)
2) Не планируется ли открыть данное свойство на запись?
Дополнительно:
3) Не планируется ли сделать для пользователей возможность конструировать свои объекты типа фигура, т.к. эллипса и прямоугольника не хватает? Ну или дать возможность из набора эллипсов и прямоугольников собирать один объект с едиными свойствами.
4) Можно ли указать в руководстве какие свойства доступны на запись, а какие только на чтение? Было бы полезно. Или укажите если я не заметил это.
Заранее благодарен.
Приложение (листинг скриптов)
1) Сокрытие
begin
if Sender is TM_Field then // проверяем, что Sender это поле
with Sender as TM_Field do // приводим Sender к типу "TM_Field"
begin
if Value < 5 THEN
Visible := FALSE // скрываем поле
ELSE
Visible := TRUE;
end;
end.
2) сопоставление внешней и внутренней переменной
begin
if Sender is TM_Field then // проверяем, что Sender это поле
with Sender as TM_Field do // приводим Sender к типу "TM_Field"
TM_Field(Sender).Variable.Value := TM_Field(Sender).VariableEx.Value; // передача значения из внешнего тега во внутренний
end.