Доступ к элементам формы из процедуы (без Delphi)

отредактировано 16:09 Раздел: FastScript
Возможно ламерский вопрос, но я не могу понять.

Исходные данные:
В программе написанной на Delphi, отчет динамически загружается из файла bla.fr3.
Отчет содержит MasterData1, который в свою очередь сожержит несколько Memo (Memo1 ... Memo5).
MasterData1 имеет Stretched="True", а Memo1 ... Memo5 StretchMode="smMaxHeight", т.е. растягиваются в зависимости от содержимого. Также MasterData1 имеет KeepFooter="True", для того чтобы футер не отрывался от последней строки таблицы при разрыве страницы, если можно так выразиться.
Если "последняя строка" большого размера, то остается довольно много свободного места.

Задача: интерактивно изменять высоту строк на странице.

Мой ход решения:
1. Добавить обработчик в окне предварительного просмотра: OnPreviewClick="Memo2OnPreviewClick".
2. В ф-ции Memo2OnPreviewClick увеличить отступы по вертикали от границ "ячейки" и пересоздать отчет, вроде:
Memo2.GupY:=Memo2.GupY+1;
Report.ShowReport;

Проблема:
Этот код работает только в основном коде FastScript (в бесконечной рекурсии). В функции если только Memo2.GupY:=Memo2.GupY+1 ничего не происходит. А если добавить в функцию Report.ShowReport; то вылетает с ошибкой "Access violation at address ... in module ... . Read of address ...".

В чем ошибка, как реализовать правильно?

Комментарии

  • отредактировано 16:09
    valerko написал: »
    Возможно ламерский вопрос, но я не могу понять.

    Исходные данные:
    В программе написанной на Delphi, отчет динамически загружается из файла bla.fr3.
    Отчет содержит MasterData1, который в свою очередь сожержит несколько Memo (Memo1 ... Memo5).
    MasterData1 имеет Stretched="True", а Memo1 ... Memo5 StretchMode="smMaxHeight", т.е. растягиваются в зависимости от содержимого. Также MasterData1 имеет KeepFooter="True", для того чтобы футер не отрывался от последней строки таблицы при разрыве страницы, если можно так выразиться.
    Если "последняя строка" большого размера, то остается довольно много свободного места.

    Задача: интерактивно изменять высоту строк на странице.

    Мой ход решения:
    1. Добавить обработчик в окне предварительного просмотра: OnPreviewClick="Memo2OnPreviewClick".
    2. В ф-ции Memo2OnPreviewClick увеличить отступы по вертикали от границ "ячейки" и пересоздать отчет, вроде:
    Memo2.GupY:=Memo2.GupY+1;
    Report.ShowReport;

    Проблема:
    Этот код работает только в основном коде FastScript (в бесконечной рекурсии). В функции если только Memo2.GupY:=Memo2.GupY+1 ничего не происходит. А если добавить в функцию Report.ShowReport; то вылетает с ошибкой "Access violation at address ... in module ... . Read of address ...".

    В чем ошибка, как реализовать правильно?

    ИМХО, следует использовать событие OnBeforePrint датабэнда (MasterData1).
    Впишите туда вашу строчку:
    Memo2.GupY:=Memo2.GupY+1;
    
    - или что там у вас

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

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