Проверка наличия ВИДИМОГО текста в отчете

отредактировано 16:51 Раздел: FastReport 3.0
В общем такая проблема.
Мне позарез нужно убедиться, что пользователи редактируют печатные бланки в дозволенных рамках и не удаляют (или каким иным способом делают невидимым) Memo с определенным текстом.

Т.е. при старте программы когда будет грузиться отчет из файла (который можно редактировать) должна быть осуществлена проверка.
Result=0;
for (i=1;i<=MainForm->Blank1Report->ComponentCount;i++) {
         Tmp=MainForm->Blank1Report->Pages[0]->Components[i-1]->ClassName();
         if (Tmp=="TfrxMemoView") {
            Memo=dynamic_cast<TfrxMemoView *>(MainForm->Blank1Report->Pages[0]->Components[i-1]);
            if (Memo->Text==(AnsiString)"[ConfigurationDataset.\"Название\"]\r\n") {
               if ((Memo->Visible==True) && (Memo->Font->Size>=8) && (Memo->Font->Color==clBlack)) {
                  Result=1;
               }
            }
         }
     }

Вот набросал немножко. Но этого мало. Ведь фантазия у людей буйная.
Можно придумать что угодно - занести Top и Left за пределы страницы, можно накрыть вывод этого поля белым прямоугольником, можно ужать Memo до размеров точки...

Что посоветуете? Какие шаги и дополнительные проверки надо предпринять, чтобы максимально выполнить условия поставленной задачи. Если не 100% гарантировать вывод нужного поля на лист бумаги, то хотя бы максимально усложнить задачу по обходу этого требования.

Может есть возможность проверить не бланк отчета, а уже напечатанный отчет? Или после печати сделать экспорт в текстовый файл и поискать строку там.

Но, повторю, мне надо максимально точно знать - пытается обойти пользователь условие или нет.

Очень расчитываю на вашу помощь. ;)

Комментарии

  • gpigpi
    отредактировано 16:51
    Т.е. Вы хотите ограничить возможность редактирования шаблонов отчётов пользователями?
    Могу предложить один вариант, который подойдёт в том случае, если неизменяемые элементы статичны и не располагаются на одном бэнде с элементами, которые можно изменить.
    Для этого неизменяемые элементы нужно вынести в отдельный шаблон отчёта, который можно зашить в DFM, и формировать отчёт объединением нескольких шаблонов.
    Придётся также запретить пользователям редактировать уже сформированный отчёт, сохранять его в fp3-файл, экспортировать. Правда, продвинутые юзеры могут установить в системе PDF принтер и отредактируют полученный PDF-файл
  • отредактировано 16:51
    Не совсем. Располагаться текст может где угодно в отчете.
    Главное, чтобы он был видим и выходил на печать.
    Конечно, можно даже в Word делать экспорт и править его там. Но это сильно усложнит задачу и не многие на это пойдут. Специфика работы такая.
    Представьте - стоит очередь забирать трубки а приемщица сидит и перебивает чужие реквизиты. Конечно, не факт, что не все пойдут на это, но часть уже отсеится.

    Вообще расскажу задачу поподробнее.
    Программа - учет заказов и запчастей для СЦ сотовых.
    Кому интересно - можете демку скачать с сайта. http://sc.adalon.ru
    Реквизиты СЦ вшиты в ключ и выводятся на печать.
    Теперь представим, что я вам подарил свой ключ, а вы просто напросто вбили свои реквизиты в бланки и пользуясь чужим ключом можете спокойно печатать для себя.

    Вот я и хочу как можно больше усложнить жизнь таким людям.

    Вот еще хотел спросить, особенно у авторов.
    Есть такое свойство у экспортных элементов.
    ExportNonPrintable
    Что туда входит? Будет ли туда входить все, что:
    - уменьшено до размеров точки
    - имеет белый цвет или цвет фона
    - вынесено за пределы страницы
    и т.д.

    Может быть просто проверить наличие нужного текста в Memo а потом после постройки отчета проверить этот же текст в уже построенном отчете или списке компонент, не попавших на печать по определенным причинам?
  • отредактировано 16:51
    test
  • отредактировано 16:51
    в общем я сделал так:
    1)отключил кнопку редактирования страницы
    2)если в Preview у поля Restrictions значение rfDontModify:=false то я по щелчку взбрасываю окно редактирования текста.


    вот и всё

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

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