OnPrintCell

отредактировано 04:05 Раздел: FastReport 4.0
По-моему в парметрах OnPrintCell RowIndex указывает не на номер строки, а на номер подстроки с учетом ЭТАЖА. Т.е. если ячейка имеет 3 этажа, то при вызове OnPrintCell на 2 этаже 1 строки RowIndex =2, 2 строки RowIndex =5..
М.б. это и вызывает ошибку 'List index out of bounds
http://fast-report.com/ru/forum/index.php?showtopic=4816

Комментарии

  • отредактировано December 2006
    1.Точно
    procedure TfrxCustomCrossView.DoOnCell(Memo: TfrxCustomMemoView;
    Row, Column, Cell: Integer; const Value: Variant);
    var
    v: Variant;
    begin
    if FOnPrintCell <> '' then
    begin
    v := VarArrayOf([Integer(Memo), Row div FCellLevels, Column, Cell, GetRowIndexes(Row div FCellLevels), // МОИ
    GetColumnIndexes(Column), Value]);
    if Report <> nil then
    Report.DoParamEvent(FOnPrintCell, v);
    end;
    if Assigned(FOnBeforePrintCell) then
    FOnBeforePrintCell(Memo, Row, Column, Cell, GetRowIndexes(Row),
    GetColumnIndexes(Column), Value);
    end;

    2. По поводу получения значения любой ячейки СrossTab.(http://fast-report.com/ru/forum/index.php?showtopic=4816) М.б. вы добавите ф-цию GetValue в доступные из скрипта методы? Тем более, что у Вас все УЖЕ ЕСТЬ!
        
    constructor TFunctions.Create(AScript: TfsScript);
    ....
    AddMethod('function GetValue(ARow, ACol, CellIndex:integer):string', CallMethod);
    .....
    
    function TFunctions.CallMethod(Instance: TObject; ClassType: TClass;
      const MethodName: String; Caller: TfsMethodHelper): Variant;
    .....
      else if MethodName = 'GETVALUE' then 
        Result := TfrxCustomCrossView(Instance).GetValue(Caller.Params[0], Caller.Params[1], Caller.Params[2]);
    ......
    
  • отредактировано December 2006
    2AlexTZ
    Александр, ответте please!

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

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