Bug. Свойство StretchMode у DMPMemo

отредактировано September 2005 Раздел: FastReport 3.0
Доброго дня.

1. Устанавливаю у MasterData1 stetched = True;
2. Для все мемо лежащих на MasterData1 установлено StretchMode = smMaxHeight
3. У одного мемо StretchMode = smActualHeight, вот он и меняет свою высоту

Все остальные мемо (п. 2) высоту не меняют.

(если в мемо статический текст, а не выражение то все ок, но это как правило не требуется)


И еще, попутно, беру мышкой из дерева ("Поля базы данных"), драг дроп на
страницу DMPMemo1. Смотрим Width = 8, а реально поле в базе 10.
Почему так?

Комментарии

  • отредактировано September 2005
    Не может быть. Только что проверил, все работает. Отчет в демке, dot matrix reports/customer list.
  • отредактировано September 2005
    AlexTZ написал:
    Не может быть. Только что проверил, все работает. Отчет в демке, dot matrix reports/customer list.
    Смотрим
    { calculate the max height of the band }
    maxh := 0;
    for i := 0 to Band.Objects.Count - 1 do
    begin
    c := Band.Objects;
    if c.Top + c.Height > maxh then
    begin
    maxh := c.Top + c.Height;
    if (c is TfrxDMPMemoView) and (ftBottom in TfrxDMPMemoView©.Frame.Typ) then
    maxh := maxh + fr1CharY;
    end;
    end;
    if Band.Stretched then
    Band.Height := maxh;

    Если у нас (c is TfrxDMPMemoView) and (ftBottom in TfrxDMPMemoView©.Frame.Typ) = True при i = 0, то c.Top + c.Height > maxh всегда будет False, если тот мемо который ресайзится получается больше на 1 линию (17).
  • отредактировано 16:29
    Fix.
    var IsDMPAndBottomFramed : Boolean;

    { calculate the max height of the band }
    maxh := 0;
    IsDMPAndBottomFramed := false;
    for i := 0 to Band.Objects.Count - 1 do
    begin
    c := Band.Objects;
    if c.Top + c.Height > maxh then
    begin
    maxh := c.Top + c.Height;
    if (c is TfrxDMPMemoView) and (ftBottom in TfrxDMPMemoView©.Frame.Typ) then
    IsDMPAndBottomFramed := true;
    end;
    end;
    if IsDMPAndBottomFramed then
    maxh := maxh + fr1CharY;

    Может достаточно поставить if c.Top + c.Height >= maxh then, но это будет зависеть от константы размера строки 17.
  • отредактировано 16:29
    Поправил, будет доступно в завтрашнем билде.

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

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