Глава 28. Система ClassExpert ________________________________823
void TApxPreviewWin::SetupWindow() {
TDecoratedFrame::SetupWindow() ;
TPrintDialpg::TDataS data = Printer->GetSetup();
Pagel = new TPreviewPage(Client, *Printout, *PrnDC, *PrintExtent, 1) ;
Pagel->SetPageNumber(l) ;
data.MaxPage = 1;
Page2 = 0;
TLayoutMet rics met ri cs 1;
metricsl.X.Set (ImLeft, ImRightOf, ImParent, ImLeft, 15);
metricsl.Y.Set(ImTop, ImBelow, ImParent, ImTop, 15);
// Определяем главную ось просматриваемой страницы
// Размер по второй оси устанавливаем в соответствии с отношением
// сторон страницы
TRect г = Client->GetClientRect() ;
long ratio;
if (PrintExtent->cx > PrintExtent->cy)
ratio = ((long)PrintExtent->cy * 100) / PrintExtent->cx;
else
ratio = ((long)PrintExtent->cx * 100) / PrintExtent->cy;
bool xMajor = ( (r.Width ()*rfatio) / 100) > r.Height ();
if (xMajor) (
metricsl.Height.Set(ImBottom, ImAbove, ImParent, ImBottom, 15);
metricsl.Width.PercentOf(Pagel,
(int)((long)PrintExtent->cx * 95 / PrintExtent->cy), ImHeight) ;
} else (
metricsl.Height.PercentOf(Pagel,
(int)((long)PrintExtent->cy * 95 / PrintExtent->cx), ImWidth) ;
metricsl.Width.Set(ImRight, ImLeftOf, ImParent, ImRight, 15);
}
Pagel->Create() ;
Client->SetChildLayoutMetrics(*Pagel, metricsl) ;
Client->Layout() ;
}