Проблема в скрипте

отредактировано 12:35 Раздел: FastReport 3.0
очень странно как-то работает FR.

Если в скрипт записать изменение цвета Memo в зависимости от его значений.

если я хочу закрасить красным только определенные значения
пишу так:

if (<p> <4) Memo1.Color=clRed;

но одного этого условия почему-то недостаточно, потому что как только условие хоть один раз будет соблюдено, то FR продолжает закрашивать потом все Memo1 не зависимо от того, соблюдается оно или нет.

Что за глюк? Как мне этого избежать??
У меня более сложный случай. Я записываю в Memo значения из Query.
Потом в ф-и MasterData1OnBeforePrint я, если значение не соответствует нужному ,меняю его на сообщение "Нет данных":

if (<p> <4) Memo1.Text="нет данных";
так потом ,если у меня даже данные есть, у меня во всех Мемо прописывает это сообщение, вместо того, чтобы вывести нормальные данные.

Комментарии

  • отредактировано December 2005
    Возвращайте исходное значение:

    if (<p> <4)
    Memo1.Color=clRed;
    else
    Memo1.Color=clWhite;
  • отредактировано 12:35
    C цветом-то как раз все удобно. а если у меня значение из Query, то заново присваивать значение?
    Я так сделала: Memo1.Text="<Query.Field1>";

    но как тогда его отформатировать, чтобы убрать лишние знаки после запятой??

    Я делала как Memo.DisplayFormat.FormatStr="%2.2f", но это не срабатывает. вот фигня!
  • gpigpi
    отредактировано 12:35
    написал:
    Я делала как Memo.DisplayFormat.FormatStr="%2.2f", но это не срабатывает. вот фигня!
    Вот так должно работать
    Memo1.DisplayFormat.FormatStr:='%2.2n';
    Memo1.DisplayFormat.Kind:=fkNumeric;
    
    или
    Memo1.Text:=FormatFloat('# ###.##',<Query.Field1>);
    
  • отредактировано 12:35
    У меня все равно не получается.
    я пишу так:
    Memo1.Text=FormatFloat("%2,2f",<Query."Field1">);
    и так:
    Memo1.Text=FormatFloat("#n%2,2f",<Query."Field1">);
    он выводит на экран 2 n%22m.

    если я задам просто строку :
    Memo1.Text=FormatFloat("",<Query."Field1">);
    то выводит нужное значение, тока неотформатированное. как отформатировать? я уже и с одинарными кавычками писала строку форматирования. все равно не получается.

  • отредактировано 12:35
    Такой вариант должен работать (gpi его уже педлогал с.м выше):
    Memo1.text =FormatFloat("#.##",<ADOTable1."Field1">);
    
  • отредактировано 12:35
    Я поняла, почему у меня не форматирует.

    дело в том, что я добавляю Memo программно. И при его расположении на форме я обращаюсь к нему как к компоненту IfrxCustomMemoView, у которого доступно только свойство Put_Text. Но недоступны свойства DataSet и DataField. а если в них пусто, то выводит все значения, но не производит форматирование.

    Так что это теперь новая проблема. В Visual С++. Попробую сейчас в скрипт прописать, где для Мемо установлю эти два свойства:
    Но как тогда прописать:
    Memo1.DataSet="Query";
    Memo1.DataField="Field1";


    Memo1.DataSet="Query"; не работает. в каком формате-то надо указывать имя Dataset-а???
  • gpigpi
    отредактировано 12:35
    написал:
    И при его расположении на форме я обращаюсь к нему как к компоненту IfrxCustomMemoView, у которого доступно только свойство Put_Text.
    А почему не обратиться как к TfrxMemoView?
    написал:
    Memo1.DataSet="Query"; не работает. в каком формате-то надо указывать имя Dataset-а???
    Если посмотреть вкладку КЛАССЫ, то для TfrxMemoView:
    property DataSet: Class TfrxDataSet;
    property DataSetName: String;
    через DataSetName работает, а вот как через DataSet - не знаю. Может разработчики что-то посоветуют?
  • отредактировано 12:35
    Для C++ Script (VC++) попробуйте так:
    pCustomMemoView->put_Text(_bstr_t("[FormatFloat(\"#.##\",") + _bstr_t(YOUR_VALUE) + _bstr_t(")]"));
    
    Обратите внимание в YOUR_VALUE должно быть ваше значение, если значение с плавающей точкой, то проследите чтобы оно сконвертировалось в строку вида "10.20"(по умолчанию будет "10,20" и FR выдаст ошибку).

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.