memo.frame.typ В runtime

отредактировано 13:50 Раздел: FastReport 3.0
Цель такая, - если в процессе считывания данных по строке значение поля = '' then у всех трех memo в строке (на MasterData) убираем ftLeft и ftRight

делаю так

procedure Memo4OnBeforePrint(Sender: TfrxComponent);
begin

if <price>='' then
begin
Memo2.font.Color := clRed;
Memo3.font.Color := clRed;
memo2.frame.typ:=memo2.frame.typ-ftleft;
end
else
begin
Memo2.font.Color := clBlack;
Memo3.font.Color := clBlack;
memo2.frame.typ:=memo2.frame.typ+ftleft;
end;
end;

В данном прммере в строках где цена='' левой бордюра быть не должно.

Однако этого не происходит, такое впечатление, что граничы с разных сторон меняются совершено прозвольным образом.

При этом шрифт в memo2 становится красным, т.е. обработка происходит верно, но именно операции с memo2.frame.typ глючат.

Как-то можно пофиксить или я не то что-то делаю?

Комментарии

  • gpigpi
    отредактировано 13:50
    Нужно значение memo2.frame.typ присвоить какой-либо переменной в начале формирования отчёта, а в Memo4OnBeforePrint делать
    memo2.frame.typ:=somevar-ftleft;
    причём, если в исходном состоянии у memo2.frame.typ отображается левая граница, то код будет
    if <price>='' then
    begin
    ...
    memo2.frame.typ:=somevar-ftleft;
    end
    else
    begin
    ...
    memo2.frame.typ:=somevar;
    end;
    Но всё-таки лучше делать так:
    memo2.frame.typ:=ftright+ftleft+ftTop+ftBottom;
    ...
    memo2.frame.typ:=ftright+ftTop+ftBottom;



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

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