Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Репортинговые системы > Fast Report Масштабирование таблицы


Автор: viv 19.11.2005, 14:47

Есть таблица с произвольным количеством столбцов.
Необходимо вывести ее на печать.
Использую Cross
Не выходит отмасштабировать ее по ширине страницы.
Пробую :

Код

void __fastcall TfmLecturerTimeLimiting::frxReport1BeforePrint( 
      TfrxReportComponent *Sender) 
{ 
  if(Sender->Name=="Cross1") 
  { 
    mt->First(); 
    int i = 0,j=0,p=0,c=0; 
    TfrxCrossView *Cross = (TfrxCrossView*)Sender; 
    Variant v1[2],v2[1],v0[1]; 
    while (!mt->Eof) 
    { 
      for(j= 0;j<mt->Fields->Count;j++) 
      { 
        if(mt->Fields->Fields[j]->DisplayLabel[1]=='h')continue; 
        p=mt->Fields->Fields[j]->DisplayLabel.Pos("|"); 
        c=1; 
        v1[1]=""; 
        v2[0]=mt->Fields->Fields[j]->AsString; 
        if(p) 
        { 
          v1[0]=mt->Fields->Fields[j]->DisplayLabel.SubString(1,p-1); 
          v1[1]=mt->Fields->Fields[j]->DisplayLabel.SubString(p+1,p+1); 
          v2[0]=" "+mt->Fields->Fields[j]->AsString+" "; 

          c=2; 
        } 
        else 
          v1[0]=mt->Fields->Fields[j]->DisplayLabel; 
        
        v0[0]=i; 
        Cross->AddValue(v0,1, v1,c, v2,1); 
      } 
      mt->Next(); 
      i++; 
    } 
    c=Cross->ColCount(); 
    int w=0; 
    for(i=1;i<c;i++) 
    { 
      w+=Cross->ColumnMemos[i]->Width; 
    } 
    double k=double(Cross->Width-Cross->ColumnMemos[0]->Width)/w; 
    for(i=1;i<c;i++) 
    { 
      Cross->ColumnMemos[i]->Width*=k; 
    } 

  } 
} 


А еще передаю переменную
Код

  TfrxVariable *v= frxReport1->Variables->Add(); 
  v->Name="k"; 
  v->Value=k; 


А как к ней добраться?


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)