Размеры заголовков в Cross-tab

отредактировано 14:43 Раздел: FastReport 3.0
Возможно подобный вопрос уже был, (тогда ткниете носом) но ответа я не нашел.

Возможно и, если да, то как менять высоту заголовков столбцов и ширину заголовков строк в cross-tab отчете?

Например:
Ширина столбцов вычисляется, чтоб все по ширине влезло на одну страницу, но при этом текст в заголовках столбцов не влезает по высоте.

Т.е. высота строки с заголовком столбцов отлична от высоты строк с данными.

Комментарии

  • отредактировано 14:43
    Эти вещи вычисляются автоматом, менять нельзя. Можно только менять ширину столбцов (описано в доке).
  • отредактировано 14:43
    AlexTZ написал: »
    Эти вещи вычисляются автоматом, менять нельзя. Можно только менять ширину столбцов (описано в доке).
    Доброе время суток. А если "автомат" не справляется? Может я чего-то путаю, но у меня следующие конкретные ситуации.
    Сначала стоит размер шрифта 9, высота заголовков и самих ячеек выставляется с учетом количества строк в ячейке (хотя заметно, что не везде одинаковая получается почему-то):
  • gpigpi
    отредактировано 14:43
    Увеличьте Cross1.MaxWidth
  • КатюньчикКатюньчик Кривой Рог
    отредактировано 14:43
    Я меняла свойства Сross (мин и макс ширину кросса):
    MaxWidth - 200
    MinWidth - 50

    Получилось нормально! :)
  • отредактировано 14:43
    Не совсем понял при чем тут ширина, он высоту как-то непонятно рассчитывает (когда даже строка одна, и переносить её не надо, надо только высоту ячеек увеличить). Пример: MaxWidth = 1000, размер шрифта = 22
  • gpigpi
    отредактировано 14:43
    Выложите шаблон отчёта
  • отредактировано September 2007
    //Cross-Tab
      TfrxCrossView * pMasterData = new TfrxCrossView(pPage);
      pMasterData->CreateUniqueName();
      pMasterData->Top = 80;
      pMasterData->Height = 20;
      pMasterData->ShowColumnTotal = false;
      pMasterData->ShowRowTotal = false;
      pMasterData->Font = m_pPrintViewSettings->getTextFont();
      if(m_pPrintViewSettings->getUseNumeration())
      {
        pMasterData->ShowRowHeader = true;
      }
      else
      {
        pMasterData->ShowRowHeader = false;
      }
      pMasterData->CellFunctions[0] = cfNone;
      pMasterData->ColumnSort[0] = Frxcrossmatrix::soNone;
      pMasterData->RowSort[0] = Frxcrossmatrix::soNone;
      pMasterData->CellMemos[0]->HAlign = haCenter;
      pMasterData->RowLevels = 1;
      pMasterData->ColumnLevels = 1;
      pMasterData->CellLevels = 1;
      pMasterData->OnBeforePrintColumnHeader = OnPrintHeaderEventImpl;
    
      pMasterData->MaxWidth = 1000;
      pMasterData->MinWidth = 100;
    
      if(m_pPrintViewSettings->getStriped())
      {
        //обработчики на объект
        pMasterData->OnBeforePrintCell = OnPrintCellEventImpl;
      }
      if(!m_pPrintViewSettings->getUseExtendWidth())
      {
        //высчитываем ширину колонок для отчетов
    ..
      }
    
  • gpigpi
    отредактировано 14:43
    А каким образом кросс заполняется данными?
    Вот у меня в примере (на Delphi) при некорректном заполнении текст в ячейках смещается.
  • отредактировано 14:43
    Заполняется поидее из грида. Насколько правильно это не знаю, код не мой, но буду благодарен, если подскажете - в чем ошибка:
    void __fastcall TspReportView::frxReport1BeforePrint(
                                                        TfrxReportComponent *Sender)
    {
      vector<string> vecColumnsName = m_pReportState->getColumnsName();
      if(Sender->Name == "Cross1")
      {
        cxGrid1DBTableView1->DataController->GotoFirst();
        TfrxCrossView *Cross = (TfrxCrossView*) Sender;
        Variant v1[1], v2[1], v0[1];
        for(int i = 0 ; i < cxGrid1DBTableView1->DataController->RowCount; ++i)
        {
          TcxRowInfo RowInfo = cxGrid1DBTableView1->DataController->GetRowInfo(i);
          //начинаем с 1,потому что первой колонкой в табличном виде
          //всегда номер строки
          for(int j = 1; j <= ADODataSet1->Fields->Count; j++)
          {
            v1[0] = AnsiString(vecColumnsName[j-1].c_str());
            v2[0] = cxGrid1DBTableView1->DataController->GetRowDisplayText(
                                                                        RowInfo, j);
            v0[0] = i;
            Cross->AddValue(v0, 1, v1, 1, v2, 1);
          }
          cxGrid1DBTableView1->DataController->GotoNext();
        }
      }
    
  • отредактировано 14:43
    Буду благодарен, если кто-нибудь объяснит-таки - мне надо что-то по-другому делать, или это "фишка" ФР (если второе, то как дело обстоит в 4 версии) ?
  • отредактировано 14:43
    написал: »
    Я меняла свойства Сross (мин и макс ширину кросса):
    MaxWidth - 200
    MinWidth - 50

    Получилось нормально! :)

    Катюша! Сдалай пожалуйста одолжение, выложи исходник кода на делфи(ну или на чём ты писала) и сам отчёт. Буду должен!java script:add_smilie(":rolleyes:","smid_10")

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

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