Скрывать Memo по условию

отредактировано 18:27 Раздел: FastReport 2.xx VCL
Добрый день!

Использую FastReport 2.5
Сделал товарную накладную, в верхней части располагаются реквизиты Грузополучателя, Грузоотправителя и т.д., состоящие в том числе из факсов,
р/с, корр/с, БИК.
Часто бывает так, что соответствующие поля таблиц в БД не заполнены, а ввиду того, что каждый реквизит отображается отдельным Memo типа:
"тел. [DialogForm.qr1."Phone1"], "
то накладная вместо необходимой пустоты содержит названия реквизитов и запятые.
Я так понимаю, что надо сделать Memo.Visible = True, если например [DialogForm.qr1."Phone1"] <> Null или 0.
Но как это сделать?! Подскажите пожалуйста!

И если другим способом, то каким?!
Буду благодарен за ответы!

Комментарии

  • gpigpi
    отредактировано 18:27
    Добавьте код в обработчик того бэнда, который содержит мемо
  • отредактировано 18:27
    Вот, указал в обработчике событий бэнда:

    begin
    if [DialogForm.qr1."Fax"]<> NULL
    then
    Memo167.Visible := True
    else
    Memo167.Visible := False
    end

    Memo167 вида: "ф. [DialogForm.qr1."Fax"],"

    В текущем состоянии данных из "Fax" нет, а в отчете все равно отображается
    "ф.,"

    Подскажите, что не так я делаю?!
  • отредактировано 18:27
    Я так полагаю [DialogForm.qr1."Fax"] имеет тип string....
    Попробуйте следующее в Memo167.Memo поставте переменную, например, [FAX], ниже напишите:
    begin
    if [DialogForm.qr1."Fax"] = '' then
    FAX := ''
    else
    FAX := "ф. " + [DialogForm.qr1."Fax"] ;
    end;
  • отредактировано 18:27
    При таком коде, как Вы предложили:

    begin
    if [DialogForm.qr1."Fax"] = '' then
    FAX := ''
    else
    FAX := "ф. " + [DialogForm.qr1."Fax"] ;
    end;
    end

    при отсутствии значений "Fax"(тип поля nvarchar(50)) Memo пуст, но в обратном случае в отчете отображается "0".

    Получается это не подходит...
    Как быть?
  • отредактировано 18:27
    попробуйте поэксперементировать со строкой, написать не
    FAX := "ф. " + [DialogForm.qr1."Fax"] ;

    FAX := "ф. [DialogForm.qr1."Fax"],"
    иногда помогает)
  • gpigpi
    отредактировано 18:27
    попробуйте
    begin
    Memo167.Visible:=not (([DialogForm.qr1."Fax"]=NULL) or ([DialogForm.qr1."Fax"]=0) or (trim([DialogForm.qr1."Fax"])=''));
    end
    
  • отредактировано 18:27
    Спасибо qpi за совет!

    Сделал также, только упростил с учетом типа поля nvarchar:

    begin
    Memo167.Visible:=not (([DialogForm.qr1."Fax"]=NULL) or
    (trim([DialogForm.qr1."Fax"])=''));
    end



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

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