در این مر حله می خواهیم ارتفاع header – detail , footer را تعیین کنیم.
رکوردهایی که این خصوصیات را در خود نگهداری می کنند objtype=9 AND objcode=1 دارند و قبلا به جدول اضافه شده اند پس با دستور زیر ارتفاع را تعیین می کنیم :
REPLACE height WITH 2*3937 FOR objtype=9 AND objcode=1 && ارتفاع هدر
REPLACE height WITH 1*3937 FOR objtype=9 AND objcode=4 && ارتفاع ديتيل
REPLACE height WITH 2*3937 FOR objtype=9 AND objcode=7 && ارتفاع فوتر
اگر می خواهید کمی کار را دهان پر تر ارائه دهید می توانید توسط textbox تعیین ارتفاع این اشیا را به دست کاربر بسپارید.
حال می خواهیم دو خط افقی در بخش هدر داشته باشیم تا عناوین درون آن قرار گیرد.
این خطوط در تصویر برای وضوح بیشتر با رنگ قرمز نمایش داده شده است و با نام Hline نامگذاری شده اند.
گفتیم گزارش پایه ای با نام reportBase.frx داریم که اشیا مورد نظر را در آن قرار دادیم و اگر یادتان باشد خط افقی به نام Hline هم به آن اضافه کرده بودیم . هم اکنون همان خط را به گزارش اصلی اضافه می کنیم ( البته 2 بار چون به دو خط نیازمندیم)
APPEND FROM reportBase.frx FOR comment='Hline'
APPEND FROM reportBase.frx FOR comment='Hline'
حال باید این خطوط را به اندازه کل صفحه بکشیم البته بنده برای احتیاط به اندازه 1 سانتی متر از هر دوطرف حاشیه گذاری می کنم یعنی طول کاغذ (pwidth) 2 سانت کمتر
ezaf6 = 1
SCAN FOR comment='Hline'
REPLACE height WITH 104.167 ,hpos WITH 3937 , vpos WITH (( HeaderHeight - ezaf6)*3837)+104.167 ,;
width WITH (pwidth-1)*3937
ezaf6 = 0
ENDSCAN
مقدار 104.167 یعنی ارتفاع این خط صفر است پس خط افقی خواهیم داشت.
HeaderHeight - ezaf6 به این دلیل است که 2 خط به اندازه هستند اما فاصله آنها از بالای صفحه به اندازه 1 سانت فرق می کند .
حالا می خواهیم خطوط عمودی را در هدر اضافه کنیم همان خطوطی که با رنگ سبز نمایش داده شده است و با Vine نام گذاری شده اند.
نکته قابل توجه اینکه ما تعدادی رکورد را از جدول TBLFIELD انتخاب شده داریم (به انتخاب کاربر) که باید نمایش داده شود.
1 - فیلدهایی که باید نمایش داده شوند را شماره گذاری کنید :
SELECT TBLFIELD
varsel =SELECT()
REPLACE nid WITH 0 all
vcnt=1
SCAN FOR lsel
REPLACE nid WITH vcnt
vcnt = vcnt + 1
ENDSCAN
COUNT FOR lsel TO tvis
2 – خطوط عمودی را اضافه می کنیم :
LOCATE FOR comment="Vline"
SCATTER TO tlin
SELECT rptstruct
FOR il = 1 TO tvis+1 && تعداد خطوط باید یکی بیشتر از تعداد فیلدها باشد
APPEND blank
GATHER FROM tlin
REPLACE comment with "Vline" && برای محکم کاری چون بعضا این فیلد کپی نمی شه
ENDFOR
حالا باید مشخصات این خطوط را تنظیم نماییم
vcnt = 1
SELECT rptstruct
SCAN FOR comment="Vline"
SELECT tblfield
LOCATE FOR nid=vcnt
vwidth = newwidth
vcaption = ALLTRIM(colcaption)
vleft = nleft
IF vleft=0 && اولین فیلد از سمت چپ
vleft = pwidth*3937
ENDIF
SELECT rptstruct
REPLACE height WITH 3837 ,hpos WITH vleft , vpos WITH ((HeaderHeight-1)*3937) , width WITH 104.167
vcnt = vcnt + 1
ENDSCAN
فکر نمی کنم کدها نیاز به توضح خاصی داشته باشه ارتفاع خط – فاصله از چپ و فاصله از بالا تنظیم می شود
همین مراحل برای بدست آوردن تنظیمات عنوانین به کار می رود اگر دوستان مطلبی برایشان نامفهوم بود بفرمایید تا توضیح بیشتر داده شود.