آموزش کار با بخش طراحی گزارش نرم افزار گزارش ساز مدیران :

برای دریافت مطلب زیر بصورت کامل به آدرس 

 

http://s3.picofile.com/file/8196469884/MGR1017_3T.pdf.html

و 

http://s3.picofile.com/file/8196470292/MGR1017_4T.pdf.html

مراجعه فرمایید

با کلیک روی   Designer  طراحی گزارش منوی اصلی  FASTREPORT ظاهر می گردد.اجزا  بوسیله طراح تهیه می شوند که با دو بار کلیک کردن روی جزء گزارش Tfrx فراخوانی می شود. Designer  ابزارهای مناسب را در اختیار کاربر قرار می دهد.

.واسط Designer برای توسعه ظاهر گزارش با قابلیت پیش مشاهده UPDATE میگردد و شامل جعبه ابزار متنوعی است که می تواند هر جایی که می خواهید قرار داده شود . در فایل ini  اطلاعات مربوط به موقعیت نوارها وتنظیمات Designer در فایلهای ini ذخیره شده است که با هر بار که برنامه را آغاز می کنید بازیابی می شود

در زمان طراحی Designer می تواند به محیط دلفی دستیابی داشته باشد. برای استفاده DESIGNER در یک پروژه باید جزء Tfrx designer را از الگوی جزء fast report بردارید یا واحد frx designer را به لیست USES اضافه کنید.

 

در شکل :

۱- محیط کارDESIGNER                       ۲- نوار منو                   ۳- جعبه ابزارها

۴- جعبه اشیا                                  ۵- ابزار حالت DESIGNER       ۶- صفحات گزارش

۷- پنجره گزارشات بصورت درختی    ۸- پنجره کنترل شیء

۹- اطلاعات درختی (که می توانید عناصر یک گزارش را از این پنجره حرکت دهید)

۱۰- خط کش ها( هنگام حرکت دادن یک خط کش به صفحه گزارش ، خط راهنما ظاهر می شود)

۱۱- خط وضعیت

 

کلیدهای کنترل

 

توضیحات

کلیدها

باز کردن

Ctrl+o

ذخیره کردن

Ctrl+s

پس مشاهده

Ctrl+p

رفو کردن

Ctrl+z

تکرار کردن

Ctrl+y

کپی کردن

Ctrl+c

جا گذاری

Ctrl+v

بریدن

Ctrl+x

انتخاب همه

Ctrl+a

حرکت بین اشیا

arrows

حذف اشیا انتخاب شده

Del

فراخوانی ویرایشگر اشیا انتخاب شده

enter

اصطلاح اندازه اشیا انتخاب شده

Shift+arrows

حرکت دادن اشیا انتخاب شده

Ctrl+arrows

شیء انتخاب شده نزدیکترین جهت مشخص شده چسبیده می شود.

Alt+arrows

 

کنترل موس

 

توضیحات

عملیات

انتخاب شیء : جا گذاری شیء جدید، حرکت دادن و اندازه گیری مجدد اشیا انتخاب شده، می توانید بزرگنمایی یا کوچک نمایی را با حرکت دادن مربع قرمز رنگ در سمت چپ پایین اشیا انتخاب شده انجام دهید.

دکمه سمت چپ

منوی اشیا ضمنی انتخاب شده

دکمه سمت راست

فراخوانی ویرایشگر اشیا: با دو بار کلیک کردن روی فضای سفید صفحه “تنظیمات صفحه” فراخوانی می شود.

دو بار کلیک

حرکت دادن صفحه گزارش

Mouse wheel

تغییر وضع شیء انتخاب شده

Shift +left button

اگر در طول حرکت موس دکمه سمت چپ آنرا نگه دارید ، یک فرم ظاهر می شود. اگر دکمه موس را رها کنید تمامی اشیا تصرف شده در فریم انتخاب خواهند شد. این عمل با دوبار کلیک روی فضای خالی صفحه و حرکت مکان نمای موس به موضع مورد نیاز هم انجام می شود.

کلید سمت راست+ctrl

اگر شیء” متن ” انتخاب شده باشد ، محتویات آن در همانجا ویرایش داده می شود.

کلید سمت چپ+alt

 

 

ابزارها

نوار حالات DESIGNER

از دکمه های زیر تشکیل یافته است:

 

توضیح

نام

مکان نمای موس امکان گزینش اشیا و اصلاح اندازه ها و… را دارد.

انتخاب اشیا

با کلیک روی این آیکون امکان حرکت دادن صفحه گزارش داده می شود .

دست

کلیک روی دکمه سمت چپ بزرگنمایی را دو برابر می کند و کلیک روی دکمه سمت راست بزرگنمایی را نصف می کند. بهنگام نگاه داشتن دکمه سمت چپ روی محدوده انتخاب شده بزرگ می شود .

zoom

امکان ویرایش محتویات روی صفحه گزارش می دهد . اگر هنگام حرکت دادن مکان نمای موس دکمه چپ موس را نگه دارید ،شیء متن در جای منتخب ظاهر می شود و ویرایشگر آن راه اندازی می شود.

Text editor

این دکمه هنگامی که شیء متن انتخاب شده باشد قادر به کار است.

Format copying

 

ابزارهای استاندارد

 

توضیحات

نام

ایجاد یک صفحه گزارش

گزارش جدید

باز کردن گزارشات فعال از فایل(کلید میانبر  ctrl+o )

باز کردن گزارش

ذخیره کردن گزارش در قایل (کلید میانبر  ctrl+s )

ذخیره گزارش

انجام بازسازی گزارش و پیش مشاهده آن (کلید میانبر  ctrl+p )

پیش مشاهده

اضافه کردن صفحه جدید درون گزارش

صفحه جدید

اضافه کردن فرم سوال و جواب درون گزارش

فرم DIALOG جدید

حذف صفحه جاری

حذف صفحه

برش اشیا انتخابی درون صفحه کار (کلید میانبر  ctrl+x  )

برش

فراخوانی خواص صفحه

خصوصیات صفحه

فراخوانی ویرایشگر متغیرهای گزارش

متغیرها

کپی کردن اشیا انتخابی درون صفحه کار(کلید میانبر  ctrl+c )

کپی

جای گذاری اشیا از صفحه کار(ctrl+v )

جای گذاری

تنظیم الگوهای شیء متن . شیء متن را انتخاب روی آن کلیک کنید. اشیا متن قالب مشخص شده الگوی خاص را خواهند داشت . برای راه اندازی مجدد تنظیمات الگو، روی فضای خالی صفحه کلیک کنید و روی این دکمه کلیک کنید.

قالبهای(نمونه)از پیش تعیین شده

خنثی کردن آخرین عملیات (فرمان میانبر ctrl+z )

لغو کردن

انجام دوباره آخرین عملیات لغو شده(فرمان میانبر ctrl+y )

تکرار

نشان دادن صفحه بصورت مشبک (فاصله بین چهارخانه ها بوسیله انتخاب های DESIGNER تنظیم می شود.)

نمایش مشبک

در طول حرکت تصویر با مکان نما مختصات شیء مطابق تنظیم مشبک اصلاح می شود.

تنظیم مشبک

اصلاح سایز(موقعیت)اشیا انتخاب شده، بنابراین اشیا در زوج اتصال قرار می گیرند.

مشخص کردن زوج اتصال در مشبک

تنظیم بزرگنمایی

بزرگنمایی

 

 

نوار ابزار فریم

 

توضیح

نام

فعال/غیر فعال ساختن خط بالای فریم

خط بالا

فعال/غیر فعال ساختن خط پایین فریم

خط پایین

فعال/غیر فعال ساختن خط چپ فریم

خط چپ

فعال/غیر فعال ساختن خط راست فریم

خط راست

فعال کردن تمامی خطوط

تمامی خطوط

غیر فعال ساختن تمامی خطوط

حذف خطوط

فعال/غیر فعال ساختن سایه

سایه

انتخاب رنگ زمینه از لیست

رنگ زمینه

انتخاب رنگ خط از لیست

رنگ خط

انتخاب سبک خط گذاری از لیست

شیوه خط گذاری

انتخاب پهنای خط از لیست

پهنای خط

 

ابزار ردیف کردن

 

توضیح

ردیف کردن لبه های چپ

وسط از میان

ردیف کردن لبه های راست

ردیف کردن لبه های بالا

تراز کردن عمودی

ردیف کردن لبه های پایین

تراز کردن پهنا

تراز کردن ارتفاع

وسط در میان پنجره

وسط عمودی در پنجره

تنظیم پهنا به همان حالت اولیه انتخاب شیء

تنظیم ارتفاع به همان حالت اولیه انتخاب شیء

 

انتخاب های طراح

مسیر زیر را طی کنید: OPTIONSگزینه

کادر گفتگوی زیر باز می شود.دربخشGRIDمیتوانید واحد سانتیمترواینچ یا پیکسل را انتخاب نمایید.برای فعال کردن هرواحد روی گزینه رادیویی سمت چپ آن کلیک کنید.می توانید نمایش یا عدم نمایش GRID را با SHOW GRIDتعیین نمائید.با فعال کردن ALIGN TO GRID میتوانید چهارخانه ها را در یک خط قراردهید.

 

می توانید خط خاصی  برای پنجره ویرایش کنید و اگر گزینه “use objects font seething” فعال باشد ، خط درون پنجره ویرایش متن با خط شیء ویرایش شده مطابق خواهد بود.

اگر زمینه سفید DESIGNER میدان را نمایش دهد و سرویس پنجره برای شما مناسب نباشد، می توانید با “workspace ” و دکمه های “tool window”  آنرا اصلاح کنید. گزینه “LCDgrid color” وضوح دید آنها را روی صفحه نمایش بهینه می سازد. گزینه “show editor after insert ” فرآیند پردازش درج اشیا جدید را کنترل می کند. اگر گزینه فعال باشد، ویرایشگر آن هر زمانی که شیء درج شود ، نمایش داده خواهد شد. هنگام تولید عمده اشیا خالی توصیه می شود که این گزینه غیر فعال شود.

با غیر فعال کردن گزینه “show band caption ” می توانید”bands captions ” را به منظور ذخیره کردن مقداری از فضا غیر فعال کنید.

گزینه “free hand placement ” نوار sapping صفحه را غیر فعال می کند. این گزینه بصورت پیش فرض غیر فعال شده است و نوارها بصورت خودکار وظیفه کاری شان در صفحه گروه بندی شده اند . فاصله بین نوارها در “gap between bands” می توانند تنظیم شوند.

 

تنظیمات گزارش

از طریق “report->options ” منو قابل دسترس است, شامل دو صفحه است:

می توانید یک گزارش را به یکی از پرینترهای تعریف شده در سیستم متصل کنید . که عمل چاپ کردن گزارش بوسیله پرینتر معین شده صورت می کیرد. این در مواردی مفید خواهد بود که پرینترهای گوناگونی در سیستم موجود است. وقتی که اسناد یک رنگ دارند می توانند با پرینتر تک فام مهار شوند. گزینه “default printer ” در لیست پرینترها وقتی انتخاب شود گزارش بوسیله هیچ پرینتر دیگری صورت نمی کیرد ، بنابراین عمل چاپ بوسیله پرینتری که بعنوان پیش فرض تعیین شده است اجرا خواهد شد.همچنین می توانید تعداد کپی های گزارش را تنظیم کنید که آیا ضروری است بترتیب اجرا شوند یا نه؟

مقادیری که کاربر در این دیالوگ تنظیم می کند در پنجره “print” نمایش داده می شود.در صورت انتخاب پرچم”double pass ” ساخت گزارش طی دو مرحله انجام می شود . در اولین گذر یک گزارش ساخته می شود و در چند صفحه تقسیم می شود اما نتیجه هیچ جایی ذخیره نمی شود . در دومین گذر یک تشکل استاندارد با ذخیره کردن نتیجه جاری انجام می پذیرد.

چرا دو گذر ضروری است؟ این گزینه در حالاتی که دریک گزارش به مجموع تعداد صفحات توجه می شود استفاده دارد . تعداد صفحات در اولین گذر محاسبه می شودکه بوسیله “total pages ” قابل دسترس است. اشتباه معمول اینست که اگر این عمل برای استفاده تک-گذری گزارش صورت گیرد مقدار صفر را باز می گرداند.

کاربرد دیگر این فیلد انجام هر گونه محاسبه در گذر اول و نمایش نتیجه ها در گذر دوم می باشد . برای مثال در حالتی که نیاز به نمایش مجموع سر فصل گروهها می باشد . محاسبات چنین اقسامی مربوط به استعمال زبان ترکیبی FR می باشد.

پرچم “print if empty” اجازه ساختن یک گزارش را هنگام عدم وجود اطلاعات می دهد .اگر این گزینه غیر فعال باشد ، گزارشهای خالی ساخته نخواهند شد.فیلد “password” تنظیم یک رمز را هنگام باز کردن یک گزارش بازجویی و تحقیق می کند.(در صورتیکه فعال شود)

کنترلهای درون صفحه دوم تنظیمات توصیفی گزارش را فعال می کند.

Page options

مسیر زیر را طی کنید: “file->page setting ” منو . این دیالوگ دو صفحه دارد:

 

صفحه اول، می توان اندازه و هم ترازی برگه را انتخاب کنید. در لیست “paper source”  می توانید tray پرینتر را برای صفحه اول و بقیه صفحه های گزارش انتخاب کنید.

می توانید به تعداد ستونها برای چاپ ترکیبی- ستونی گزارش اشاره کنید.

پرچم”print of previous page ” اجازه چاپ صفحات را از آغاز فضای خالی صفحه قبل می دهد. این گزینه در مواقعی مفید واقع می شود که الگوی گزارش شامل چندین صفحه یا هنگام چاپ گزارشات مرکب باشد

گزینه “mirror options ” حاشیه های چپ و راست صفحه ها را برای صفحات زوج در طول PREVIEWیا چاپ گزارش گزینش می کند. گزینه”large height indesign mode” ارتفاع صفحه را چندین مرتبه می افزاید. این خصیصه اگر نوارهای زیادی در صفحه مستقر باشد مفید خواهد بود. ارتفاع یک صفحه به طور همزمان در طول ساخت گزارش تغییر نخواهد کرد.

 

تولید گزارش

در این فصل خصیصه هایی از اجزا سازنده اصلی fast report واشیا را مشاهده خواهیم کرد . مثلا “tfrxreport” و “tfrxdbdata ” و “tfrx use dataset ” و “tfr  ”    ” ” وxmemo view”tfr xband    ” . ابتدا چگونگی ساخت گزارشی ساده که شامل داده هایی از جداول DB است را یاد می گیریم.

Tfrx report component

اجزا سازنده آن پایه های هر گزارش را تشکیل می دهد. چنین ترکیبی می تواند تنها شامل یک گزارش باشد و این مؤلفه هر چیز ضروری برای بار گذاری گزارش ، طراحیPREVIEWو چاپ را دارد. اجازه بدهید مهمترین روشها را مشاهده کنیم:

 

بارگذاری یک فرم گزارش از فایل با نام مشخص

ذخیره فرم جاری گزارش درون فایل با نام مشخص

فراخوانی گزارشDESIGNER

اجرای گزارش و نمایش آن درPREVIEW می باشد.

“show report ” تنها شیوه ای است که ما در این فصل نیاز داریم. تنها پارامتر این متداست که معین می کند آیا گزارش قدیمی باید قبل از ساخت نوع جدید آن پاک شود یا خیر. این  پارامتر به طور پیش فرض برابر”true ” است.

 

Report objects

یک گزارش خالی مانند یک کاغذ ارائه می شود. در هر قسمت صفحه کاربر قادر است اشیایی که می تواند اطلاعات مختلفی (متن یا گرافیک) مانند تعریف کردن ظاهر گزارش را تخصیص دهد. اجازه بدهید بطور خلاصه اشیا اسنادی گزارش سریع را که درون یک مجموعه استاندارد جمع شده است توضیح دهیم:

 

شیء “band ” امکان ایجاد ناحیه گزارش که رفتار معینی خواهد داشت را می دهد.

شیء “text ” یک یا چند خط درون محدوده مستطیلی نمایش می دهد.

شیء “picture” فایلهای گرافیکی در فرمتهای ” BMP ” و ” JPEG ” و ” ICO” و ” WMF” را نمایش می دهد.

شیء ” line” خط افقی یا عمودی را نمایش می دهد .

شیء ” system text ” اطلاعات سرویس ( تاریخ – زمان – شماره صفحه و…) را بصورت مجموعه نمایش می دهد.

شیء ” subreport” اجازه درج گزارش اضافی را می دهد.

دسته اشیا” draw ” دلالت بر اشکال هندسی مختلف( خط مورب – بیضی – مستطیل – مثلث و لوزی)

را می دهد. شیء ” chart” اطلاعات درون فرم نمودارهای مختلف(نمودار دایره ای ، نمودار ستونی و …)

 را می دهد.

شیء “richtext” متن را در فرمت (RTF ) نمایش می دهد.

شیء ” Check box” بررسی یا عدم آن را بر عهده دارد

شیء ” bar code” اطلاعات درون بار کد را نمایش می دهد

شیء ” OLE” قادر به نمایش شیء با تکنولوژی ole می باشد.

اشیا اصلی که بیشتر نیاز کار شماست ” band” و” text” می باشد که با امکاناتشان در این فصل آشنا خواهید شد.

 

گزارش” Hello world”

با انتخاب ” file / new” یک گزارش جدید در دلفی ایجاد می کنیم.

از palette جزءFASTREPORT ” Tfrx report” راکه برای ایجاد اولین گزارشمان نیاز است در فرم پروژه گذاشتیم.

گزارش تنها شامل یک نوشته است .به منظور بازگشایی دوبار روی جزء ” Tfrx report ” کلیک کنید. بعد روی ” text” در ” objects” در صفحه طراح کلیک ومکان نمای موس را روی مکان مورد نیاز حرکت داده و دوباره کلیک کنید و شیء بدین ترتیب درج شده است.

پنجره ویرایش متن نمایش داده خواهد شد( اگر ظاهر نشد روی شیء دوبار کلیک کنید متن “hello world” را وارد کنید و سپس دکمه “ok” را کلیک کنید).

گزارش ساخته شده است . برای پیش مشاهده آن “file preview” را از منو انتخاب کنید یا در “toolbar” دکمه مشابه “preview ” را کلیک کنید. پنجره preview با عبارت “Hello,world” ظاهر می شود .این گزارش قادر به  چاپ، ذخیره  یا تبدیل به یکی از فرمتهای پشتیبانی شده است.

تمامی این اعمال را در delphi IDE بدون نوشتن خط کد انجام دادیم. کاربری که بخواهد یک پروژه شروع کند ، نیازمند افزودن بعضی چیزهاست.

دکمه ای روی فرم پروژه ایجاد کرده و کد روبرو را بنویسد:

  frxReport1.showreport

بدین ترتیب هنگامی که روی این دکمه کلیک کنید گزارش ساخته و نمایش داده خواهد شد.

اجازه بدهید گزارشمان را کمی پیچیده کنیم مثلا متن”Hello,world” با حالت برجسته و پس زمینه زرد و یک چهار چوب نمایش دهیم وتاریخ جاری بعد از متن نمایش داده شود .

بار دیگرFast report را باز کرده و شیء با یک متن به کمک موس انتخاب کنید . در نوار ابزار “Text” دکمه “Bold”را پیدا کنید و روی آن کلیک کنید. برای فعال سازی فریم روی “All frame lines” کلیک کنید . با استفاده از دکمه های    بعضی خطوط فریم می تواند نمایش داده شود.کاربر می تواند رنگ خط، پهنا و شکل آنرا تنظیم کند. دکمه fill color” ” را پیدا و رنگ زرد را از لیست انتخاب می کنیم.

آسان ترین راه نمایش تاریخ ، استفاده از شیء “System variable”است . سپس “system text”  را در پنجره ویرایش انتخاب و “DATE” را از لیست انتخاب می کنیم.

دکمه “OK” را کلیک کنید و نتیجه را ببینید.

 

The”text” object

حال می دانیم چطور یک متن ، یک چهار چوب و پر کردن را نمایش دهیم . یک متن می تواند بوسیله هر نوع خطی ، هر اندازه و هر شکلی نمایش داده شود . تمام پارامترها به کمک نوار ابزار زیر قابل تنظیم هستند:

در اینجا مثالهایی از طرح متن می باشد:

به عنوان مثال یک شیء متنی جدید ایجاد می کنیم و دو خط درون آنها قرار می دهیم:

شیء چهارچوب را فعال می کنیم و تا ۹ در ۳ سانتیمتر به کمک موس اندازه می دهیم. می بینیم که شیء تنها بصورت خط منفرد نمی تواند نمایش داده شود ، اما به صورت چند خطی امکان دارد. حال پهنای شیء را تا ۵ ساتتیمتر کاهش می دهیم. واضح است که خطوط طولانی فضایی درون شیء پیدا نمی کنند و بنابراین پیچیده می شوند. این رخدادها بخاطر خاصیت شیء “word wrap”می باشد که در صورت غیر فعال بودن خطوط طولانی به سادگی چند تکه می شوند.

اکنون اجازه دهید بررسی کنیم چطور هم ترازی متن درون شیء کار می کند . دکمه های تراز کردن در نوار ابزار “Text” مستقر شده اند و اجازه تنظیم عمودی یا افقی هم ترازی متن را می دهد.

دکمه”Block Align” امکان هم ترازی پاراگراف روی لبه شیء می دهد. هنگام اجرای این عملیات گزینه “world wrap” باید فعال باشد.

تمام متن می تواند در محدوده ۰ تا ۳۶۰ درجه بچرخد. دکمه  در نوار ابزار “Text” امکان چرخش سریع متن را در ۴۵ ، ۹۰ ، ۱۸۰ ، ۲۷۰ درجه می دهد.اگر بخواهید متن را با زوایای دیگر بچرخانید از کنترلر شیء استفاده کنید. خاصیت Rotation” ” زاویه را تنظیم می کند. هنگامیکه یک شیء را می چرخانید، مقادیر بجز ۹۰، ۱۸۰ و ۲۷۰ باعث تجاوز کردن از مرزها می شود( مانند شکل زیر) . ارتفاع شیء را افزایش می دهیم تا متن متناسب با شیء شود.

 

روی خواص “Text” دقت کنید:

Brush style پر کردن شیء

Char spacing فاصله گذاری بین نمادها در مقیاس پیکسل

Gapx,Gapy مختصات شروع متن از بالا گوشه چپ

Linespacing فاصله گذاری بین خطوط

Paragraph Gap مختصات شروع اولین خط پاراگراف

HTML tags in the “Text” object

برچسب ها می توانند درون متن شیء مستقر شوند. برچسب ها بطور پیش فرض غیر فعال اند ، برای فعال سازی گزینه “Allow HTML Tags” را درون شیء context منو انتخاب کنید یا. در اینجا لیستی از برچسب های پشتیبانی شده آمده است:

 

مثالهای زیر چگونگی استفاده از این برچسب ها را شرح می دهد:

Displaying expression with the help of the “text” object

از مهمترین اجزا جامع این شیء اینست که تنها یک متن استاتیک را به خوبی عبارات نمایش نمی دهد بلکه همزمان عبارات میتوانند به همراه یک متن درون شیء مستقر شوند. مثالی ارائه می دهیم تا چگونگی انجام آنرا ببینیم.

 

قبلا، گزارشی ساخته بودیم که خط “Hello world” چاپ شده و تاریخ جاری را نمایش می داد. برای اجرای آن می بایست دو چیز را در گزارش تخصیص دهیم . یکی از آنها یک متن خوشامدگویی را شامل می شودو دیگری شامل متغیر سیستم “DATE” است .

مشابه زیر برای اجرا نیاز به گزاردن یک خط درون شیء داریم:

بدین ترتیب هنگام اجرا مشابه زیر را خواهیم داشت:

چه چیزی منجر به چنین نتیجه ای شد ؟ در طول ساخت گزارش fast Report ، با یک عبارت قرار گرفته شده بین براکت روبرو شدید ، محاسبه را انجام داده و مقادیر دریافتنی درون متن باز گردانده شد . شیء “Text” می تواند شامل هر تعداد عبارت به همراه یک متن معمولی باشد:مثال] (۴+۳)*۲+۱[ . تمامی متغیرها ، توابع و فیلدهای DB می توانند در عبارات استفاده شوند که در بخشهای بعدی خواهیم دید.

از این رو fast report بطور خودکار عبارتهای قرار گرفته بین دو براکت در متن را مورد توجه قرار داده و می شناسد. اما اگر اشیا خود شامل براکت باشد چه باید بکنیم؟ برای مثال اگر نیاز به نمایش متن مانند زیر باشد:

A[1]:=10;                                                                                                              

که fast report [1] را یک عبارت دیده و مانند زیر نمایش می دهد:

a1:=10;                                                                                                                   

یکی از راههای جلوگیری  چنین وضعیتی غیر فعال کردن عبارت است. تنها در منوی context خاصیت “Allow Expriessions” را غیر فعال کنید بنابراین تمام عبارات درون متن نادیده پنداشته می شوند.fast report درست چیزی را که ما نیاز داریم نشان می دهد:

A[1]:=10                                                                                                                   

بعضی اوقات نیاز به همراهی عبارت و متن درون براکت می شود ، برای مثال                                                       ar] a[1]:=[myv

                                                   

غیر فعال کردن عبارت امکان نمایش براکت ها در جای مورد نظر را می دهد، اما دستکاری عبارت را هم غیر فعال می کند . در این حالت  fast report امکان ایجاد علائم دیگر و designating عبارت را می دهد.خاصیت شیء “Expression Delimiters” که متناسب با “[, ]” است جوابگوی این نیاز است.در این حالت کاربر می تواند از <> برای عبارات بجای [ ] استفاده کند .

A[1]:=<myvar%>                                                                                                    

ارزش “<,>”  باید در خاصیت “Expression Del تنظیم شود همانطور که می بینید علامت (, ) بین علامت باز و بسته جدایی انداخته است . محدودیتی که وجود دارد اینست که علامت باز و بسته نمی توانند یکسان باشند پس “% و % ” کار نخواهد کرد . برای نمونه “<%,%>” مثال ما اینگونه نشان داده می شود :

a[1]:=<%myvar%>

bands in fast report

نوارها برای گروه بندی منطقی هنگام جای گذاری شیء بکار می روند مانند “page header” که شیء داده شده در بالای هر صفحه گزارش نمایش داده می شود . به همین طریق  نوار “page footer” در پایین هر صفحه با تمام اشیا تخصیص داده شده در آن نمایش داده می شود.

این موضوع را با مثالی نشان دادیم.گزارشی ایجاد می کنیم که شامل جمله “hello”د در بالا ، تاریخ روز سمت راست و یک شماره صفحه قسمت پایین سمت راست باشد.

طراح fast report را باز کنید و روی “New report”نوار ابزار کلیک کنید. یک الگوی گزارش خواهید دید که شامل سه نوار است : “report title” , “master data” , ” page footer” . اجازه بدهید که نوار دوم را با کلید delete حذف کنیم و یک  نوار “page header”با زدن دکمه “Add band” , “page header ” را از لیست انتخاب می کنیم . می بینیم که یک نوار جدید به صفحه اضافه شده است. طراح fast reportبطور خودکار نوارها را در صفحه مستقر کرده ، در نتیجه header band بالای صفحه data band در وسط و footer band پایین صفحه است.

حال به تخصیص اشیا می پردازیم . شیء “system text” را در نوار “page header” جای گذاری و “system variable” را در ویرایشگر  شیء text را که شامل متن “hello” است ، در نوار “Report title” جای گذاری می کنیم  ( بخاطر دارید که تاریخ به کمک شیءtext  با تایپ “[DATE]” در ویرایشگر نمایش داده می شود ). بعلاوه شیء مورد نیازی که شماره صفحه را نمایش می دهددر نوار ” page footer” قرار گرفته است .

اگر گزارش اجرا شود می بینید که اشیا گزارش پایان یافته در مکان های موردنظر جای گرفته اند.

بسته به نوع نوار می توان اشیا را در بالا یا پایین صفحه ، در اول یا آخرین صفحه قرار داد.

نوارهای پایه که در اکثر گزارشات مورد نیازند به قرار زیرمی باشند:

نوار “page header” که در بالاترین قسمت هر صفحه نمایش داده می شود.

نوار “page footer” که در پایین ترین قسمت هر صفحه نمایش داده می شود.

نوار “Report title” که در بالای صفحه اما زیر نوار “page header”قرار می گیرد.

نوار “Report summary” در فضای سفید پایان یک گزارش نمایش داده می شود.

                                                                        Data bands

قصد داریم امکان چاپ data از جداول db را بررسی کنیم.در این حالت به مجموعه ای از خطوط(رکوردها)که هر کدام دارای تعداد ستون مشخص است(فیلدها) جدول گوئیم.برای چاپ این نوع اطلاعات fastreport از نوع خاص از باندها بهره می گیرد(databands).

برای چاپ تمام یا بخشی از جدول لازم است تا باندها به گزارش افزوده شده ,متصل به جدول گشته واشیا بهمراه فیلدهایی که کاربرقصد چاپ شان را دارد,جای داده شوند.

هنگام ساخت باندهای گزارش عملیات چاپ مکررا باید صورت پذیرد.در صورت عدم وجودفضا صفحه جدیدی بوجود می آید.

TfrxDBDataSet component

اتصال دهنده جزء TfrxDBDataSetدرجهت اتصال جدول(یا هر منبع داده ای دیگری)بکارگرفته می شود.این جزء نقش میانجی وهدایت گر بین منبع داده وهستهء fastreport را ایفا می کند,واین امکان به هستهء fastreport داده میشود تا مستقل از هر منبعی کار کند.fastreportقادر به کار همزبان با اشیاء “BDE”,”IB”وهر منبع دیگری بدون اتصال با DB می باشد مثلا یک آرایه یا یک فایل.

 

جزء TfrxDBDataSet برای کار با منبع dataوTDataSet(که شاملBDE,ADO,IBX هستند)آماده شده است. جزء TfrxIBODataSetبه منظور کار با دیگر منابع Data (فایلهاوآرایه ها)منظور گردیده است.

برای اتصال “TfrxDBDataSET”با منبع data باید خاصیت “DAtaSet” که بطور مستقیم با جدول در ارتباط است یا خاصیت “DataSource” که با جزء”TdataSOurce” متصل است,تنظیم شود(این دو روش معادلند).حال باید منابع “Data” بوضوح در گزارش مشخص شوند.برای این کار از منو Report->Data… را برگزینیدو منابعی که نیاز دارید را از پنجره باز شده انتخاب کنید.

 

“CustomerList”Report   

گزارش بعدی را که شامل جدول دیتای DBو لیستی از مشتری های یک شرکت است در محیط دلفی آغاز می کنیم.

TTableرا با بهره گیری از DBDEMOS database روی فرم قرار داده وخواص آنرا تنظیم کنید:

بمنظور کار با جدول در fastreport جزء “TfrxDBDataSet” رااضافه و تنظیم کنید:

DataSet=Table1

حال “TfrxReport” را بفرم افزوده وdesigner را باز کرده,روی”New report” کلیک می کنیم تا صفحه ای خالی با ۳ باند “Reprot title”,”Master data”,”page footer” ایجاد شود.

برای مشاهده جدولمان در fastreportمسیر “Report->Data…” را طی کنیدوجدول را برگزینید.پس از بستن پنجره,جدول و فیلدهای آن درون پنجره “Data” قابل رویت اند.

شیء  “Text” را با” list of clients”در باند “Report title” قرار داده و باند “Master data” رابه منبعمان با دوبارکلیک روی باند

 متصل می کنیم.

حال ۴شیءدال بر شماره مشتری ونام وتلفن و فاکس است را روی باند جای می دهیم.شیء”Text” را روی باند گذاشته و به آن “[frxDBDataSet1.”CustNo”]” ,وارد کنید.این راه بدترین حالت است چراکه بطور دستی وارد می گردد.روش دیگر بکارگیری editorشیء Text است ,برای قراردادن فیلد روی عنصری که مایلید درج شود در پنجره بازشده دوبارکلیک کرده و ok را بزنید.حال فیلد درج شده در متن قابل مشاهده است.

روش ۲ در درج فیلد DBدر گزارش مشابه آنچه در محیط دلفی صورت گرفت می باشد:

دومین شی ء را بدون اضافه کردن چیزی دیگردر editorقرار دهیدو مانند زیر تنظیم کنید:

از آنجایی که هر دو خواص بعنوان یک لیست وجود دارند ما تنها نیاز به انتخاب مقادیر مورد نیاز به کمک موس هستیم.

سومین راه کشیدن و ول کردن فیلد مورد نیاز با موس از سرویس پنجره “Data” درون گزارش است. این راحتترین راه است . فیلد ” phone” را به کمک موس بردارد و درون نوار بگذارد. تنها چیزی که باید در این حالت صورت گیرد غیرفعال کردن پرچم “create header” از پایین پنجره “Data” است ( وگرنه ما یک شیء که شامل عنوان فیلد بعلاوه فیلد مورد نیاز است ایجاد خواهیم کرد)

چهارمین راه از قرار زیر است:

یک شیء متن خالی روی نوار قرار دهید و مکان نما را به طرف شیء حرکت دهید. در سمت راست شیء عکسی از دکمه با بردار به سمت پایین می بینید. این لیست باز فیلدهای DB است دکمه را کلیک کنید و فیلد”FAX” را در لیست انتخاب کنید. از این جزء وقتی که نوار متصل به داده (Data) باشد می توانید استفاده کنید.

بدین ترتیب گزارش ما پایان یافته است:

 

روی دکمه “Preview” کلیک کنید و ببینید چه داریم:

Displaying DB fields with the help of the “Text” object

همانطور که می بینید text object  علاوه بز نمایش گزاردن متن و عبارت ها قادر به نمایش اطلاعات از DB است. از این گذشته این کار را به دو روش می توان انجام داد: چه قرار دادن یک پیوند (Link) به فیلدDB درون متن شیء یا اتصال یک شیء به فیلد مورد نیاز با کمک خواص “Data field”,”Data set” . اولین راه برای  مواقعی است که امکان نمایش (هردوی) محتویات فیلدها و هر عبارت توضیحی    و شیء مشابه باشد. مثال:

 

همانطور که می بینید دستور خاصی برای ارتباط با فیلد DB بکار رفته است:

Data-set-name.”field-name”.                                                                                  

نام فیلد می تواند شامل فاصله باشد . فاصله بین نمادهای “quote”,”point” مجاز نمی باشد.نه تنها یک پیوند (link) به فیلد میتواند درون متن object  قرار گیرد بلکه می توانیم عملکردهای محاسباتی مختلفی را به فیلد اضافه کرد:

توجه کنید که چطور انواع براکتها استفاده شده اند. بخاطر داشته باشید که براکت های مربعی بطور پیش فرض برای محدود کردن عبارات استفاده شده اند که درون object text را شامل می شوند. در صورت نیاز براکت های مربعی می توانند برای یک جفت باز / بسته جانشین شوند. براکت های زاویه (<) درون عبارات برای متغیرهای fast report و فیلدهای DB مورد استفاده قرار می گیرند. بصورت منطقی باید بنویسیم:

Never theless تا زمانی که fast report امکان عدم براکتهای زاویه ای را بدهد هر دو این نشان گذاری ها صحیح اند ، در مواقعی که یک عبارت شامل یک متغیر یا یک فیلد DB باشد. هر چند اگر یک عبارت شامل اعضای بسیاری باشد براکتها لازمند:

این یکی از تمایزات مهم نسخه های اولیه Fast report است، جایی که براکتهای مربعی بیشترین استفاده را داشته اند.( بجای نوع زاویه ای ) . این حقیقت ساخته شد تا تمامی عبارات بوسیله زبان اسکریپت مورد استفاده قرار گیرند جایی که براکتهای مربعی برای تنظیم یا باز نمودن آرایه ها استفاده شده اند.

 

Aliases                                                                                                                       

در گزارش قبلی از منبع Data با نام “frx DB Data Set1” و فیلدهای “casNO”,”company”,”Fax”,”phone” استفاده کردیم. بر طبق آن باید چیزی مشابه “[frxDBDataset1.”casNO”]” را درون گزارش قرار دهیم . آیا این بطور کامل واضح بنظر می رسد؟ نه، اینطور نیست. کسی می خواهد منبع Data و فیلد را تغییر نام دهد و آنرا محترمانه “Number”, ” Our dients” بنامد. هر چند که”frxDBDataset1″ یک نام جزء است که هرگز فاصله ها را پشتیبانی نمی کند و “CustNO” یک نام فیلد است که بطور مستقیم ( بدون بازسازی پایگاه داده ها ) نمی تواند تغییر کند.

کاربرمی تواند از نامهای مستعار در چنین وضعیتی بهره بگیرد. منابع Data و فیلد نامهای مستعار و ثانویه که براحتی اصلاح شده اند را متصرف می شوند (البته نامهای اصلی تغییر نکرده اند) . اگر یک نام مستعار داشت ، این نام جانشین در fast report استفاده می شود.

در نرم افزار fast report تغییر نام منبع داده ها و زیر شاخه های آن خیلی آسان است ، که این از محیط نرم افزار Delphi برگرفته شده است. برای باز کردن ویرایشگرAliase بر روی “TfrxDBDataset” دوبار کلیک کنید . می توانید نام منبع داده و همچنین نام زیر شاخه های آنرا تغییر دهید و انتخاب زیر شاخه ای که ممکن است برای گزارش به آن نیاز داشته باشید.در شکل این تغییر نام انجام شده است.

 توجه کنید که تغییر نام داده ها را می توان بدون استفاده از ویرایشگرAliase انجام داد. برای این کار خاصیت “Username” را از جزء “TfrxDBDataset” را تغییر دهید.حال نیاز به تغییر گزارش داریم. پس از تغییر نام زیر شاخه ها برای اصلاح کردن نام زیر شاخه ها   ساده ترین راه استفاده از راه چهارم است که در بخش “list of client report” شرح داده شد. موس را بر روی شیء text قرار داده تا دکمه ای در سمت راست این شیء ظاهر شود. بر روی دکمه کلیک کنید و از لیست موجود زیر شاخه ی مورد نظر خود را انتخاب کنید.

بهتر است تغییر نام داده ها در همان ابتدا یعنی قبل از ساختن یک گزارش انجام شود. این عمل به اجتناب از تاخیر در تغییر نام داده ها در گزارش کمک می کند.

 

متغیر ها:

علاوه بر استفاده های تغییر نامها ، راه دیگری نیز وجود دارد که اجازه می دهد نامهای قابل فهم تری برای DBfields گذاشت.هر کس می تواند نام یک DBfields را به خوبی مختصات آن با متغیرها مقایسه کند. برای کار کردن با متغیرها درFast reportاز منوReport/variable را انتخاب و سپس در نوار ابزار بر روی متغیرها کلیک کنید.

لیست متغیرها در Fast Report دارای ساخت دو مرحله ای است . مرحله اول شامل طبقات و مرحله دوم شامل خود متغیرهاست. دسته بندی متغیرها برای راحتی هنگامیکه لیست متغیرها طولانی است طراحی شده است. هر لیست حداقل باید شامل یک طبقه باشد به این معنی که متغیرها نمی توانند در مرحله بالاتر قرار گیرند. از این گذشته ، طبقات برای دسته بندی متغیرهای منطقی مورد نیاز هستند. به این دلیل هنگامی که برای یک متغیر نام گذاری می کنید فراموش نکنید که آن نام یکتا باشد. این غیر ممکن است که در طبقات مختلف دو متغیر یکسان را ساخت.

بگذارید با طرح یک مثال استفاده متغیر ها را توضیح دهیم. فرض کنید دو منبع داده داریم اولی “frxDBDataset7” با زیر شاخه های “castNo”,”Name” و دومی “frxDBDataset2” با زیر شاخه های “orderNo”,”Data” می باشند. ما می توانیم متغیر های ذیل را با زیر شاخه ها مقایسه کنیم.

 

جایی که “clients”,”order” دو طبقه هستند ویرایشگر متغیرها را باز کرده و یک ساختار به کمک دکمه های “New category” (طبقه جدید) و “New varable” (متغیر جدید) و “edit” (ویرایش) بسازیم. برای مقایسه متغیرها با DBfield بگذارید که یک متغیر را انتخاب کرده و بر روی DBfield مورد نیاز در قسمت راست پنجره دو بار کلیک کنید . پیوند DBfield به قسمت زیر پنجره حرکت می کند . نوشته های در قسمت زیر پنجره ممکن است مقدار متغیرها باشد . می توان بصورت دستی آنها را ویرایش کرد. طبقه ها نباید با هیچ چیزی مقایسه شوند.

بعد از اینکه لیست متغیرها ساخته شد، ویرایشگر متغیرها راببندید. حال به وارد کردن متغیرها در گزارشمان نیاز داریم . در مقابل وارد کردن “DBfield” اینجا تعداد کمتری متغیر وجود دارد . می توانیم یا کشیدن یک متغیر از پنجره سرویس داده به مکان مورد نیاز در گزارش, یک متغیر را در شیء متنی بصورت دستی وارد کنیم.

شیء بعدی برای بررسی کردن شیء تصویر است . این شیء معمولا در گزارشها مورد استفاده قرار می گیرد. با کمک این شیء می توانید مارک شرکت، یک تصویر از کارکنان و یا اطلاعات گرافیکی دیگر را وارد نمائید . شیء تصویر توانایی این را دارد که تصاویر گرافیکی به فرمتهای :”EMF”,”BMP”,”JPEG”,”JCO”,”WMF” را نمایش دهد.

یک صفحه خالی گزارش بسازید و شیء تصویر را بر روی لیست گزارش قرار دهید . شما می توانید یک تصویر را به ویرایشگر اشیا اضافه کنید و یا تصویر موجود در آنرا پاک کنید.( اگربصورت اتوماتیک باز نشد ، بر روی شیء دو بار کلیک کنید) . تصویر مورد نیاز خود را روی گزارش قرار دهید و کلید OK را بزنید.

 

در منوی وابسته اشیا موارد انتخابی وجود دارد:

 سایز اتوماتیک

– کشیده

– مرکز

– نگهداشتن نسبت چهره

 

اگر حالت سایز اتوماتیک فعال است  می توانیم ببینیم شیء دچار تغییر اندازه می شود.

حالت انتخابی “Disable b default” درست و در واقع در بیشتر موارد حالت نسبتا راحتی است . حالت انتخابی کشیده “enabled b default” : این حالت تصاویر داخل یک شیء را می کشد. با موس می توان در اندازه ی اشیاتغییر ایجاد کرد. اگر این حالت غیر فعال شود، تصویر در اندازه واقعی خود نمایش داده می شود. این حالت با سایز اتوماتیک فرق می کند. زیرا ابعاد شیء با اندازه تصویر تطبیق نمی کند. به این معنی که شیء می تواند بزرگتر یا کوچکتر از تصویر باشد. حالت انتخابی مرکز اجازه می دهد یک تصویر را داخل شیء ردیف کرد. حالت انتخابی نگه داشتن نسبت چهره پیش فرض فعال ما است و اجازه نمی دهد نسبت تصویر از شیء بیافتد ، وقتی که اندازه های شیء تغییر می کند. این حالت انتخابی فقط به همراه حالت کشیده عمل می کند.

گزارش به همراه تصاویرشیء تصویر به خوبی بسیاری از اشیا در fast report می تواند داده ها را از DB نمایش دهد. ارتباط میان یک شیء با یک “DBfield” مورد نیاز با کمک خصوصیات “قرار دادن داده” و ” زیر شاخه های داده” در بازرسی شیء فهمیده می شود. در مقابل شیء “text” تنها راه ارتباط  یک شیء با داده میباشد. بگذارید با یک گزارش این را ثابت کنیم .برای انجام این کار ما دو باره به پایگاه داده شرح داده شده ی “DBDEMOS” نیازمندیم که در نرم افزار دلفی می باشد. پروژه جدید در نرم افزار دلفی درست کرده و سپس جزء TTable” را بر روی نرم افزار قرار دهیم وتنظیم کنید:

برای کاربا جدول از fast report  ، یک جزء “TTfrxDBDataset” اضافه کرده و تنظیم کنید:

 در نهایت ، جزء “TfrxReport” را روی فرم قرارمی دهیم طراح را باز کنید و روی دکمه ” گزارش بدهید” با موس کلیک کنید بنابراین نرم افزار fast report یک الگوی خالی ایجاد می کتد . جدول را در پنجره داده گزارش به گزارش مرتبط می کنیم. شروع به ساختن یک فرم گزارش کنید.یک شیء متن را با متن fish روی نوار عنوان گزارش قرار دهید. نوار داده های درجه یک را به منبع داده ها وصل کنید. ( روی نوار دو بار کلیک کرده و گزینه Bio را از لیست انتخاب کنید) ارتفاع نوار را تا ۳ سانتی متر افزایش داده تا تصویر بتواند فضایی را در آن پیدا کند. شیء text  را در نوار قرار داده و آنرا با استفاده از یکی از روشهای مشروح بالا به زیر شاخه ی common named وصل کنید. برای انجام اینکار مشخصات را در قسمت بازرس شیء تنظیم کنید.

 در نظر داشته باشید که هر دوی این مشخصات از نوع لیست هستند و به همین دلیل است که شخص می تواند متغیر های مورد نیاز را به کمک موس انتخاب کند. برای پیدا کردن جایی برای تصویر شیء را تا ۴*۵/۲ سانتی متر بکشید.

 

نمایش متنهای چند خطی

به مثال قبل که در مورد ماهی ها بود برگردیم. در جدول “biolife.db” شاخه ی note وجود دارد که جزئیات مشخصات هر ماهی را شامل می شود. گزارشمان را با اضافه کردن این شاخه به روزمی کنیم . در نگاه اول همه چیز ساده بنظر می رسد.شیء text را بوسیله داده ها به نوار اضافه کنید، آنرا به شاخه ی note وصل کرده و اندازه شیء را بصورت ۵/۲*۸ سانتی متر تنظیم کنید. اگر گزارش را اجرا کنیم خواهیم دید آنچه را که دقیقا توقع داریم دریافت نمی کنیم.

اما برنامه ی fast report چیزی را انجام داده که از آن خواسته شده است . شاخه note متن چند خطی را در بر گرفته که اندازه هر کدام ممکن است فرق کند. در همین زمان شیء متن که اطلاعاتی را از همین شاخه نشان می دهد اندازه ها را ثابت کرده, به همین دلیل بعضی از خطها نتوانستند اشیا را جاگذاری کنند و قطع شدند . چه باید کرد؟

بطور قطع اندازه های دیگر پنجره می توانند معین شوند (in reserve) یا اندازه کلمات متن می تواند کاهش پیدا کند .این امر ممکن است به استفاده غیراقتصادی فضای صفحه منجر شود. به این علت که بعضی از ماهیها دارای توصیفات بلند هستند در صورتیکه برخی دیگر دارای توصیفات کوتاه هستند. در برنامه ی fast report منابعی وجود دارد که این مشکل را حل می کند. این عمل توانایی نوار را به حالت اتوماتیکی ربط می دهد که می توان برای پیدا کردن فضایی برای اشیا مشمول, ارتفاعش را تنظیم کند. برای انجام ابن عمل فقط مشخصه “کشیده ” را فعال کنیم. اگر چه این تمام امر نیست برای اینکه شیء که مشخصات طولانی تری دارد باید بتواند به خودی خود کشیده شود. شیء متن توانایی سازماندهی اش را دارد. این شیء می تواند به منظور پیدا کردن فضایی برای تمام متنی که شامل می شود به طور اتوماتیک ارتفاع و پهنایش را تنظیم کند. نیز می توان با استفاده از مشخصه های ” پهنای اتوماتیک” و ” حالت کشیده” این کار را انجام داد. مشخصه ی پهنای اتوماتیک پهنای شیء را به طریقی انتخاب می کند که به تمام خطها این امکان را بدهد تا فضایی در اختیار داشته باشند بدون اینکه کلمات از هم جدا شوند. این حالت وقتی مناسب است که شیء بصورت متنی تک خطی است. مشخصه ی ” کشیده” این امکان را فراهم می کند تا ارتفاع شیء را به طریقی که برای تمام متن فضایی وجود داشته باشد انتخاب کند . پهنای شیء در این هنگام تغییری نمی کند. این مشخصه امکان لیست کردن را بوجود می آورد و شما می توانید یکی از حالات را در بازرس شیء انتخاب کنید.

Smdontstvetch : با کوتاه کردن و با غفلت یک شیء را نکشید.

Smat………… : شیء را تا جایی امتداد دهید که پایین آن با پایین نوار خطی منطبق شود( جایی که شیء قرار دارد)

در حال حاضر ما به مشخصه ی امتداد دادن شیء متنی علاقه مند یم.

مشخصه ی نوار کشیده را فعال کنید . گزارش را شروع کرده و مطمئن شوید که هر چیزی بطور صحیح در حال اجرا است.

همانطور که مشاهده می کنید وقتی گزارش ساخته می شود برنامه ی fast report اشیا را با داده ها پر می کند ، آنها را با گزینه ی نوار کشیدن امتداد می دهد . اگر گزینه ی نوار کشیدن غیر فعال باشد، تنظیم ارتفاع انجام نمی شود و نوار با توجه به ارتفاع تعیین شده در طرح نمایش داده می شود.

اگرسعی کنیم که این گزینه را غیر فعال کنیم دیده خواهد شد که این اشیا با متنهای بلندترامتداد داده شده اند با اینکه نوارها اینطور نیستند. وقتی که نوار بعدی درست بلافاصله بعد از نوار قبلی نمایش داده می شود متن ها روی هم قرار می گیرند.

جدا کردن داده ها

بیایید به حالت شگفت انگیز گزارش ماهیها توجه کنیم : فضاهای خالی زیادی در پایین صفحه وجود دارد . این اتفاق چرا رخ داده است؟ وقتی که گزارش ساخته می شود برنامه ی fast report فضاهای سفید صفحه را با نوارها پر می کند . بعد از نمایش هر نوار موقعیت اخیر بطرف پایین انتقال داده می شود . وقتی که برنامه ی fast report متوجه می شود که دیگر فضای کافی برای نمایش نوار بعدی وجود ندارد (وقتی که ارتفاع آن از فضای سفید باقیمانده در صفحه بیشتر است) در این هنگام صفحه ی جدیدی شکل گرفته و نمایش بقیه نوار در آنجا ادامه پیدا می کند. ادامه این عمل تا جایی که هنوز نوشته هایی در تنظیم داده ها وجود دارند انجام می شود.

گزارش ما شیء را با متنی طولانی شامل می شود و به همین دلیل است که ارتفاع نوار تا حدودی زیاد است . از این گذشته اگر یک نوار بلند جای خالی در صفحه پیدا نکند به صفحه بعدی انتقال پیدا کرده و فضای خالی زیاد بلااستفاده ای در انتهای صفحه اول باقی می ماند. این امر در شکل زیر نمایش داده شده است.

برای استفاده معقولانه از صفحه تنها کاری که ما باید انجام دهیم این است که گزینه ی “Allow sprit…” (اجازه دهنده ی جدا کردن) نوار داده های درجه ۱ را فعال کنید. در این صورت مشاهده می کنید که فضای خالی کمتری در انتهای صفحه ی گزارش شده وجود خواهد داشت

 

نوار جدا کننده چطور کار می کند؟

اشیایی در برنامه fast report وجود دارند که این الگو را پشتیبانی میکنند. این اشیا عبارتند از: “text”, line”,”richedit”  این اشیا می توانند جدا شوند در صورتیکه اشیا دیگر این توانایی را ندارند وقتی که برنامه ی fast report در راستای اجرای برنامه ی جدا کننده قرار می گیرد این کار را به روش زیر انجام می دهد. اشیا جدا نشدنی را برای پیدا کردن فضایی در صفحه خالی نمایش می دهد. بخشی از آنها بصورت اشیا جدا شده نمایش داده می شوند ( اشیا متنی) به طریقی نمایش داده می شوند که تمام خطوط فضایی را در شیء پیدا کنند.

یک صفحه جدید پیدا کرده و نمایش اشیا را ادامه می دهد. اگر یک شیء جدا نشدنی برای خود فضایی در صفحه پیدا نکند به صفحه بعد منتقل می شود. در همین زمان تمام اشیایی که زیر آن قرار گرفته اند با توجه به جابجایی انتقال پیدا می کنند. این فرایند تا زمانی که تمام اشیا نواری نمایش داده شوند ادامه دارد. مراحل انجام فرایند جدا کننده با نکاهی بر تصاویر زیر روشن تر می گردد.

یادآوری شود که مراحل فرایند جدا شونده به طور ۱۰۰% چگونگی گزارش دریافتی را میسر نمی کند به همین دلیل شما باید این گزینه را هنگامی که اشیا در نوار جدا کننده به صورت پیچیده گروه بندی شده اند و به علاوه سایز اندازه ی کلمات آنها متفاوت است با دقت به کار ببرید:

 

Text wrap of objects

برای طراحی گزارش در بعضی موارد این امر ضرورت پیدا می کند که یک text wrap را بسازید ( اغلب هنگامی که می خواهیم تصاویری را ایجاد کنیم. بیایید این طرح fast report با مثال ماهیها را نشان دهیم. بیایید ابتدا یک شیء متنی دیگر به گزارشمان اضافه کرده و سپس اشیا را همانگونه که در تصویر زیر نشان داده شده اند مرتب کنید.

نشان داده در تصویر زیر :

ما کشیدن اشیاbio”,”notes”غیر فعال خواهیم کرد . در عوض این خاصیت را برای شیء زیر فعال می کنیم. برای ایجاد متن blend از اشیا notes  bio خاصیت flowto در شی notes  “bio”را ظیم کنید . این خاصیت تنظیم شده در بازرس شیء و از نوع “dropping list” است. نام شیء زیر بایستی از این لیست انتخاب شود. نتیجه در تصویر زیر نشان داده می شود:

توجه: شیء اصلی بایستی قبل از اضافه کردن چیزی که به آن لینک می شود به گزارش اضافه شود. در غیر این صورت مخفی سازی متن ممکن است نادرست صورت گیرد. اگر گزارش شما صحیح عمل نکند، شیء لینک شده را انتخاب کنید و سپس آن را به جلو با مسیر edite-> bbring to forefrowt انتقال دهید

نمایش داده در شکل جدول

گاهی اوقات ضروری است که یک گزارش را در یک جدول با قاب آن نمایش دهیم. یک مثال این نوع گزارش می تواند یک لیست قیمت باشد. برای ساخت چنین گزارشی در fast report ، کاربر تنها لازم است که توابع قاب گذاری برای اشیایی که در نوار data قرار دارند, فعال کند حال بیایید انواع مختلف قاب ها را با یک نمونه آزمایشی گزارش نمایش دهیم. یک پروژه جدیدلفی ایجاد نمایید. جزء Ttable را در فرم قرار دهید و سپس خواص آن را اینطور تغییر دهید:

DatabaseName=DBDEMOE

TableName=Biolife.db

 

جزء TfrxDBDataset را برای اینکه قادر باشیم با جدول fast report کار کنیم اضافه کنید و سپس خواص آنرا تنظیم کنید:

  Data set=Table1

UserName=Bio                                  

 

اشیا را روی نوار خط به خط قرار دهید و سپس ارتفاع نوار را حداقل کنید. اولین و آسان ترین نوع جدول ، جدولی با قاب کامل است. برای

انجام آن بایستی تمام خطوط قاب را در تمام اشیا فعال کرد.

نوع دیگر قاب گذاری می تواند خطوط تنها افقی یا خطوط تنها عمودی را نمایش دهد این نوع قاب گذاری دقیقا به همان روش انجام می گیرد. قابهای افقی یا عمودی می تواند در اشیا فعال شوند.

در نهایت برای ساختن تنها قاب خارجی ، گزارش لازم است کمی تغییر کند:

خطوط قاب را برای اشیا در طول کناره های نوار داده فعال کردیم در نتیجه گزارش بصورت زیر به نظر می رسد:

تمام مثالهای مذکور شامل نوارها بوده و اندازه های ثابتی را شامل می شد. اما چگونه می توان یک جدول را در موقعیتی که نوارها کشیده شده اند نمایش داد ؟ آنرا با مثال زیر توضیح می دهیم:

به گزارش یک فیبر جدید اضافه کنید ( یک متن چند خطی از Bio notes ) همان طور که می دانید هم برای این شیء هم برای نوار ، همانجا که شیء قرار گرفته خاصیت “stretch” بایستی فعال شود. در این مثال ارتفاع نوار بسته به اندازه متن درون شیء “text” انتخاب شده است. بنابراین یک گزارش بصورت زیر دریافت خواهیم کرد:

از آنچه ما نیاز داریم ین کمی متفاوت است. یکی باید قابهای اشیا همسایه را بر گزیند تا بتواند آنرا بخوبی بکشد. Fast report  اجازه می دهد که مشکل براحتی حل شود.کافی است گزارش strech down word را برای تمام اشیایی که باید کشیده شوند فعال کنید. بنابراین fast report  ابتدا حداکثر ارتفاع نوار را اندازه می گیرد. سپس اشیا را تا پایین لبه ی نوار با گزینه ی فعال شده می کشد . با توجه به این امر که قابهای شیء با یکدیگر به همراه شیء کشیده می شوند، در ظاهر گزارش تغییرات ایجاد می شود.

 

برچسب های پرینت

در مقابل گزارش های جدولی ، داده ها در گزارش ها مانند label یکی پشت دیگری قرار دارند. بیایید امتحان کنیم مثالی از این گزارش ها را که داده ای درباره ماهیها نمایش می دهد. گزارش ارائه شده در شکل یک برچسب و ساختار زیر را دارد:

با اجرای این گزارش مطالب زیر را دریافت می کنیم:

همانطور که می ینید، فضای خالی زیادی در قسمت راست صفحه قرار دارد . برای پرکردن تمام صفحه ، تعداد ستونها ، جایی که داده ها نمایش داده می شوند، میتواند در گزارش تنظیم شود.

 

تنظیمات صفحه

بایستی روی فضای سفید صفحه دابل کلیک کرده یا آیتم منو file page/parameters را فعال کرد.

در این میانبر می توان پارامترهای ستون مانند تعداد ستون ، عرض آن و محل آنها را تنظیم کرد. در نمونه ها کافی است مشخص کنید :

number=2

fast report تمام پارامترهای باقیمانده را بطور اتوماتیک تنظیم می کند. قاب ستون در طراح خط باریک عمودی نمایش داده می شود.

 در آن صورت چاپ به صورت زیر انجام خواهد گرفت. Fast report   نوار first level data  را به بلندی فضای سفید صفحه نشان خواهد داد . بعد از آن یک ستون جدید در یک صفحه متفاوت شکل می گیرد ( در مقابل گزارشهای ساده که در آن یک صفحه جدید ایجاد می شود در نمونه ها) و نمایش نوار در بالا ادامه خواهد داشت.

تمام اشیا مطابق عرض ستون.یکی به راست جابجا شده اند,این ادامه خواهد داشت تا زمانی که تمام ستونها نمایش داده شوند. بعد از آن fast reportیک صفحه جدید ایجاد می کند و نمایش داده ها را از اولین ستون ادامه می دهد.

 

گزارش ما با دو ستون به صورت زیر به نظر می رسد:

خاصیت “columns” و قابل دسترس در تمام نوار داده ها ، راه دیگر تنظیم تعداد ستونهاست. این خاصیت اجازه می دهد تعداد ستونها را برای یک نوار بخصوص و نه برای تمام صفحه ( آنگونه که در مثال قبلی بود) بنابراین قوانین نمایش داده نخواهد بود ” از بالا به پایین، سپس از چپ به راست” بلکه “از چپ به راست ، سپس از بالا به پایین” بیایید ستونها را در صفحه نمایش دهیم ( تنظیم کنیدcolumns number=1  ) و سپس “۲” در گزارش نوار “columns” وارد کنید. fast report قابهای ستون را به صورت خطوط نقطه چین نمایش می دهد. ابعاد ستون را با تغییر خاصیت “columns width” بدست می آوریم:

گزارش ساخته شده به این روش از قبلی متفاوت خواهد بود. فقط با دستور از چپ به راست ، سپس از بالا به پایین نمایش داده می شود.

 

نوارهایchild

این نمونه را امتحان کنیم وقتی که یکی از خطوط در گزارش نوع label ممکن است اندازه متفاوتی داشته باشد. با استفاده از مثال برای شبیه سازی این موقعیت بیایید عرض شیء “Bio”,”common name” را به ۵/۲ سانتیمتر کاهش دهیم و گزینه “stretch”را برای آن فعال سازیم. همچنین در نوار “first level data” کشیدن را فعال سازیم. کلیه خطوط قابها را در تمام اشیا به صورتی که قوانین عمل کشیدن واضح تر شود فعال سازید. ما گزارشی به صورت زیر دریافت خواهیم کرد:

می بینید اولین نمونه شیء شامل یک متن بلندتر است ، به این علت است که به دو خط کشیده شده بود. بنابراین شیء ( در زیر آن واقع شده و متصل شده به Bio یکی به پایین جابجا شده . این اتفاق افتاده زیرا تمام اشیا خاصیت فعال شده ی انتقال دارند.)

چنین اشیایی وقتی که یک شیء قابل امتداد در بالای آنها وجود دارد به سمت پایین جابجا می شوند ، شیء متن “text” همراه مشخصه ی “stretch” فعال شده اند. نمودار ارتفاع با توجه به جابجایی شیء که شیء بالایی چگونه امتداد پیدا می کند بستگی دارد .

برای انجام این عمل یک نوع نوار مخصوص در برنامه ی fast report وجود دارد به نام “child band” که به نوار پایه متصل شده است :

بیایید مشخصه ی child را برای اتصال اجزا پایه به اجزا زیر مجموعه ی آن در بازرس شیء object inspector قرار دهیم. حال هر زمانی که شما از نوار پایه پرینت بگیرید زیر مجموعه آن نیز دیده خواهد شد.

 همانطور که می بینید عنوان دقیقا در جایی که انتظار می رفت تایپ شده است . برای جلوگیری از انتقال نوار زیر مجموعه به صفحه ی بعد  مشخصه ی “keep child” را برای نوار پایه فعال کنید .

 

اشیا تغییر کننده:

مشاهده کردید که چطور مشخصه ی انتقال کار می کند. بیایید حالت بعدی انتقال را امتحان کنیم: انتقال مشترک در بازرس شیء مقدار خاصیت shift mode=…… با این حالت مشابه است . بنابراین انتقال شیء در این مورد انجام خواهد شد . هنگامی که شیء از بالا در هنگام کشیده شدن بر روی شیء داده شده می افتد. سه مورد در تصویر زیر نشان داده شده است. همانطور که می بینید شیء زیری با خاصیت فعال شده ی ” انتقال هنگام روی هم افتادن ” انتقال پیدا می کند ، فقط در مورد آخر به طور مثال هنگامی که مقدار زیادی متن در شیء بالایی وجود دارد و این مورد زیری را می پوشاند.

اگر حالت انتقال فعال باشد شیء زیری به هر صورت ممکن جابجا می شود

 . در برخی موارد این اجازه را می دهد که نسبتا منطق پیچیده ی طراح شیء را بفهمید. مخصوصا اگر یک شیء بر روی گزارشهای متعدد دیگری در یک زمان افتاده باشد. بنابراین در مثال گفته شده هر دوی اشیا بالا دارای متون کشیده شده هستند و شیء زیری دارای خاصیت ” انتقال هنگام مسدود شدن ” فعال باشد. شیء زیری همیشه به شیء نزدیک تر نمایش داده خواهد شد که محتوی متن بیشتر بدون مراعات اندازه ی متن در اشیا بالاتر است.

در این مثال ، اگر حالت انتقال برای این شیء فعال باشد ، شیء زیری دو بار انتقال پیدا خواهد کرد .وقتی شیء در زیر دو تا از اشیا واقع شده باشد یک فضای غیر ضروری ایجاد می شود.

 

گزارش با دو سطح داده

قبلا ما گزارشهایی را امتحان کردیم که فقط یک نوار داده وجود داشت ( داده های یک سطحی)

Fast report این اجازه را می دهد که گزارشهای محتوی ۶ سطح داده را بوجود آوریم.( همچنین این امکان وجود دارد که تعداد سطح بیشتری را بوجود آورد . با استفاده از شیء “subreport” این شیء بعدا امتحان خواهد شد.درخواستهای واقعی ، گزارشهایی با درخواستهای داده ای زیاد وجود دارند. به عنوان قانون آنها بین سطوح ۱ تا ۳ محدود شده اند.

بیایید رویه ساخت یک گزارش دو سطحی را انتخاب کنیم. این گزارش شامل داده ها از جدول DBDEmos خواهد بود: “orders.db” , “customer.db” جدول اول لیست مشتری ها است و جدول دوم لیست سفارشات توسط مشتریها می باشد. جدولها شامل داده هایی از نوع زیر هستند:

همانطور که می بینید جدول دوم محتوی لیست تمامی سفارشات بوسیله همه ی شرکتها می باشد.

برای دریافت لیست سفارشات یک شرکت خاص، نوشته ای که در شاخه ی custNo محتوی شماره شرکت انتخابی است، باید در جدول به حالت انتخاب در بیاید. گزارش داده شده روی چنین داده هایی به شکل زیر دیده می شوند

بیایید گزارش ساخته شده را پیاده سازی کنیم. یک پروژه ی جدید در نرم افزار Delphi درست کنید و از اجزای آن دو TTable و یک TDatasourcel و دو TfrxDBDataset و یک TfrxReport روی فرم قرار دهید. اجزا را مطابق زیر تنظیم کنید:

داده هایمان را در پنجره ی Report/Data در طراح گزارش بیایید به هم وصل کنیم. نوارهای Master Data , Detail Data را روی صفحه قرار دهید.

 توجه کنید که نوار Master data باید بالای نوار Detail data واقع شود. اگر در زیر قرار گیرد fast report شما را از یک خطا به هنگام اجرای گزارش مطلع می سازد.

Data linkage

اگر گزارش را آغاز کنید می بینید که لیست مشابهی برای هر مشتری باقی می ماند و تمام یادداشتها از جدول “Orders.db” را شامل می شود. چنین رخدادی به این خاطر است که ما قادر به فیلترینگ یادداشتها در جدول “Orders” نیستیم.به منابع data خودمان برمی گردیم. خاصیت “master ssource=data source1” در جزء “table2” را ببینید. بدین ترتیب ارتباط یک “master-detail” را تنظیم کرده ایم. پس از آن یک شرط برای فیلتر منابع تابع یادداشتها باید برقرار کنیم ، که برای اجرای آن ویرایشگر خاصیت “master fields” از جزء “table2” را فراخوانی می کنیم:

ما نیاز به پیوند دو فیلد “CustNO” در دو منبع داریم. برای اجرای آن فیلدهای مطلوب را انتخاب کنید و روی دکمه Add کلیک کنید. پیوتد فیلدها به پنجره پایین تغییر مکان خواهد داد. پس از آنeditor را بسته و کلید “OK” را بزنید. موقع شروع یک گزارش Fast Report شرح ذیل را دنبال می کند: پس از تخصیص یادداشت بعدی از جدول اصلی ( مشتری) ، تنظیم فیلتر روی جدول وابسته را انجام می دهد. تنها یادداشتهایی که شرط “orders.custno=customer.custno” را متقاعد می کنند در جدول باقی خواهند ماند. این بدین معنی است که برای هر مشتری تنها سفارشاتش در جدول نمایش داده می شود:

 

گزارشات می تواند طی ۶ مرحله Data به روش مشابه ساخته شوند.

Headers and footers of a daka banel

هر نوار data ممکن است دارای  header (سر صفحه) و footer (پا صفحه) باشد. سر صفحه قبل از چاپ یک نوار data و پا صفحه بعد از تمامی رکوردهای data نمایش داده می شود. در اینجا با یک مثال چگونگی کارکرد این دو را در یک گزارش ساده می بینید:

 

اجازه دهید به مثال مرکبی که از دو لایه دیتا ( اصلی- جزیی) استفاده کرده نگاهی بیندازیم:

همانطور که می بینید سر صفحه قبل از تمامی رکوردهای نوار data چاپ شده است. از این رو سر صفحه اصلی یکبار در شروع گزارش چاپ شده ، پا صفحه بعد از تمامی رکوردها چاپ شده است.

استفاده از پا صفحه بعد از خاصیت نوار data را باید باطل کنیم. تبدیل این خاصیت به True ( این خاصیت را از گزینهfter eachrow        “footer  a روی منوی ضمنی نوار data جستجو کنید)موجب می شود تا پا صفحه بعد از هر ردیف data چاپ شود و در مواقع طراحی گزارشات master-detail مفید خواهد بود.

مثال قبلی که با پا صفحه ای بعد از هر خاصیت master data به حالت true تنظیم شد ، مانند زیر خواهد بود:

 

Report with Groups

گزارشی دو مرحله ای بر پایه data از دو جدول در مثال فوق ساختیم. Fast report امکان ساخت گزارشهای آنالوگی را بر پایه یک مجموعه data و تشکیل یافته در راه یگانه را می دهد.

برای اجرای آن نیاز به استفاده از زبان SQL است که data را باز می گرداندو منظم بر اساس یک شرط معین از جداول می شود. در این حالت یک شرط مطابقت فیلدهای cust NO در هر دوی جداول است.

خط “order by” برای منظم کردن رکوردها در فیلد “cust no” ضروری است:

 

چطور یک گزارش چند مرحله ای می تواند بر پایه این data ساخته شود؟

در fast report یک نوار خاص به نام “Group header” موجود است . یک شرط خاص برای نوار مورد نظر برقرار شده است. ( یک عبارت یا مقدار فیلد DB )  ، این نوار در زمانی که مقدار فیلد تغییر یافته است نشان داده می شود. مثال ذیل این قضیه را شرح می دهد.

اجازه بدهید یک پروژه جدید در دلفی ایجاد کنیم. اجزا “TQuery” , “TfrxReport” , “TfrxDBDetaset” روی فرم قرار دهید و به صورت زیر تنظیم کنید:

 

جهت مشاهده کلیه اخبار شرکت مدیران به سایت modirangroup.com و  modiran8.ir و m888.ir  مراجعه نمایید.